无法连接创建为无头服务的 Kubernetes 端点 IP

Can't connect Kubernetes endpoints IPs with created as an headless service

创建了无头服务:

myapp-service-headless.yaml

apiVersion: v1
kind: Service
metadata:
  name: myapp-service-headless
spec:
  ports:
    - port: 8000
  selector:
    app: myapp
  clusterIP: None

创建到Kubernetes集群后,查看其服务状态:

$ kubectl create -f myapp-service-headless.yaml
$ kubectl describe service myapp-service-headless
Name:              myapp-service-headless
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=myapp
Type:              ClusterIP
IP:                None
Port:              <unset>  8000/TCP
TargetPort:        8000/TCP
Endpoints:         172.17.0.11:8000,172.17.0.9:8000
Session Affinity:  None
Events:            <none>

尝试连接 172.17.0.11:8000172.17.0.9:8000,待处理但没有结果。

此处在应用程序中使用 kube-dns: myapp-service-headless.default.svc.cluster.local。现在它在 pods.

的容器中

那么如何通过API从其他应用程序连接到这些应用程序呢?可以使用哪个IP?

您是否在 Endpoint (Pod) 中暴露了您的容器端口?

据我所知,headless 服务可用于根据您配置服务的方式在 kube-dns 中生成条目,如所讨论的 in this doc

但是,您可以使用 type: NodePort 创建另一个选择后端 Pods 的服务,并将它们公开在 NodePort/LB