Mad*_*bat 6 networking kubernetes docker-registry kube-dns coredns
我试图让我的 kubernetes 集群从内部运行的容器注册表服务中拉取。我有 kube dns 设置,我有一个注册表部署和服务正在运行。我可以通过节点上的主机命令解析服务内部名称。我已经--dns使用 kube dns 服务的地址向 docker 守护进程添加了标志。我的 kubelet 运行时也将--cluster-dns标志设置为相同的地址。然而,不知何故,这就是我尝试使用此注册表创建 pod 时得到的结果。
Failed to pull image "kube-registry.kube-system.svc.cluster.local/myuser/myimage": rpc error: code = Unknown desc = Error response from daemon: Get https://kube-registry.kube-system.svc.cluster.local/v1/_ping: dial tcp: lookup kube-registry.kube-system.svc.cluster.local: no such host
不知何故,即使 kube dns 地址明确提供给 dockerd 和 kubelet,由于名称解析,从注册表服务中提取图像也会失败。我错过了什么?
小智 1
另一个解决方案是将 kube-dns IP 添加到resolv.conf:
echo "nameserver $(kubectl -n kube-system get svc kube-dns -o jsonpath='{.spec.clusterIP}')" >> /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
CoreDNS 服务通过静态 IP公开,因此无需保持更新。
我可以确认它可以在 Ubunutu 18.04 上运行,尽管它resolv.conf是由systemd-resolved. 不需要额外的 DNS 配置。仅 FQDN 可用的服务:
root@dev:~# nslookup harbor.default.svc.cluster.local
;; Got SERVFAIL reply from 127.0.0.53, trying next server
Server: 10.96.0.10
Address: 10.96.0.10#53
Name: harbor.default.svc.cluster.local
Address: 10.109.118.191
;; Got SERVFAIL reply from 127.0.0.53, trying next server
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1110 次 |
| 最近记录: |