web-dev-qa-db-fra.com

Quelle est l'IP du cluster dans Kubernetes?

J'ai créé un cluster de trois nœuds: un maître, deux sbires. Comment vérifier l'IP du cluster dans Kubernetes? S'agit-il de l'IP du nœud maître?

23
Madhurima Mishra

ClusterIP peut signifier 2 choses: un type de service qui n'est accessible que dans un cluster Kubernetes, ou l'IP interne ("virtuelle") des composants dans un Cluster Kubernetes. En supposant que vous posiez des questions sur la recherche de l'IP interne d'un cluster, vous pouvez y accéder de 3 manières (en utilisant exemple simple-nginx ):

  1. Via l'utilitaire de ligne de commande 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. Via l'API kubernetes (ici j'ai utilisé kubectl proxy pour acheminer via localhost vers mon cluster):

    $ 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. Via le $<NAME>_SERVICE_Host variable d'environnement dans un conteneur Kubernetes (dans cet exemple my-nginx-yczg9 est le nom d'un pod du cluster):

    $ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_Host'
    10.123.253.27
    

Plus de détails sur les adresses IP des services peuvent être trouvés dans la documentation Services dans Kubernetes , et la mention précédente exemple simple-nginx est un bon exemple d'exposition d'un service en dehors de votre cluster avec le LoadBalancer type de service.

25
Tim Allclair

Lance ça

$ kubectl cluster-info

Il montre un résultat comme celui-ci où vous pouvez voir l'IP maître Kubernetes

Kubernetes Cluster IP

15
Abu Shoeb

iP de cluster uniquement allouée au service, c'est l'IP interne de Kubernetes。

6
jolestar

L'IP de cluster est une IP virtuelle allouée par les K8 à un service. Il s'agit de l'IP interne du K8.

Une adresse IP de cluster la rend accessible à partir de n'importe quel nœud du cluster Kubernetes. L'utilisation d'adresses IP virtuelles à cet effet permet d'avoir plusieurs pods exposant le même port sur le même nœud - Tous ces pods seront accessibles via une adresse IP unique.

Cette adresse IP est stable et ne change jamais dans le cycle de vie du service (sauf suppression explicite).

2 pods différents peuvent communiquer en utilisant cette IP, bien que je recommande d'utiliser le service DNS de cluster.

2
Vaibhav Jain