我正在使用一个带有Ubuntu节点的GKE集群& containerd作为CRI。我不能像我们以前在码头看到的那样看到任何暂停容器。它们是否不再存在于集装箱中?有什么变化或者我不知道吗?
cluk_ti4@gke-cluster-1-default-pool-b897ab15-7kzn:~$ sudo -i
> root@gke-cluster-1-default-pool-b897ab15-7kzn:~# docker ps CONTAINER
> ID IMAGE COMMAND CREATED
> STATUS PORTS NAMES
>
> root@gke-cluster-1-default-pool-b897ab15-7kzn:~# crictl ps CONTAINER
> IMAGE CREATED STATE NAME
> ATTEMPT POD ID 65b544036d815 cb2388d1f0a57 25
> hours ago Running data-db 0
> 868cf5dd712a3 42afee3f328b1 0e403e3816e89 25 hours ago
> Running dbcontainer 0
> 1e67b12c7ddbf 944ac9c2334e2 295c7be079025 25 hours ago
> Running nginx 0
> 9bc0d4292190b 99aff9af2f0c8 0e403e3816e89 25 hours ago
> Running redis 0
> d5cda32e41f0f 43af76f1b819e 6266988902813 4 days ago
> Running prometheus-to-sd 0
> 43441f62220af 17d024b959956 d204263033d6e 4 days ago
> Running sidecar 0
> 43441f62220af e417d5e3b723f ffd5a31c75009 4 days ago
> Running dnsmasq 0
> 43441f62220af d1c035046787f 1434d0253770f 4 days ago
> Running konnectivity-agent 0
> b19697ac36cf1 596e5a51c5fb8 1434d0253770f 4 days ago
> Running konnectivity-agent 0
> d0d35f65b0a3d 9231a60426be9 98b27a8d721c5 4 days ago
> Running gce-pd-driver 0
> e17e59a9486f6 63b943910b402 a26d732ed0895 4 days ago
> Running gke-metrics-agent 0
> 7052db1775ea5 cca9f35cec83d 5440bb4e13af5 4 days ago
> Running kubedns 0
> 43441f62220af 83570807e719c ff9d4d52a7759 4 days ago
> Running fluentbit-gke 0
> 7bf90df2dc604 a0444e1f50435 8ee6ce05080ec 4 days ago
> Running csi-driver-registrar 0
> e17e59a9486f6 16ec942baf944 294aee909773c 4 days ago
> Running fluentbit 0
> 7bf90df2dc604 1cb29a3a26896 217b1e208caea 4 days ago
> Running kube-proxy 0
> 3923908ea54d7root@gke-cluster-1-default-pool-b897ab15-7kzn:~#蟋蟀ps \ grep -i暂停
root@gke-cluster-1-default-pool-b897ab15-7kzn:~#
发布于 2022-06-30 07:11:02
发布于 2022-03-15 14:37:17
pause容器仍然与容器一起存在,但是它们在crictl中是不可见的。您应该能够通过一个简单的sudo ps命令看到它们。
发布于 2022-05-06 17:27:17
正如LaudinCast所写,实际上pause容器仍然存在。它在很多方面都是必需的,比如保存整个Pod的网络名称空间。但是,我仍然不知道为什么CRI规范将它们从ListContainers方法的结果中筛选出来!
编辑:现在我知道了,因为CRI在沙箱中有一个沙箱和容器的概念。请参阅CRI规范proto中定义的RPC调用。实际上,crictl pods将列出所有沙箱,从而列出我们情况下的pause容器。您可以比较ID,它们将匹配,还可以使用crictl -D pods查看正在使用的RPC,并与crictl -D ps进行比较。
例如,在已弃用,甚至在Kubernetes 1.24中,实现containers的Dockershim中,您可以找到代码行,它将从返回的列表中删除pause容器。显然是再加上2016年。显然,容器在它的CRI实现中做的完全一样,我没有花时间找到代码库中的确切位置,但它应该是在这附近。
如果希望看到主机上的pause容器正在运行,可以使用ctr或nerdctl列出正在运行的所有容器。只需注意容器的容器使用名称空间 (不仅仅是Linux名称空间lol)。因此,您必须键入类似nerdctl --namespace k8s.io ps或ctr --namespace=k8s.io c ls的内容,并且所有内容都会像以前的docker ps一样列出!
如果您需要更多的详细信息,请参阅我在Kubernetes松弛这里上的“研究”线程。
https://stackoverflow.com/questions/71482106
复制相似问题