Kubernetes中的集群IP是什么?

时间:2015-10-29 06:49:38

标签: kubernetes google-kubernetes-engine

我创建了一个由三个节点组成的集群:一个主节点,两个小节点。 如何在Kubernetes中检查群集IP? 它是主节点的IP吗?

4 个答案:

答案 0 :(得分:14)

ClusterIP 可能意味着两件事:一种只能在Kubernetes集群中访问的服务,或Kubernetes集群内部组件的内部("虚拟")IP。假设您要求查找群集的内部IP,可以通过3种方式访问​​它(使用simple-nginx example):

  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. 通过Kubernetes容器中的$<NAME>_SERVICE_HOST环境变量(在此示例中,my-nginx-yczg9是群集中pod的名称):

    $ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST'
    10.123.253.27
    
  4. 有关服务IP的更多详细信息,请参阅Services in Kubernetes文档,前面提到的simple-nginx example是使用LoadBalancer服务类型向集群外部公开服务的一个很好的示例。

答案 1 :(得分:7)

运行此

$ kubectl cluster-info

它会显示这样的结果,您可以在其中看到 Kubernetes主IP

Kubernetes Cluster IP

答案 2 :(得分:4)

集群IP仅分配给服务,它是Kubernetes的内部IP。

答案 3 :(得分:0)

集群IP是K8分配给服务的虚拟IP。这是K8的内部IP。

群集IP使它可以从Kubernetes群集的任何节点访问。为此,使用虚拟IP地址可以使多个Pod暴露同一节点上的同一端口–所有这些Pod都可以通过唯一的IP地址访问。

此IP是稳定的,在服务生命周期中永远不会更改(除非明确删除)。

2个不同的Pod可以使用此IP进行通信,尽管我建议使用群集DNS服务。