创建无头服务:
MyApp的服务-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:8000
或172.17.0.9:8000
,等待,无结果。
此处在应用程序中使用kube-dns
:myapp-service-headless.default.svc.cluster.local
。现在它在pods的容器中。
那么如何通过API从其他应用程序连接到这些应用程序?可以使用哪种IP?
答案 0 :(得分:1)
您是否在Endpoint(Pod)中公开了容器端口?
据我所知,无头服务可用于根据您配置服务的方式在kube-dns中生成条目,如in this doc所述。
但是,您可以使用type: NodePort
创建另一个服务来选择您的后端Pod,并在NodePort/LB上公开它们。