《Kubernetes权威指南第五版 4.5.2节》
---
apiVersion: v1
kind: Pod
metadata:
name: webapp1
labels:
app: webapp1
spec:
hostname: webapp-1
subdomain: mysubdomain
containers:
- name: webapp1
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: mysubdomain
spec:
selector:
app: webapp1
clusterIP: None
ports:
- port: 8080
在这个yaml文件中创建了一个 pod,并指定了hostname和subdomain
同时创建了一个service, 书中提到 service的名称必须要和subdomain保持一致。
测试发现如果不保持一致 那么在其他Pod的容器中执行 wget webapp-1.mysubdomain.default.svc.cluster.local:8080
就会报错提示无法解析 webapp-1.mysubdomain.default.svc.cluster.local
,请问这是为什么
1、pod的subdomain和带cluterIP的service的name没有强绑定关系;
2、如果Headless Service关联的pod指定了subdomain,那它的值必须和service的name相同;
为什么?
因为k8s的dns规范就是这么要求的。
https://github.com/kubernetes/dns/blob/master/docs/specification.md