【发布时间】:2018-05-23 07:05:55
【问题描述】:
我运行一个应用程序,它需要所有客户端 ips 的列表以进行同步。我在 Kubernetes 中运行此应用程序,并从这些客户端 Pod 向 https://kubernetes/api/v1/pods 发出请求。因此,我正在寻找一种可靠的方法来识别所有 pod,这些 pod 是通过这种方式由同一部署(复制集)创建的。
因此,在滚动升级期间也能正确识别 pod。
我确实有一些想法想分享,但没有一个能真正说服我:
1) 使用标签 (?labelSelector=label=value):
1.a) 定义 自定义标签 只有这些 pod 有: 有效的解决方案,但由于解决方案应该非常通用,我不想定义特殊标签,pod 需要有。同样这样我不能确定添加其他获得标签的 pod。
1.b) 使用自动生成的 pod-template-hash 标签:遗憾的是,这个标签在滚动更新期间被更改,因此更新发生时,选择器无法正常工作.
2) 使用自定义字段 (?fieldSelector)
我想过使用name 或ownerReference.name 属性的子部分。可悲的是 fieldSelector 是badly documented 或者根本不起作用。我也想过通过jq 解析完整的 pod 列表,但不太喜欢这种依赖关系。
3) 通过引用公共服务来识别所有 pod
我现在看到了识别哪个 pod 属于哪个服务的方法(除了再次使用标签)
还有其他方法可以识别兄弟豆荚吗?我有点惊讶我没有找到一个类似的问题。
【问题讨论】:
-
标签/选择器是您真正需要的。使用
kubectl get rs [name] -o=yaml并查看selector:字段。 -
当然,通常选择应该使用标签来完成。虽然我仍然对没有选择兄弟姐妹的通用方法感到惊讶,但在与一些同事交谈后,我意识到没有,标签是要走的路。
标签: kubernetes