默认的kubernetes服务的目的是什么?

Fei*_*Fei 5 kubernetes

当您运行:时kubectl get svc -n default,您将已经有一个类型为ClusterIP的kubernetes服务。

这项服务的目的是什么?任何参考表示赞赏。

我在Minikube中跑步

xyz:Kubernetes _$ kubectl describe svc/kubernetes
Name:              kubernetes
Namespace:         default
Labels:            component=apiserver
               provider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.0.0.1
Port:              https  443/TCP
TargetPort:        8443/TCP
Endpoints:         10.0.2.15:8443
Session Affinity:  ClientIP
Events:            <none>

xyz:Kubernetes _$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
Run Code Online (Sandbox Code Playgroud)

小智 12

AFAIK 默认命名空间中的 kubernetes 服务是将请求转发到 Kubernetes 主站(通常是 kubernetes API 服务器)的服务。

因此,所有从集群到 kubernetes.default 服务的请求都将路由到配置的 Endpoint IP。在这种情况下,它的 kubernetes 主 IP

例如

让我们检查输出kubectl describe svc kubernetes并查看端点 IP。

在此处输入图片说明

现在让我们检查我们的集群信息

kubectl cluster-info

在此处输入图片说明

请注意,kubernetes master 运行在与 kubernetes.default 服务的 Endpoints IP 相同的 IP 上。

希望能帮助到你。

  • API Server 不是集群内部的 pod。就像我们使用以下命令“kubectl get pods”一样,我们看不到任何名称为 Kubernetes 的 pod。纠正我如果我错了 (2认同)

mda*_*iel 6

这样集群中的每个 Pod 都可以向 Kubernetes master 发出 API 请求,而无需在其中硬编码 API URL。您~/.kube/config很可能拥有 Kubernetes master 的“外部”地址,但是 API 流量离开集群然后重新进入集群以获取可能位于同一节点上的 Pod 的意义不大。Pod 能够使用kubernetes 注入的服务帐户凭据,除非每个 Pod 禁用该服务帐户功能。

您的应用程序也可以自由使用该功能,例如,如果它希望发现其 Pod 上的任何注释,或者其 Deployment 中有多少其他副本,等等。

我想总而言之,对于 90% 的 Pod 来说这并不重要,而对于剩下的 10% 来说则非常方便。