我创建了一个由三个节点组成的集群:一个主节点,两个小节点。 如何在Kubernetes中检查群集IP? 它是主节点的IP吗?
答案 0 :(得分:14)
ClusterIP 可能意味着两件事:一种只能在Kubernetes集群中访问的服务,或Kubernetes集群内部组件的内部("虚拟")IP。假设您要求查找群集的内部IP,可以通过3种方式访问它(使用simple-nginx example):
通过命令行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.
通过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"
}
]
}
}
}
通过Kubernetes容器中的$<NAME>_SERVICE_HOST
环境变量(在此示例中,my-nginx-yczg9
是群集中pod的名称):
$ kubectl exec my-nginx-yczg9 -- sh -c 'echo $MY_NGINX_SERVICE_HOST'
10.123.253.27
有关服务IP的更多详细信息,请参阅Services in Kubernetes文档,前面提到的simple-nginx example是使用LoadBalancer
服务类型向集群外部公开服务的一个很好的示例。
答案 1 :(得分:7)
答案 2 :(得分:4)
集群IP仅分配给服务,它是Kubernetes的内部IP。
答案 3 :(得分:0)
集群IP是K8分配给服务的虚拟IP。这是K8的内部IP。
群集IP使它可以从Kubernetes群集的任何节点访问。为此,使用虚拟IP地址可以使多个Pod暴露同一节点上的同一端口–所有这些Pod都可以通过唯一的IP地址访问。
此IP是稳定的,在服务生命周期中永远不会更改(除非明确删除)。
2个不同的Pod可以使用此IP进行通信,尽管我建议使用群集DNS服务。