【问题标题】:Kubernetes getting sibling-pod IP/properties from the same deployment/replicasetKubernetes 从同一个部署/副本中获取同级 Pod IP/属性
【发布时间】:2018-12-16 13:41:01
【问题描述】:

需要将部署的 ip 和/或任何元数据设置为可作为环境变量提供给同一部署下的每个 pod...

例如: 具有 3 个副本部署。 需要为其他两个 pod 中的每一个设置其他 IP 地址的 env var。 需要为彼此的两个 pod 设置主机名。 拥有

HOSTNAME=deplymentNAME-d74cf6f77-q57jx
deplymentNAME_PORT=tcp://10.152.183.27:13000

需要补充:

HOSTNAME2=deplymentNAME-d74cf6f77-y67kl
HOSTNAME3=deplymentNAME-d74cf6f77-i90ro
deplymentNAME_PORT2=tcp://10.152.183.45:13000
deplymentNAME_PORT3=tcp://10.152.16.28:13000

这些应该在三个 pod 上相对可用。 到目前为止,每个 pod 都只有自己的数据,我们需要将其他数据传播到同一部署中的其他副本。

【问题讨论】:

  • 为什么你使用 Pod 的 IP 而不是 Pod 的服务 IP?
  • 听起来您应该尝试利用外部实体/见证来管理这些数据——即,您是否考虑过服务发现解决方案,例如 Zookeeper、Consul、Etcd 等?
  • @jaxxstorm 我需要这个用于需要进行互连多路复用的应用程序。
  • @theMarceloR 无法为相邻实例获取至少一个可解析的 DNS 名称??这个答案确实在stackoverflow.com/a/34418819/7791096 附近,但是对于 pod 本身,如果我们可以通过使用标签/选择器来做到这一点,那就太棒了
  • @MichaelEino,一切皆有可能。特别是如果您愿意对其进行编码,例如godoc.org/golang.org/x/build/kubernetes#Endpoint。您可以创建类似于Downward API (kubernetes.io/docs/tasks/inject-data-application/…) 的内容并检索您想要的数据并将其作为环境变量注入到您的部署元数据中,但是您需要一个准入控制器来动态调整您的部署清单:kubernetes.io/docs/reference/access-authn-authz/…。

标签: kubernetes environment-variables kubernetes-deployment


【解决方案1】:

嗯, 我发现我的应用程序是一个有状态和非无状态应用程序,它需要固定/稳定的主机名/存储等...

我决定使用 statefulset 控制器

参考:

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    相关资源
    最近更新 更多