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

如何获取Kubernetes Pod内所有运行容器的containerID列表

Kubernetes长期运行容器containerID获取方案

错误原因说明

你之前执行的命令存在两个核心错误:

  • containerID字段不属于Pod的spec.containers路径,实际存储在status.containerStatuses路径下
  • 字段名称为驼峰格式containerID,不是全小写的containerid

可用命令参考

基础版:获取所有命名空间下所有运行中容器的containerID

输出默认带容器运行时前缀(如docker:///containerd://):

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.status.containerStatuses[*].containerID}{"\n"}{end}'

适配docker commit版:自动去除运行时前缀

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.status.containerStatuses[*].containerID}{"\n"}{end}' | sed 's#.*://##'

过滤长期运行容器版(需提前安装jq工具)

以下示例筛选已处于Running状态、启动时长超过24小时的容器ID,可自行调整命令中的86400(单位:秒)修改时间阈值:

kubectl get pods --all-namespaces -o json | jq -r '.items[] | select(.status.phase == "Running") | .status.containerStatuses[] | select(.startedAt | fromdateiso8601 < (now - 86400)) | .containerID | ltrimstr("docker://")'

注意事项

  • 仅需获取指定命名空间的容器时,将命令中的--all-namespaces替换为-n <目标命名空间名称>即可
  • docker commit仅会提交容器可写层的变更,不会保存临时文件系统(tmpfs)、外部挂载Volume中的数据,测试前需确认所需变更都存储在容器可写层内
  • 生产环境避免直接对业务容器执行commit操作,防止IO波动影响业务稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:36:03