Существует 3 способа обнаружения службы в Kubernetes ClusterIP , NodePort и LoadBalancer .В вашем сценарии это порт узла, где служба, работающая внутри модуля, доступна, сопоставляется с портом хоста через службу.Аналогия - это модуль, в котором работает ваш сервис, который мы назвали TargetPort
, и именно там сервис перенаправляет все запросы.Сервисный порт называется просто Port
.Сервис - это просто оболочка внутри узла в кластере, который имеет собственный IP-адрес.Наконец, у нас есть порт на узле, откуда мы можем получить доступ к приложению извне, который называется NodePort
и имеет допустимый диапазон.По умолчанию диапазон составляет 30000-32767
my-service.yml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- targetPort: 80
port: 80
nodePort: 32001
. Как мы можем понять из приведенного выше файла описания службы, я определил тип как NodePort и 3 порта, описанных выше.Единственный обязательный порт - это порт, т.е. порт службы port:80
в приведенном выше yml.Если вы не предоставляете targetPort, предполагается, что он совпадает с портом службы.И, если вы не предоставите NodePort, свободный порт в допустимом диапазоне (30000-32767) будет выделен автоматически.Я надеюсь, что это поможет вам решить вашу дилемму.Спасибо.