【问题标题】:Can a pod within my cluster get a list of pods in a service?我的集群中的 pod 可以获取服务中的 pod 列表吗?
【发布时间】:2021-03-10 23:42:53
【问题描述】:

假设我的集群中有一个Service,名为workers。从 kubectl,我可以使用服务使用的选择器列出该服务中的 pod:

kubectl get pods --selector app=worker

集群中的 pod 能否获取该服务的 pod 列表?

【问题讨论】:

  • 我希望我没有误读这个问题,但您可以在您的 pod 中运行 kubectl(或进行等效的 api 调用)。您需要使用服务帐户进行身份验证。
  • 我的 pod 没有安装 kubectl。我想我可以将它包含在图像中,但这似乎很奇怪。我会考虑使用 API。
  • 获取pod列表的真正原因是什么?
  • 你可以看几个supported client libraries,根据需要安装到你的镜像中。
  • 列出特定服务公开的所有 pod 的任何具体原因?您能否详细说明一下您的用例并解释您真正想要实现的目标?在我看来,使用客户端库是相当合理的选择。

标签: kubernetes


【解决方案1】:

您可以使用Kubernetes Python Client library 轻松实现它。以下代码可以在本地运行,因为它使用您的 .kube/config 文件进行身份验证:

from  kubernetes import client , config
config.load_kube_config()
v1 = client.CoreV1Api()
list_pods = v1.list_pod_for_all_namespaces(label_selector="app=worker")
for item in list_pods.items:
    print(item.metadata.name)

在此之前,您需要安装提到的库,可以使用pip

pip3 install kubernetes

对于生产用途,我建议将其与您的 python docker 映像集成,当然,您需要为您的 client.kube/config 文件,而不是使用 .kube/config 文件/strong> Pod 以便它可以向 kubernetes API 进行身份验证。这在this answer 中有很好的描述,由krelst 提供。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 2019-03-17
    • 2020-03-20
    • 2017-09-05
    • 2019-03-27
    • 2020-07-19
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多