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

Ubuntu20.04下Podman无法显示K8s容器,如何修改运行时?

Podman无法查看Kubernetes(CRI-O)容器的解决方法

问题背景

在Ubuntu 20.04环境下,部署了Kubernetes 1.24版本并使用CRI-O作为容器运行时,同时安装Podman用于podman commit功能。当前Podman能正常查看镜像,但podman ps -a无任何容器输出,而crictl ps -a可以正常显示Kubernetes管理的容器,需修改Podman配置使其识别CRI-O容器。

相关命令输出

  1. crictl ps -a执行结果:
CONTAINER           IMAGE                                                                                                       CREATED             STATE               NAME                        ATTEMPT             POD ID              POD
c798099462c9b       295c7be079025306c4f1d65997fcf7adb411c88f139ad1d34b537164aa060369                                            33 minutes ago      Running             nginx                       0                   e1bd39fd2b241       nginx-deployment-6595874d85-wksxq
e2da3de955397       295c7be079025306c4f1d65997fcf7adb411c88f139ad1d34b537164aa060369                                            33 minutes ago      Running             nginx                       0                   15bf749dc406f       nginx-deployment-6595874d85-8zbpx
a58db13acc2bf       295c7be079025306c4f1d65997fcf7adb411c88f139ad1d34b537164aa060369                                            33 minutes ago      Running             nginx                       0                   f5d775b0b78c0       nginx-deployment-6595874d85-pspvg
75573509b4b1e       docker.io/kubernetesui/dashboard@sha256:1b020f566b5d65a0273c3f4ed16f37dedcb95ee2c9fa6f1c42424ec10b2fd2d7    3 days ago          Running             kubernetes-dashboard        0                   bfb3ade50b952       kubernetes-dashboard-f8bb6d75-9g6p7
2ab98c33f2713       7801cfc6d5c072eb114355d369c830641064a246b5a774bcd668fac75ec728e9                                            3 days ago          Running             dashboard-metrics-scraper   0                   23da9b06873c9       dashboard-metrics-scraper-7bfdf779ff-qrdcj
ac41ff1d3a335       docker.io/calico/kube-controllers@sha256:57c40fdfb86dce269a8f93b4f5545b23b7ee9ba36d62e67e7ce367df8d753887   3 days ago          Running             calico-kube-controllers     0                   fac206793f1d5       calico-kube-controllers-6766647d54-sqjqx
0ec5b4d17ed3b       docker.io/calico/node@sha256:0a430186f9267218aed3e419a541e306eba3d0bbe5cf4f6a8b700d35d7a4f7fa               3 days ago          Running             calico-node                 0                   1a63a00117c7f       calico-node-mkvpg
6ec33c0ece470       a87d3f6f1b8fdc077e74ad6874301f57490f5b38cc731d5d6f5803f36837b4b1                                            3 days ago          Exited              install-cni                 0                   1a63a00117c7f       calico-node-mkvpg
8dd11d084b8f3       docker.io/calico/cni@sha256:7c7bd52f3c72917c28a6715740b4710e9a345a26a7d90556a471a3eb977d8cf7                3 days ago          Exited              upgrade-ipam                0                   1a63a00117c7f       calico-node-mkvpg
0ce4eaeb4d27b       k8s.gcr.io/kube-proxy@sha256:058460abb91c7c867f61f5a8a4c29d2cda605d8ff1dd389b1f7bad6c1db60a5b               3 days ago          Running             kube-proxy                  0 
  1. podman ps -a执行结果:
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
  1. podman system info执行结果:
host:
  arch: amd64
  buildahVersion: 1.23.1
  cgroupControllers:
  - cpuset
  - cpu
  - cpuacct
  - blkio
  - memory
  - devices
  - freezer
  - net_cls
  - perf_event
  - net_prio
  - hugetlb
  - pids
  - rdma
  cgroupManager: systemd
  cgroupVersion: v1
  conmon:
    package: 'conmon: /usr/libexec/podman/conmon'
    path: /usr/libexec/podman/conmon
    version: 'conmon version 2.1.2, commit: '
  cpus: 4
  distribution:
    codename: focal
    distribution: ubuntu
    version: "20.04"
  eventLogger: journald
  hostname: realworker
  idMappings:
    gidmap: null
    uidmap: null
  kernel: 5.4.0-122-generic
  linkmode: dynamic
  logDriver: journald
  memFree: 4012826624
  memTotal: 16728518656
  ociRuntime:
    name: crun
    package: 'crun: /usr/bin/crun'
    path: /usr/bin/crun
    version: |-
      crun version UNKNOWN
      commit: ea1fe3938eefa14eb707f1d22adff4db670645d6
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +YAJL
  os: linux
  remoteSocket:
    path: /run/podman/podman.sock
  security:
    apparmorEnabled: true
    capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
    rootless: false
    seccompEnabled: true
    seccompProfilePath: /usr/share/containers/seccomp.json
    selinuxEnabled: false
  serviceIsRemote: false
  slirp4netns:
    executable: /usr/bin/slirp4netns
    package: 'slirp4netns: /usr/bin/slirp4netns'
    version: |-
      slirp4netns version 1.1.8
      commit: unknown
      libslirp: 4.3.1-git
      SLIRP_CONFIG_VERSION_MAX: 3
      libseccomp: 2.4.3
  swapFree: 0
  swapTotal: 0
  uptime: 95h 1m 37.73s (Approximately 3.96 days)
plugins:
  log:
  - k8s-file
  - none
  - journald
  network:
  - bridge
  - macvlan
  volume:
  - local
registries:
  search:
  - docker.io
  - quay.io
store:
  configFile: /etc/containers/storage.conf
  containerStore:
    number: 0
    paused: 0
    running: 0
    stopped: 0
  graphDriverName: overlay
  graphOptions:
    overlay.mountopt: nodev,metacopy=on
  graphRoot: /var/lib/containers/storage
  graphStatus:
    Backing Filesystem: extfs
    Native Overlay Diff: "false"
    Supports d_type: "true"
    Using metacopy: "true"
  imageStore:
    number: 11
  runRoot: /run/containers/storage
  volumePath: /var/lib/containers/storage/volumes
version:
  APIVersion: 3.4.2
  Built: 0
  BuiltTime: Thu Jan  1 00:00:00 1970
  GitCommit: ""
  GoVersion: go1.15.2
  OsArch: linux/amd64
  Version: 3.4.2

解决步骤

1. 确认CRI-O存储配置

先查看CRI-O的存储参数,确保和Podman的存储路径匹配:

sudo grep -A 15 "\[storage\]" /etc/crio/crio.conf

重点关注driver、graphroot、runroot和overlay.mountopt这几个参数。

2. 修改Podman核心配置

编辑/etc/containers/containers.conf文件,添加CRI支持配置:

sudo nano /etc/containers/containers.conf

在[engine]段添加以下内容:

[engine]
# 启用CRI容器识别
enable_cri_containerd = true
# 指定CRI-O的socket路径
cri_socket = "/run/crio/crio.sock"

3. 同步存储配置

编辑/etc/containers/storage.conf,确保和CRI-O的存储参数完全一致:

sudo nano /etc/containers/storage.conf

参考CRI-O的配置调整以下字段:

[storage]
driver = "overlay"
runroot = "/run/containers/storage"
graphroot = "/var/lib/containers/storage"

[storage.options.overlay]
mountopt = "nodev,metacopy=on"

4. 重启Podman服务

sudo systemctl restart podman

5. 验证配置

执行podman ps -a,此时应该能看到所有Kubernetes管理的容器。


注意事项

  • 对Kubernetes容器执行podman commit后,建议将新镜像推送到镜像仓库,再通过更新Deployment的镜像版本来应用,避免直接修改K8s管理的容器导致状态不一致。
  • 若需要区分Podman自身容器和K8s容器,可使用podman --runtime crun ps -a查看Podman独立管理的容器,podman --runtime crio ps -a查看K8s容器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:09:21