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

Worker Node上Pod配置文件位置查询及离线资源校验需求

在Worker Node本地查看Pod配置及Ansible静态检查方案

一、Worker Node上的Pod配置存储路径

Kubernetes的Kubelet会在节点本地维护所有调度到该节点的Pod配置,核心通用路径是:
/run/kubernetes/pods/

每个Pod对应一个以其UID命名的子目录,目录内的pod.yaml文件包含了该Pod的完整spec配置,包括你需要的CPU、内存请求(resources.requests)和限制(resources.limits)。

不管你用containerd还是Docker作为容器运行时,这个路径都是可靠的——这是Kubelet统一管理的Pod元数据存储位置,比直接访问容器运行时的私有目录更稳定。

二、用Ansible实现本地静态检查

以下是无需调用kubectl API、直接在Worker Node上执行的资源验证方案:

1. 主Playbook文件

- name: 验证Worker Node上Pod的资源配置
  hosts: worker_nodes
  become: yes  # 需要root权限读取/run/kubernetes/pods/目录
  tasks:
    - name: 枚举所有Pod目录
      find:
        paths: /run/kubernetes/pods/
        file_type: directory
      register: pod_directories

    - name: 逐个检查Pod资源配置
      include_tasks: validate_pod_resources.yml
      loop: "{{ pod_directories.files }}"
      loop_control:
        loop_var: pod_dir

2. 子任务文件 validate_pod_resources.yml

- name: 读取Pod配置文件
  slurp:
    src: "{{ pod_dir.path }}/pod.yaml"
  register: raw_pod_yaml

- name: 解析Pod配置为YAML格式
  set_fact:
    pod_data: "{{ raw_pod_yaml.content | b64decode | from_yaml }}"

- name: 检查容器CPU资源配置(示例:要求请求至少1核)
  debug:
    msg: "[警告] Pod {{ pod_data.metadata.name }} (Namespace: {{ pod_data.metadata.namespace }}) 的容器 {{ container.name }} CPU请求不足,当前值: {{ container.resources.requests.cpu | default('未配置') }}"
  when:
    - container.resources.requests is defined
    - container.resources.requests.cpu is defined
    - (container.resources.requests.cpu | replace('m', '') | int) < 1000  # 转换为毫核判断,1核=1000毫核
  loop: "{{ pod_data.spec.containers }}"
  loop_control:
    loop_var: container

- name: 检查容器内存资源配置(示例:要求请求至少512Mi)
  debug:
    msg: "[警告] Pod {{ pod_data.metadata.name }} (Namespace: {{ pod_data.metadata.namespace }}) 的容器 {{ container.name }} 内存请求不足,当前值: {{ container.resources.requests.memory | default('未配置') }}"
  when:
    - container.resources.requests is defined
    - container.resources.requests.memory is defined
    - (container.resources.requests.memory | regex_replace('[^0-9]', '') | int) < 512  # 提取数值,单位Mi
  loop: "{{ pod_data.spec.containers }}"
  loop_control:
    loop_var: container

三、关键注意事项

  • 必须以root权限执行Playbook,因为/run/kubernetes/pods/目录的权限通常限制为root可读
  • 可根据实际需求调整阈值:比如把CPU请求阈值改成500m(0.5核),内存改成256Mi
  • 如果需要检查资源限制,只需把requests替换为limits即可
  • 部分老版本Kubernetes可能使用/var/lib/kubelet/pods/路径,若/run/kubernetes/pods/不存在,可切换到这个路径尝试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:05:26