假设我们有两个命名空间namespace-a
和namespace-b
。
Pod pod-name
在Deployment
中运行,并通过Service
上的service-name
在内部显示为ClusterIP
namespace-a
。 Kubernetes 1.17群集具有群集域名cluster-domain
。 cluster-domain
不是默认的cluster.local
。
batman
上的另一个Pod namespace-b
尝试解析pod-name
的IP地址。
batman
中的以下作品:ping/telnet pod-name.service-name.namespace-a.svc.cluster-domain
batman
开始工作:ping/telnet pod-name.service-name.namespace-a.svc
但是,如果batman
在namespace-a
上运行:3.以下[[does从batman
开始工作:ping/telnet pod-name.service-name.namespace-a.svc
cluster.domain
而不是默认的cluster.local
,则需要在kubelet中使用标志--cluster-domain=cluster.domain
配置本地域>此外,您还需要修改CoreDNS Corefile的ConfigMap来更改默认值
apiVersion: v1
kind: ConfigMap
metadata:
name: coredns
namespace: kube-system
data:
Corefile: |
.:53 {
errors
health {
lameduck 5s
}
ready
kubernetes cluster.domain in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}
prometheus :9153
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
要验证您是否检查了Pod中的/etc/resolve.conf
文件
search default.svc.cluster.domain svc.cluster.domain cluster.domain google.internal c.gce_project_id.internal
nameserver 10.0.0.10
options ndots:5