gpt4 book ai didi

Kubernetes Pod 无法解析外部主机

转载 作者:行者123 更新时间:2023-12-05 02:32:27 25 4
gpt4 key购买 nike

我正在运行一个以 Flannel 作为 CNI 的 3 节点 Kubernetes 集群。我使用 kubeadm 来设置集群,版本是 1.23。

我的 pod 需要使用 DNS 地址与外部主机通信,但这些主机没有 DNS 服务器。为此,我在集群中每个节点的/etc/hosts 中添加了它们的条目。节点可以从 DNS 解析主机,但 Pod 无法解析它们。

我试图在互联网上搜索这个问题,有人建议使用 HostAlias 或更新容器内的/etc/hosts 文件。我的问题是主机列表很大,无法在 yaml 文件中维护列表。

我还查看了 Kubernetes 是否有一些内置标志让 Pod 在 Node 的/etc/hosts 中查找条目但找不到它。

所以我的问题是 -

  1. 为什么在节点上运行的 pod 无法解析/etc/hosts 文件中存在的主机。
  2. 有没有办法设置本地 DNS 服务器并要求所有 Pod 查询此 DNS 服务器以获取特定主机解析?

也欢迎任何其他建议或解决方法。

最佳答案

容器内的环境应该与其他容器和机器(包括它的宿主机)隔离,/etc/hosts也是如此。

如果您使用的是 coreDNS(默认的内部 DNS),您可以通过修改其 configMap 轻松添加额外的主机信息。

打开 configMap kubectl edit configmap coredns -n kube-system 并编辑它,使其包含 hosts 部分:

apiVersion: v1
data:
Corefile: |
.:53 {
...
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
}

### Add the following section ###
hosts {
{ip1} {hostname1}
{ip2} {hostname2}
...
fallthrough
}

prometheus :9153
...
}

设置将在几分钟内加载,然后所有 pod 都可以解析 configMap 中描述的主机。

关于Kubernetes Pod 无法解析外部主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71234801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com