Kubernetes中的集群IP是什么?

Mad*_*hra 20 kubernetes google-kubernetes-engine kubernetes-networking

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

Tim*_*air 24

ClusterIP可以表示两件事:一种只能在Kubernetes集群中访问的服务,或者一个Kubernetes集群内的组件的内部("虚拟")IP.假设您要求查找集群的内部IP,可以通过3种方式访问​​它(使用simple-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.
    
    Run Code Online (Sandbox Code Playgroud)
  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"
            }
          ]
        }
      }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 通过$<NAME>_SERVICE_HOSTKubernetes容器中的环境变量(在此示例中my-nginx-yczg9是群集中pod的名称):

    $ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST'
    10.123.253.27
    
    Run Code Online (Sandbox Code Playgroud)

有关服务IP的更多详细信息,请参阅Kubernetes文档中的服务,前面提到的simple-nginx示例是使用LoadBalancer服务类型公开群集外服务的一个很好的示例.


Abu*_*oeb 12

运行这个

$ kubectl cluster-info
Run Code Online (Sandbox Code Playgroud)

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

Kubernetes集群IP

  • 这个答案是我的期望之一。谢谢! (2认同)

jol*_*tar 6

集群IP仅分配给服务,这是Kubernetes的内部ip吗?


Vai*_*ain 6

集群IP是K8s分配给一个服务的虚拟IP。是K8s的内部IP。

集群 IP 使其可以从 Kubernetes 集群的任何节点访问。为此目的使用虚拟 IP 地址可以让多个 Pod 在同一节点上公开相同的端口——所有这些 Pod 都可以通过唯一的 IP 地址访问。

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

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