Я создал кластер из трех узлов: один мастер, два миньона. Как проверить IP-адрес кластера в Кубернете? Это IP-адрес ведущего узла?
Что такое IP-адрес кластера в Кубернете?
Ответ 1
ClusterIP может означать две вещи: тип сервиса, доступный только в кластере Kubernetes, или внутренний ("виртуальный") IP компонентов в кластере Kubernetes. Предполагая, что вы запрашиваете поиск внутреннего IP-адреса кластера, к нему можно получить доступ тремя способами (с использованием простого примера nginx):
-
Через
kubectl
программу командной строкиkubectl
:$ kubectl describe service my-nginx Name: my-nginx Namespace: default Labels: run=my-nginx Selector: run=my-nginx Type: LoadBalancer IP: 10.123.253.27 LoadBalancer Ingress: 104.197.129.240 Port: <unnamed> 80/TCP NodePort: <unnamed> 30723/TCP Endpoints: 10.120.0.6:80 Session Affinity: None No events.
-
Через API kubernetes (здесь я использовал
kubectl proxy
для маршрутизации через localhost в мой кластер):$ kubectl proxy & $ curl -G http://localhost:8001/api/v1/namespaces/default/services/my-nginx { "kind": "Service", "apiVersion": "v1", "metadata": <omitted>, "spec": { "ports": [ { "protocol": "TCP", "port": 80, "targetPort": 80, "nodePort": 30723 } ], "selector": { "run": "my-nginx" }, "clusterIP": "10.123.253.27", "type": "LoadBalancer", "sessionAffinity": "None" }, "status": { "loadBalancer": { "ingress": [ { "ip": "104.197.129.240" } ] } } }
-
Через переменную среды
$<NAME>_SERVICE_HOST
в контейнере Kubernetes (в этом примереmy-nginx-yczg9
является именем модуля в кластере):$ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST' 10.123.253.27
Более подробную информацию об IP- адресах служб можно найти в документации " Службы в Кубернете", а предыдущий пример простого nginx - хороший пример предоставления услуги за пределами вашего кластера с помощью LoadBalancer
службы LoadBalancer
.
Ответ 2
Запустите это
$ kubectl cluster-info
Показывает результат, подобный этому, где вы можете увидеть мастер-IP Kubernetes
Ответ 3
IP-адрес кластера, выделенный только для обслуживания, это внутренний IP-адрес Kubernetes.
Ответ 4
IP-адрес кластера - это виртуальный IP-адрес, который K8 назначает службе. Это внутренний IP K8s.
IP-адрес кластера делает его доступным с любого из узлов кластера Kubernetes. Использование виртуальных IP-адресов для этой цели позволяет нескольким модулям выставлять один и тот же порт на одном и том же узле - все эти модули будут доступны через уникальный IP-адрес.
Этот IP-адрес стабилен и никогда не изменяется в жизненном цикле службы (если не удален явно).
С помощью этого IP-адреса могут общаться 2 разных модуля, хотя я рекомендую использовать службу DNS кластера.