端点IP与服务IP

use*_*472 1 kubernetes kubectl

我创建了一个 POD 并将其公开为 service\xc2\xa0 使用以下命令:

\n\n

\xc2\xa0

\n\n
kubectl run nginx --image=nginx --restart=Never --port=80 --expose\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我执行以下命令时,我得到两个不同的 IP\xc2\xa0addresses。下面的IP地址分别代表什么?在集群中调用我的服务时,其他服务应使用哪个 IP。

\n\n
master $ kubectl get ep nginx\n\nNAME\xc2\xa0 \xc2\xa0 ENDPOINTS\xc2\xa0 \xc2\xa0 \xc2\xa0 AGE\n\nnginx\xc2\xa0 \xc2\xa010.40.0.1:80\xc2\xa0 \xc2\xa011m\n\nmaster $ kubectl get svc nginx\n\nNAME\xc2\xa0 \xc2\xa0 TYPE\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 CLUSTER-IP\xc2\xa0 \xc2\xa0 \xc2\xa0 EXTERNAL-IP\xc2\xa0 \xc2\xa0PORT(S)\xc2\xa0 \xc2\xa0AGE\n\nnginx\xc2\xa0 \xc2\xa0ClusterIP\xc2\xa0 \xc2\xa010.103.78.253\xc2\xa0 \xc2\xa0<none>\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 80/TCP\xc2\xa0 \xc2\xa0 12m\n
Run Code Online (Sandbox Code Playgroud)\n

Arg*_*dhu 6

服务端点中的 IP 是服务选择器选择的后端 Pod 的 IP,与 Pod 上的标签相匹配。如果有多个 Pod 副本,端点中也会有多个 IP 。ClusterIP 中的 IP 是虚拟 IP,用于调用服务。服务将通过 clusterIP 传入的任何请求(通过负载平衡)转发到端点中存在的 POD IP。

从这里的文档。