【问题标题】:How can I get pods by label, using the python kubernetes api?如何使用 python kubernetes api 按标签获取 pod?
【发布时间】:2019-02-22 13:17:33
【问题描述】:

我正在使用带有list_namespaced_pod 的python kubernetes api 来获取我的命名空间中的pod。现在我想使用可选的标签选择器参数过滤它们。

documention 将此参数描述为

通过标签限制返回对象列表的选择器。 默认为所有内容。

懒得举个例子了。在this website 上,我发现了如何使用该属性的几种可能性。我已经试过了

label_selector='label=my_label'
label_selector='label:my_label'
label_selector='my_label'

没有一个在工作。如何正确使用参数label_selector?

【问题讨论】:

    标签: python kubernetes label


    【解决方案1】:

    Kubernetes CLI 使用两种类型的标签选择器。

    1. 基于平等 例如:kubectl get pods -l key=value

    2. 基于集 例如:kubectl get pod -l 'key in (value1,value2)'

    label_selector='label=my_label'

    应该可以,否则尝试使用

    label_selector='label in (my_label1, my_label2)'.

    如果这不起作用,错误可能来自其他地方。

    【讨论】:

    • 你是对的。正确的做法是label_selector='label=my_label'。错误一定是在其他地方
    【解决方案2】:

    这对我有用:

    v1.list_namespaced_pod(namespace='default', label_selector='job-name={}'.format(name))
    

    【讨论】:

    • 选择器实际上是job-name,而不是job_name
    • 谢谢@Krassi,我修好了
    【解决方案3】:

    (Python 客户端)这对我有用,它返回 JSON

    result = v1.list_namespaced_pod( "default", label_selector="label_key=label_value",watch=False)
    print(len(result.items))
    

    【讨论】:

      【解决方案4】:

      Jonathan's Answer 展示了如何添加 OR 条件。

      如果我们要添加 AND 条件。这是代码

      label_selector='app={0},tier={1}'.format('app_name', 'backend')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 1970-01-01
        • 2021-12-24
        • 2020-09-11
        相关资源
        最近更新 更多