这个周末我在生产中遇到了一些问题,我需要一些帮助:
周六,我收到一条提醒,我的一个集群(托管在 Google Cloud 上)中的所有应用都停止接收流量。
我开始寻找,结果发现我在创建 Ingress 控制器 pod 时有一个 CrashLoopBackOff
。
我尝试了几件事,最后设法修复它,但现在虽然它正在工作,但它一直处于奇怪的状态。
现在我有 2 个 replicasets
而不是一个,其中一个正确创建了 pod,这就是为什么它可以工作但另一个仍然处于错误循环中:
NAME DESIRED CURRENT READY AGE
replicaset.apps/nginx-ingress-nginx-ingress-7855 1 1 0 33h
replicaset.apps/nginx-ingress-nginx-ingress-7b8b 1 1 1 34h
NAME READY STATUS RESTARTS AGE
pod/nginx-ingress-nginx-ingress-7855 0/1 CrashLoopBackOff 397 33h
pod/nginx-ingress-nginx-ingress-7b8b 1/1 Running 12 34h
奇怪的是,如果我描述入口控制器的部署,我会看到以下内容:
OldReplicaSets: nginx-ingress-nginx-ingress-7b8b (1/1 replicas created)
NewReplicaSet: nginx-ingress-nginx-ingress-7855 (1/1 replicas created)
如您所见,新的 Replicaset
是创建失败的 Pod 的,而旧的则是正常工作的。
我的第一个想法是通过执行 kubectl -n service rollout restart deployment ${DEPLOYMENT_NAME}
重新启动部署,但现在我担心剩下的状态是 2 Replicasets
失败...
此外,我无法删除失败的 Replicasets
,因为它再次自动创建并出现相同的问题。
Docker 镜像对于 Replicasets
也是相同的:nginx/nginx-ingress:1.10.0
所以我的问题是我无法清理“损坏的”Replicasets
。任何想法将不胜感激!
谢谢!