Docker 和 Kubernetes 安装在 Ubuntu 20.04 上,但我无法让 Docker 容器访问外部流量

Docker 和 Kubernetes 安装在 Ubuntu 20.04 上,但我无法让 Docker 容器访问外部流量

我有一台用于 CI/CD 的 Ubuntu 20.04 服务器,它使用 Docker 来构建和发布镜像。

所需的资源不是那么多,因此我决定在该服务器上安装 Kubernetes,以便向我的 k8s 集群添加第二个主节点。

因此我kubespray将其作为主节点运行,安装成功完成。自从安装 k8s 以来,我遇到了一个奇怪的问题。

使用命令行kubectl exec -it podname -- sh我可以做一个nslookup google.com并且它运行良好。

Server:     192.168.1.1
Address:    192.168.1.1:53

Non-authoritative answer:
Name:   google.com
Address: 2607:f8b0:4020:805::200e

Non-authoritative answer:
Name:   google.com
Address: 172.217.13.142

一旦我使用docker exec -it ubuntu bash命令行,我就无法在未使用 kubernetes 层的纯 docker 容器中解析任何 dns 条目。

docker 守护进程使用 kubernetes dns 进行解析。在文件中,/etc/systemd/system/docker.service.d/docker-dns.conf它设置为

Environment="DOCKER_DNS_OPTIONS=\
    --dns 10.233.0.3 --dns 127.0.0.53  \
    --dns-search default.svc.cluster.local --dns-search svc.cluster.local --dns-search lan  \
    --dns-opt ndots:2 --dns-opt timeout:2 --dns-opt attempts:2"

是否可以在 k8s 节点上运行纯 docker 容器?

更新

经过一段时间的调试,我发现这不是 DNS 问题,而是整个流量无法超出 docker 网络。

当我尝试使用时我发现了这一点apt update,我可以看到它能够解析存储库地址,但无法到达镜像。

除非我有更多时间,否则我只会托管另一个 cicd 服务器,而不会将 k8s 节点与其他任何东西混合。

相关内容