You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Ansible k8s_info结果中提取状态为Succeeded的Pod名称列表

提取Kubernetes中状态为Succeeded的Traefik Pod名称列表

背景

你已经通过kubernetes.core.k8s_info模块获取了kube-system命名空间下,匹配traefik、traefik-crd标签的Pod的名称与状态信息,需要从中筛选出status.phase为Succeeded的Pod名称列表。以下是两种可靠的实现方法:


方法1:使用json_query过滤

k8s_info模块返回的resources字段是包含所有Pod对象的列表,每个Pod对象包含metadata.name和status.phase结构。使用json_query可以直接通过JMESPath表达式筛选目标数据。

示例Playbook片段

- name: 获取kube-system中traefik相关Pod信息
  kubernetes.core.k8s_info:
    namespace: kube-system
    kind: Pod
    label_selectors:
      - app in (traefik, traefik-crd)
  register: traefik_pods

- name: 提取状态为Succeeded的Pod名称列表
  set_fact:
    succeeded_traefik_pods: "{{ traefik_pods.resources | json_query('[?status.phase == `Succeeded`].metadata.name') }}"

- name: 查看筛选结果
  debug:
    var: succeeded_traefik_pods

关键说明

  • JMESPath表达式[?status.phase == Succeeded].metadata.name的含义:
    1. [?...]:遍历列表,筛选满足条件的元素
    2. status.phase == Succeeded``:匹配状态阶段为Succeeded的Pod
    3. .metadata.name:提取匹配元素的名称字段
  • 注意使用反引号`包裹Succeeded,避免与外层双引号冲突。

方法2:使用Ansible原生过滤器(无需JMESPath)

如果你对json_query语法不熟悉,可使用Ansible内置的selectattr和map过滤器组合实现筛选:

示例Playbook片段

- name: 获取kube-system中traefik相关Pod信息
  kubernetes.core.k8s_info:
    namespace: kube-system
    kind: Pod
    label_selectors:
      - app in (traefik, traefik-crd)
  register: traefik_pods

- name: 提取状态为Succeeded的Pod名称列表(原生过滤器方式)
  set_fact:
    succeeded_traefik_pods: "{{ traefik_pods.resources | selectattr('status.phase', 'equalto', 'Succeeded') | map(attribute='metadata.name') | list }}"

- name: 查看筛选结果
  debug:
    var: succeeded_traefik_pods

关键说明

  • selectattr('status.phase', 'equalto', 'Succeeded'):筛选出状态阶段匹配Succeeded的Pod对象
  • map(attribute='metadata.name'):从筛选后的对象中提取名称字段
  • list:将结果转换为列表格式

常见错误排查

  1. 路径错误:确保引用的是traefik_pods.resources而非直接traefik_pods,因为模块返回的核心数据都在resources字段内
  2. 大小写不匹配:Kubernetes的status.phase值为大写开头(如Succeeded、Running),需严格匹配字符串
  3. 引号冲突:使用json_query时,内层字符串优先用反引号包裹,避免与外层双引号转义问题

内容的提问来源于stack exchange,提问作者Floren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:45:43