我读过一些关于 Kubernetes 的书籍以及文档中有关无头服务的页面 https://kubernetes.io/docs/concepts/services-networking/service/#headless-services。但我仍然不确定它的真正用途以及为什么有人会使用它。有谁对它有很好的理解,它能完成什么,以及为什么有人会使用它?
嗯,我认为你需要一些理论。整个互联网上有很多解释(包括官方文档),但我认为 Marco Luksa 做得最好:
每个与服务的连接都会转发到随机选择的一个
支持吊舱。但是如果客户端需要连接到所有这些怎么办?
豆荚?如果后备吊舱本身需要连接到所有吊舱怎么办?
其他支持吊舱。通过服务连接显然不是
这样做的方法。什么是?
对于要连接到所有 Pod 的客户端,它需要找出 IP
每个单独的 Pod 的。一种选择是让客户致电
Kubernetes API 服务器并获取 Pod 列表及其 IP 地址
通过 API 调用,但因为您应该始终努力保持您的
应用程序与 Kubernetes 无关,使用 API 服务器并不理想
幸运的是,Kubernetes 允许客户端通过 DNS 发现 pod IP
查找。通常,当您对服务执行 DNS 查找时,DNS
服务器返回单个 IP——服务的集群 IP。但如果你告诉
Kubernetes,你的服务不需要集群 IP(你这样做
通过在服务规范中将 clusterIP 字段设置为 None ),
DNS 服务器将返回 pod IP,而不是单个服务
知识产权。 DNS 服务器不会返回单个 DNS A 记录,而是
返回该服务的多条A记录,每条记录都指向该服务的IP
此时有一个单独的 Pod 支持该服务。客户可以
因此,做一个简单的 DNS A 记录查找并获取所有的 IP
pod 是服务的一部分。然后客户端可以使用它
连接到一个、多个或全部的信息。
将服务规范中的 clusterIP 字段设置为 None 可以使
服务无头,因为 Kubernetes 不会通过以下方式为其分配集群 IP
哪些客户端可以连接到支持它的 Pod。
Marco Luksa 的《Kubernetes 在行动》
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)