gpt4 book ai didi

dns - 如何从kubernetes节点的角度将服务名称解析为IP?

转载 作者:行者123 更新时间:2023-12-02 11:41:41 26 4
gpt4 key购买 nike

我有一个在GCE上运行的kubernetes集群。

我创建了一个安装程序,其中有两个Pod glusterfs-server-1glusterfs-server-2是我的gluster服务器。

2 glusterfsd守护程序可以正确通信,并且我能够创建复制的卷,向其中写入文件,并查看在两个Pod上正确复制的文件。

我还有1个名为glusterfs-server的服务,该服务会自动平衡2个glusterfs pod之间的流量。

从另一个容器内部,我可以发出mount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume,一切运行正常。

现在,我真正想要的是在创建容器时能够在我的.yaml文件中使用glusterfs卷类型:
...truncated...
spec:
volumes:
- name: myvolume
glusterfs:
endpoints: glusterfs-server
path: myvolume
...truncated...

不幸的是,这行不通。我能够找出为什么它不起作用:

当直接连接到kubernetes节点时,发出mount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume不起作用,这是因为从我的节点的 Angular 来看glusterfs-server不能解析为任何IP地址。 (即getent hosts glusterfs-server不返回任何内容)

而且,由于glusterfs的工作原理,即使直接使用服务的IP也将失败,因为glusterfs最终仍将尝试解析名称glusterfs-server(并失败)。

现在,仅出于娱乐目的并验证这是问题所在,我编辑了节点的resolv.conf(通过放置kube-dns IP地址和搜索域),以便可以正确解析我的pod和服务ip地址。然后,我终于能够在节点上成功发出mount -t glusterfs glusterfs-server:/myvolume /mnt/myvolume。然后,我还能够使用glusterfs卷(使用上面的PodSpec)创建一个pod。

现在,我敢肯定,修改节点的resolv.conf是一个糟糕的主意:具有 namespace 概念的kubernetes,如果2个不同 namespace 中的2个服务共享相同的名称(例如glusterfs-service),则getent hosts glusterfs-service将解析为2个不同的IP居住在2个不同的命名空间中。

所以我的问题是:

我如何才能使节点解析我的Pod /服务IP地址?

最佳答案

您可以修改resolv.conf并使用完整的服务名称来避免冲突。通常是这样的:service_name.default.svc.cluster.localservice_name.kube-system.svc.cluster.local或任何命名空间。

关于dns - 如何从kubernetes节点的角度将服务名称解析为IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39090660/

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