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

36
Madhurima Mishra 29 Окт 2015 в 09:49

4 ответа

Лучший ответ

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

  1. Через командную строку утилиты 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. Через kubernetes API (здесь я использовал 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-адресах можно найти в Services in Kubernetes. документации, и ранее упомянутый пример простого nginx является хорошим примером выставление сервиса вне вашего кластера с помощью типа сервиса LoadBalancer.

30
Tim Allclair 2 Ноя 2015 в 18:31

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

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

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

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

3
Vaibhav Jain 16 Июн 2019 в 15:59

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

7
jolestar 29 Окт 2015 в 10:04

Запустить это

$ kubectl cluster-info

Он показывает такой результат, где вы можете увидеть главный IP-адрес Kubernetes

Kubernetes Cluster IP

20
Abu Shoeb 30 Ноя 2018 в 04:37