当您运行: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
AFAIK默认命名空间中的kubernetes服务是一种将请求转发给Kubernetes主服务器的服务(通常是kubernetes API服务器)。
因此,来自群集的对kubernetes.default服务的所有请求都将路由到配置的端点IP。在这种情况下,它的kubernetes主IP
例如
让我们检查kubectl describe svc kubernetes
的输出并查看Endpoint IP。
现在让我们检查我们的群集信息
kubectl cluster-info
请注意,kubernetes master与kubernetes.default服务的Endpoints IP运行的IP相同。
希望能帮助到你。
这样,群集中的每个Pod都可以向Kubernetes主程序发出API请求,而无需在其中对API URL进行硬编码。你的~/.kube/config
可能很好地拥有你的Kubernetes主服务器的“外部”地址,但是对于离开集群然后重新进入可以共同位于同一节点上的Pod的集群的API流量来说,它几乎没有意义。 Pod可以使用kubernetes注入的Service Account凭证,除非每个Pod禁用该服务帐户功能。
您的应用程序也可以自由地使用该功能,如果它愿意 - 例如 - 发现其Pod上的任何注释,或其部署中有多少其他副本,等等。
我想tl; dr是90%的Pod无关紧要,而剩下的10%则非常方便。