使用containerd运行kubernetes时我的容器镜像在哪里?

问题描述 投票:0回答:4

此输出表明我正在使用

containerd
作为容器运行时运行 kubernetes:

k get nodes -o wide
NAME          STATUS   ROLES                  AGE   VERSION        INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
k8s-worker3   Ready    <none>                 12d   v1.24.4+k3s1   10.16.24.123   <none>        Ubuntu 20.04.2 LTS   5.15.0-48-generic   containerd://1.6.6-k3s1
k8s-worker1   Ready    <none>                 12d   v1.24.4+k3s1   10.16.24.121   <none>        Ubuntu 20.04.2 LTS   5.13.0-44-generic   containerd://1.6.6-k3s1
k8s-master    Ready    control-plane,master   12d   v1.24.4+k3s1   10.16.24.120   <none>        Ubuntu 20.04.4 LTS   5.15.0-46-generic   containerd://1.6.6-k3s1
k8s-worker2   Ready    <none>                 12d   v1.24.4+k3s1   10.16.24.122   <none>        Ubuntu 20.04.2 LTS   5.13.0-44-generic   containerd://1.6.6-k3s1

我正在部署我的一个 Pod,它被安排在节点

k8s-worker3
上,并且
kubectl describe pods/mypod
表示图像已经在节点上。

但是当我在节点上运行

ctr
时,它显示没有图像:

user@k8s-worker3:~$ sudo ctr images list
REF TYPE DIGEST SIZE PLATFORMS LABELS

并且

docker images
未显示图像的正确版本。

这是运行containerd的进程:

user@k8s-worker3:~$ ps -ef | grep container
root         985       1  0 15:23 ?        00:00:00 /usr/bin/containerd
root        1106       1  0 15:23 ?        00:00:01 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root        1312    1057  0 15:23 ?        00:00:12 containerd -c /var/lib/rancher/k3s/agent/etc/containerd/config.toml -a /run/k3s/containerd/containerd.sock --state /run/k3s/containerd --root /var/lib/rancher/k3s/agent/containerd
root        1918       1  0 15:23 ?        00:00:03 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 5abd3c3104abf812422757d9534c33475819cbf43b64845dd23f535193fed09e -address /run/k3s/containerd/containerd.sock
root        1970       1  0 15:23 ?        00:00:00 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 8c339c15ab8abb3050810b5fcaed817363fcf3b06800b554711b1fa0e95006e2 -address /run/k3s/containerd/containerd.sock
root        3231       1  0 15:25 ?        00:00:01 /var/lib/rancher/k3s/data/577968fa3d58539cc4265245941b7be688833e6bf5ad7869fa2afe02f15f1cd2/bin/containerd-shim-runc-v2 -namespace k8s.io -id 354aa1df3c2a8492a4842efe3882785553501d77f61d9b5ef0bf3343ace2a518 -address /run/k3s/containerd/containerd.sock
user      4957    3094  0 15:48 pts/0    00:00:00 grep --color=auto container

那么这里发生了什么? 节点上的图像在哪里??

kubernetes containers containerd
4个回答
5
投票

我认为crictl是监控containerd(K8s)上的图像和容器的最佳解决方案。

Crictl 详细信息和命令:

https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md 

使用curl安装crictl:

VERSION="v1.26.0" # check latest version in /releases page
curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-${VERSION}-linux-amd64.tar.gz --output crictl-${VERSION}-linux-amd64.tar.gz
sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz

配置运行crictl:

sudo nano /etc/crictl.yaml

# copy followings: 
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: true

示例命令: 列出 Pod:

sudo crictl pods

列出图像:

sudo crictl images

列出所有pod、容器、镜像,找到containerid:

sudo crictl ps -a

特定容器的日志:

sudo crictl logs <ContainerID>

在正在运行的容器上运行 shell:

sudo crictl exec -it <ContainerID> /bin/sh   

停止 Pod:

sudo crictl stopp <PodID>  

删除 Pod:

sudo crictl rmp <PodID> 

删除图像:

sudo crictl rmi <ImageID>

从 dockerhub:docker.io:

拉取镜像
sudo crictl pull alpine

吊舱检查:

sudo crictl inspectp <PodID, e.g:4e2> 

1
投票

我发现这个命令有效:

sudo crictl -r unix:///run/k3s/containerd/containerd.sock ps -a

所以我需要指定运行时端点(选项-r)。


0
投票

尝试crictl图像列表如下所示

enter image description here


0
投票

您可能需要指定命名空间。

您可以通过以下方式找到名称空间:

sudo ctr namespace ls

默认命名空间是

k8s.io
,这可能与您的系统相同。 现在您可以使用命名空间再次执行相同的命令。

sudo ctr -n k8s.io images list
© www.soinside.com 2019 - 2024. All rights reserved.