Что такое IP-адрес кластера в Кубернете?

Я создал кластер из трех узлов: один мастер, два миньона. Как проверить IP-адрес кластера в Кубернете? Это IP-адрес ведущего узла?

Ответ 1

ClusterIP может означать две вещи: тип сервиса, доступный только в кластере Kubernetes, или внутренний ("виртуальный") IP компонентов в кластере Kubernetes. Предполагая, что вы запрашиваете поиск внутреннего IP-адреса кластера, к нему можно получить доступ тремя способами (с использованием простого примера nginx):

  1. Через 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.
    
  2. Через 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"
            }
          ]
        }
      }
    }
    
  3. Через переменную среды $<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

Kubernetes Cluster IP

Ответ 3

IP-адрес кластера, выделенный только для обслуживания, это внутренний IP-адрес Kubernetes.

Ответ 4

IP-адрес кластера - это виртуальный IP-адрес, который K8 назначает службе. Это внутренний IP K8s.

IP-адрес кластера делает его доступным с любого из узлов кластера Kubernetes. Использование виртуальных IP-адресов для этой цели позволяет нескольким модулям выставлять один и тот же порт на одном и том же узле - все эти модули будут доступны через уникальный IP-адрес.

Этот IP-адрес стабилен и никогда не изменяется в жизненном цикле службы (если не удален явно).

С помощью этого IP-адреса могут общаться 2 разных модуля, хотя я рекомендую использовать службу DNS кластера.