我已经创建了一个由三个节点组成的集群:一个主节点和两个从节点。如何在Kubernetes中检查集群IP?这是主节点的IP吗?
我已经创建了一个由三个节点组成的集群:一个主节点和两个从节点。如何在Kubernetes中检查集群IP?这是主节点的IP吗?
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
将其路由到本地主机以连接我的集群):
$ 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的详细信息可以在Kubernetes中的服务文档中找到,而之前提到的LoadBalancer
服务类型是将服务暴露到集群外部的好例子。kubectl get endpoints
命令获取它们吗? - Ivan ArackiCluster IP是由K8s分配给服务的虚拟IP,它是K8s内部IP。
Cluster IP可以从Kubernetes集群中的任何节点访问。使用虚拟IP地址可以使多个Pod在同一节点上公开相同的端口 - 所有这些Pod都可以通过唯一的IP地址访问。
该IP地址在服务生命周期中保持稳定,除非明确删除。
两个不同的Pod可以使用此IP通信,但我建议使用集群DNS服务。
集群 IP 只分配给服务,它是 Kubernetes 内部 IP。