k8s清理0/1无用旧副本pods

k8s清理0/1无用旧副本pods
内容目录

原因

TRMS 命名空间下的 nginx 有多个旧 Pod(0/1 NodePorts 状态),是之前使用 hostPort 启动失败遗留的副本,现在只剩一个正常的在运行(Running)。

trms            nginx-6b95b58644-lnxrs                                            1/1     Running            0               52m
trms            nginx-f5b9db577-2476n                                             0/1     NodePorts          0               9d
trms            nginx-f5b9db577-24hpn                                             0/1     NodePorts          0               9d
trms            nginx-f5b9db577-24xf9                                             0/1     NodePorts          0               9d

解决

🧭 步骤 1:查看实际控制器(Deployment 或 ReplicaSet)

kubectl -n trms get deploy

找出当前 nginx 所属的部署(比如叫 nginxnginx-old)。

root@u1:~# kubectl -n trms get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
nginx     1/1     1            1           54d
xxl-job   1/1     1            1           55d

再看它的 ReplicaSet:

kubectl -n trms get rs | grep nginx

输出中可能会有多个版本的 RS,例如:

root@u1:~# kubectl -n trms get rs | grep nginx
nginx-6b95b58644     1         1         1       54m
nginx-6bdf7d6cf6     0         0         0       54d
nginx-7cc7997975     0         0         0       100m
nginx-f5b9db577      0         0         0       9d

这就表示:

  • nginx-f5b9db577等 是旧的 ReplicaSet(0/1 的 Pods 都是它创建的)
  • nginx-6b95b58644 是新的版本(当前正常)

🧹 步骤 2:删除旧的 ReplicaSet(及其失败的 Pods)

直接执行:

kubectl -n trms delete rs nginx-xxxx

这会自动清理掉所有 nginx-xxxx-* 的 Pods。
实际操作已经正确返回

root@u1:~# kubectl -n trms delete rs nginx-f5b9db577
replicaset.apps "nginx-f5b9db577" deleted
root@u1:~# kubectl -n trms delete rs nginx-6bdf7d6cf6
replicaset.apps "nginx-6bdf7d6cf6" deleted
root@u1:~# kubectl -n trms delete rs nginx-7cc7997975
replicaset.apps "nginx-7cc7997975" deleted

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注