我在kubernetes中遇到了一个问题。我有一个部署,在replicaset中我们给了值2。更新我的版本后,它显示了3个副本。其中2个运行正常,但一个在CrashLoopBackOff中。我试图删除它,但它再次出现相同的错误。
po中有2个容器在运行,其中一个容器可以登录,但无法登录nginx缓存容器
deployment-5bd9ff7f9d 1/2 CrashLoopBackOff 297 (2m19s ago) 24h (this is the error)
deployment-ffbf89fcd 2/2 Running 0 36d
deployment-ffbf89fcd 2/2 Running 0 36d
Kubectl describe pod
Warning Failed 44m (x4 over 44m) kubelet Error: failed to create containerd task: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: process_linux.go:508: setting cgroup config for procHooks process caused: failed to write "107374182400000": write /sys/fs/cgroup/cpu,cpuacct/kubepods/burstable/podc22d1a88-befe-4680-8eec-2ad69a4cc890/nginx-cache/cpu.cfs_quota_us: invalid argument: unknown
Normal Pulled 43m (x5 over 44m) kubelet Container image "abcd2.azurecr.io/ab_cde/nginx-cache:0.2-ROOT" already present on machine
如何消除这个错误
1条答案
按热度按时间wfveoks01#
从您的 get pods 可以看出,处于CrashLoopBackOff状态的Deployment的hash值与其他2个不同;看起来它是由与其他2个不同的ReplicaSet处理的。
pod-template-hash标签由Deployment控制器添加到Deployment创建或采用的每个ReplicaSet。
此标签确保Deployment的子ReplicaSet不重叠。它是通过对ReplicaSet的PodTemplate进行散列,并使用所得散列作为添加到ReplicaSet选择器、Pod模板标签以及ReplicaSet可能具有的任何现有Pod中的标签值而生成的。
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#pod-template-hash-label
尝试运行
kubectl -n YOUR-NAMESPACE get replicasets
;如果找到2,则删除与出现错误的Pod对应的Pod。