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

k8s_facts模块无输出及变量未定义问题求助

解决Ansible k8s_facts模块返回“VARIABLE IS NOT DEFINED!”的问题

嗨,我一眼就发现问题所在啦!你遇到的「VARIABLE IS NOT DEFINED!」错误,是因为你用错了k8s_facts模块的返回字段。

问题根源

stdout_lines 是执行命令类模块(比如 command、shell)才会返回的属性,用来存储命令输出的行内容。但 k8s_facts 是专门用于查询Kubernetes资源的模块,它的返回结构完全不同——获取到的Pod/Node数据会存在你注册变量的 resources 列表里,根本没有 stdout_lines 这个字段,自然会提示变量未定义。

修正后的剧本片段

把你的debug任务改成调用 resources 字段就行:

- name: "Get a list of all pods from any namespace"
  k8s_facts:
    kind: Pod
    kubeconfig: $WORKSPACE
    verify_ssl: no
  register: pod_list
- debug: var: pod_list.resources  # 替换为正确的返回字段
- name: "Search for nodeType=gpu"
  k8s_facts:
    kubeconfig: $WORKSPACE
    kind: Node
    label_selectors:
      - nodeType=gpu
    verify_ssl: no
  register: node_list
- debug: var: node_list.resources  # 替换为正确的返回字段

优化输出(可选)

如果觉得直接输出resources太冗长,你可以用json_query或者循环提取关键信息,比如只显示Pod名称和命名空间:

- debug:
    msg: "Pod: {{ item.metadata.name }} | Namespace: {{ item.metadata.namespace }}"
  loop: "{{ pod_list.resources }}"

这样就能得到和手动执行kubectl get pods -A类似的清晰输出啦。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:51