Позвольте мне уточнить некоторые неправильные представления:
Вы не можете изменить диапазон портов nodePort
для управляемого кластера Kubernetes, например GKE
.
Слово о nodePort
из официальной документации Kubernetes:
NodePort
: Предоставляет Сервис для каждого IP-узла в порту stati c (NodePort
). Служба ClusterIP
, к которой автоматически создается маршрут службы NodePort
. Вы сможете связаться со службой NodePort
извне кластера, запросив <NodeIP>:<NodePort>
.
- Kubernetes.io: Услуги
* Диапазон портов 1029 *
nodePort
от
30000
до
32767
.
То, что вы видите здесь:
, когда я перечисляю службы на kubernetes, я вижу это:
service/countly-frontend NodePort 10.xx.xx.12 ><none> 6001:31145/TCP 110s
В частности: 6001:31145/TCP
is правильный .
Пример:
Предположим, что есть модуль с приложением, работающим на порту 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, которые углубляются в эту топи c:
Пожалуйста, ознакомьтесь с официальной документацией о предоставлении приложений в кластере GKE
: Cloud.google. com: движок Kubernetes: раскрытие приложений
Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы по этому поводу.