【问题标题】:Why I can't see pause containers in GKE containerd CRI?为什么我在 GKE containerd CRI 中看不到暂停容器?
【发布时间】:2022-06-30 15:11:02
【问题描述】:

我正在使用具有 Ubuntu 节点和 containerd 作为 CRI 的 GKE 集群。我无法像以前在 docker 中看到的那样看到任何暂停容器。它们不再存在于容器中了吗?有什么变化或我不知道吗?

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                  
> 3923908ea54d7

root@gke-cluster-1-default-pool-b897ab15-7kzn:~# crictl ps | grep -i 暂停

root@gke-cluster-1-default-pool-b897ab15-7kzn:~#

【问题讨论】:

    标签: docker kubernetes containers google-kubernetes-engine containerd


    【解决方案1】:

    pause 容器确实存在于 containerd 中,但它们对crictl 不可见。您应该可以通过一个简单的sudo ps 命令看到它们。

    【讨论】:

      【解决方案2】:

      正如 LaudinCast 所写,pause 容器实际上仍然存在。许多事情都需要它,例如为整个 Pod 保存网络命名空间。但是,我仍然不确定为什么 CRI 规范会从 ListContainers 方法的结果中过滤掉它们!

      编辑:现在我知道了,这是因为 CRI 在这些沙箱中有沙箱和容器的概念。请参阅 CRI 规范原型中定义的 the RPC calls。实际上,crictl pods 将列出所有沙箱,因此在我们的情况下是 pause 容器。可以比较ID,它们会匹配,也可以使用crictl -D pods查看正在使用的RPC,和crictl -D ps比较。

      例如,在 Kubernetes 1.24 中已弃用甚至删除的 Dockershim 中,它为 Docker 实现了 CRI,您可以找到 the code line,它将从返回的列表中删除 pause 容器。显然是added back in 2016。显然,containerd 在它的 CRI 实现中完全一样,我没有花时间在代码库中找到确切的位置,但它应该是 around here

      如果要查看运行 containerd 的主机上的 pause 容器,可以使用 ctrnerdctl 列出所有运行的容器。请注意容器的containerd use namespaces(不仅仅是Linux命名空间lol)。所以你必须输入像nerdctl --namespace k8s.io psctr --namespace=k8s.io c ls 这样的东西,所有的东西都会像之前的docker ps 一样被列出来!

      如果您需要更多详细信息,请参阅我在 Kubernetes slack here 上的“研究”线程。

      【讨论】:

        【解决方案3】:

        enter image description here

        ctr -n k8s.io c ls
        

        你可以这样做

        【讨论】:

          猜你喜欢
          • 2018-07-17
          • 2021-07-14
          • 1970-01-01
          • 2019-10-31
          • 2021-05-12
          • 2021-06-05
          • 1970-01-01
          • 1970-01-01
          • 2023-01-18
          相关资源
          最近更新 更多