Позвольте мне прояснить некоторые заблуждения:
Вы не можете изменить диапазон портов nodePort
для управляемого кластера Kubernetes, например GKE
.
Несколько слов о nodePort
из официальной документации Kubernetes:
NodePort
: предоставляет услугу на каждом IP-адресе узла на статическом порте. (NodePort
). ClusterIP
Служба, к которой NodePort
Служба маршрутизирует, создается автоматически. Вы сможете связаться со службой NodePort
извне кластера, запросив <NodeIP>:<NodePort>
.
- Kubernetes.io: службы
nodePort
порт находится в диапазоне от 30000
до 32767
.
Что вы здесь видите:
когда я перечисляю услуги на кубернетах, я вижу следующее:
service/countly-frontend NodePort 10.xx.xx.12 ><none> 6001:31145/TCP 110s
В частности: 6001:31145/TCP
правильно.
Пример:
Предположим, что есть модуль с приложением, работающим на порту 50001
.
Это service.yaml
из вышеуказанного приложения:
apiVersion: v1
kind: Service
metadata:
name: hello-service
spec:
selector:
app: hello
ports:
- name: hello-port
port: 5678 # CLUSTER-IP PORT
targetPort: 50001 # PORT WHICH YOUR APPLICATION IS RUNNING ON
nodePort: 30051 # NODEPORT PORT
type: NodePort
Вывод $ kubectl get services
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-service NodePort 10.86.1.195 <none> 5678:30051/TCP 25h
У вас будет доступ к вашему приложению:
NodeIP:NodePort(30051)
(внешний доступ)
ClusterIP:port(5678)
(внутренний доступ)
PodIP:targetPort(50001)
(внутренний доступ)
Если вы хотите предоставить свое приложение на порту 6001
для внешнего использования, вы можете попробовать тип службы LoadBalancer
.
На StackOverflow есть ответы, которые углубляются в эту тему:
Ознакомьтесь с официальной документацией по раскрытию приложений в GKE
кластере: Cloud.google.com: движок Kubernetes: демонстрация приложений
Пожалуйста, дайте мне знать, если у вас возникнут вопросы.
person
Dawid Kruk
schedule
09.04.2020