首页 > 解决方案 > 副本集的 Kubernetes 入口控制器部署循环失败

问题描述

这个周末我在生产中遇到了一些问题,我需要一些帮助:

周六,我收到一条警报,说我的一个集群(托管在 Google Cloud 上)中的所有应用程序都停止接收流量。

我开始寻找,发生的事情是我CrashLoopBackOff在创建 Ingress 控制器 pod 时遇到了问题。
我尝试了几件事并最终设法修复它,但现在虽然它正在工作,但它一直处于奇怪的状态。

现在我有 2 个replicasets而不是 1 个,其中一个正确创建了 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}但现在我担心剩下的状态是 2Replicasets都失败了......

此外,我无法删除Replicasets失败的内容,因为它会再次自动创建并出现同样的问题。

两者的 Docker 映像也是相同的Replicasetsnginx/nginx-ingress:1.10.0

所以我的问题是我无法清理“腐败” Replicasets。任何想法将不胜感激!

谢谢!

标签: kubernetesgoogle-kubernetes-enginekubernetes-ingressnginx-ingressreplicaset

解决方案


推荐阅读