【发布时间】:2020-08-14 15:05:45
【问题描述】:
我有一个在 statefulset 中运行的 pod,但它需要知道在另一个 statefulset 中运行的所有 pod 的主机名或地址才能与它们通信。第二个 statefulset 是由一个单独的 helm chart 创建的。吊舱可以动态解决这个问题吗?我可以通过类似于设置.Status.ip 的环境将此信息注入到 pod 中吗?
编辑:每个 statefulSet 都有自己的无头服务
【问题讨论】:
-
不确定我是否正确理解了您的要求,但是:您是否尝试为其他有状态集使用服务? (kubernetes.io/docs/concepts/services-networking/service) 这将为您提供集群内的静态域以访问所有这些 pod。
-
如果它是一个 helm chart,它很可能已经为那个 statefulset 创建了一个服务——但不知道是什么 helm chart,这只是一个猜测。您可以通过
kubectl get service查询 -
是的,两个 statefulset 都附加了一个无头服务
-
有没有办法通过 env 将完整的静态域注入到另一个 pod 中?
-
是的,当然 - 只需在您的 pod-spec (kubernetes.io/docs/tasks/inject-data-application/…) 中使用
env配置。服务的 DNS 基本上是它的名称,如果它在同一个命名空间中,或者类似<my-service-name>.<namespace-name>.svc.cluster.local如果它在另一个命名空间中。
标签: kubernetes kubernetes-helm kubernetes-statefulset