找到兄弟豆荚(通过同一部署部署的豆荚)
我运行一个需要所有客户端ips列表进行同步的应用程序。我在Kubernetes中运行这个应用程序,并从这些客户端窗口向https://kubernetes/api/v1/pods
发出请求。所以我正在寻找一种可靠的方法来识别所有由同一部署(复制集)以这种方式创建的pod。找到兄弟豆荚(通过同一部署部署的豆荚)
因此,重要的是,在轧制升级过程中,还可以正确识别吊舱。
我有一对夫妇的想法,我想分享,甚至没有真正劝说我:
1)使用标签(?labelSelector=label=value
):
1.A)定义自定义标签只有这些豆荚具有:有效的解决方案,但由于解决方案应该是一般的,我不想定义一个特殊的标签,豆荚需要有。也是这样,我不能确定添加其他标签的豆荚。
1.b)使用自动生成的pod-template-hash label:很遗憾,在滚动更新过程中会发生更改,因此发生更新时,选择器无法正常工作。
2)使用自定义字段(?fieldSelector
)
我想使用一个所述name
或ownerReference.name
属性的子部分的。可惜的是fieldSelector是badly documented或根本不工作。我还想过通过jq
解析完整的豆荚列表,但不太喜欢这种依赖关系。
3)通过引用一个共同的服务识别所有吊舱
我现在看到的方式来认识到服务(旁边再次使用标签)
该吊舱属于是否有任何其他的想法找出兄弟荚?我有些惊讶,我没有找到一个类似的问题。
这就是app
选择器的典型用途。
您可以使用kubectl列出部署的窗格。
以下是从official docs:
kubectl get pods -l app=nginx
NAME READY STATUS RESTARTS
AGE nginx-deployment-1771418926-7o5ns 1/1 Running 0
16h nginx-deployment-1771418926-r18az 1/1 Running 0
您还可以通过YAML文件中列出荚:
$ kubectl get pod -f ./pod.yaml
名单由部署创建的豆荚
这只适用于在pod规范中实际声明'app'标签或使用'kubectl run'命令(隐式添加标签)的情况。 –
这是正确的,但仍然会被视为做你正在努力达到的标准方式我相信。 –
标签/选择器真的是你的样子ng for。使用'kubectl get rs [name] -o = yaml'并查看'selector:'字段。 –
当然,通常选择应该使用标签来完成。虽然我仍然很惊讶没有通用的方式来选择兄弟姐妹,但在与一些合作伙伴交谈之后,我意识到没有和标签是要走的路。 – nik