Я запускаю крошечный (читай: одноузловой) кластер Docker Swarm, который я хочу перенести в Kubernetes, и я не могу понять, как открыть Сервис на определенном порту, чтобы я мог получить к нему доступ извнеworld.
В Docker Swarm я мог бы выставить, например, сервер MySQL, указав
ports:
- '3306:3306'
как часть сервисного блока в моем файле конфигурации стека, что позволило бы мне получить к нему доступ 127.0.0.1:3306
.
Чтобы воспроизвести это в Kubernetes, моим первым инстинктом было использование типа сервиса NodePort
и указание
ports:
- port: 3306
targetPort: 3306
nodePort: 3306
в спецификации сервиса.Но это недопустимо: Kubernetes говорит мне provided port is not in the valid range. The range of valid ports is 30000-32767
.
Тогда есть Ingress
, который, кажется, тесно связан с тем, что я хочу сделать, но это в бета-версии и, по-видимому,ориентирован на HTTP-сервисы (что не охватывает все мои варианты использования).Существует также тип LoadBalancer
, но я не использую облачного провайдера с поддержкой для него, и поэтому я не могу это сделать.
Это немного смутило меня.Если я хочу выставить службу в своем кластере Kubernetes, чтобы я мог получить к ней доступ извне (например, из Интернета в целом на some-public-ip:3306
), каков рекомендуемый (или альтернативный, удобный для новичков) способ его настройки?Чего мне не хватает?