[摘要] kubernetes 可能会产生垃圾或者僵尸pod,在删除rc的时候,相应的pod没有被删除,手动删除pod后会自动重新创建,这时一般需要先删除掉相关联的resources,实际中还要具体情况具体分析。

在使用Helm部署gitlab的时候发现有垃圾的pod存在,一直删除不掉

# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
gitlab-migrations.1-2km-4rwnm 1/1 Running 158 21h
gitlab-migrations.1-30d-gx9nz 1/1 Running 164 21h
gitlab-migrations.1-dsw-m5qbc 1/1 Running 167 21h

  

一般来说是要删除pod关联的rc,rs以及deployment等等,可以执行如下命令查询

kubectl get ClusterRole -n kube-system
kubectl get ClusterRoleBinding -n kube-system
kubectl get Deployments -n kube-system
kubectl get Pods -n kube-system
kubectl get ServiceAccounts -n kube-system
kubectl get CustomResourceDefinition -n kube-system
kubectl get replicasets -n kube-system
kubectl get replicationcontrollers -n kube-system
kubectl get services -n kube-system

  

找到对应的标签进行删除,对应的pod一般就会被删除掉,如果pod还在的话再手动删除pod。
实际中我这三个pod还是无法删除掉,删除之后仍然会重新启动,所以仔细看了下pod的具体描述内容。

# kubectl describe pod -n kube-system gitlab-migrations.1-30d-gx9nz
Name: gitlab-migrations.1-30d-gx9nz
Namespace: kube-system
Node: 172.30.0.169/172.30.0.169
Start Time: Mon, 26 Mar 2018 11:53:45 +0800
Labels: app=migrations
controller-uid=d0fd1214-30a8-11e8-89a7-525400d81209
job-name=gitlab-migrations.1-30d
release=gitlab
Annotations: <none>
Status: Running
IP: 172.100.14.7
Controlled By: Job/gitlab-migrations.1-30d
Init Containers:
configure:
Container ID: docker://a3051d24e65267489aa97ae368bcbe5819e4ae4f3b5ddc4d277b0b25ee585716
Image: busybox
Image ID: docker-pullable://docker.io/busybox@sha256:2107a35b58593c58ec5f4e8f2c4a70d195321078aebfadfbfb223a2ff4a4ed21
Port: <none>
Command:
sh
/config/configure
State: Terminated
Reason: Completed
Exit Code: 0
Started: Mon, 26 Mar 2018 11:54:24 +0800
Finished: Mon, 26 Mar 2018 11:54:24 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/config from migrations-config (ro)
/init-config from init-migrations-secrets (ro)
/init-secrets from migrations-secrets (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6rdp2 (ro)
Containers:
migrations:
Container ID: docker://c33e809de76ba44da330063d9e3c6f58631b30e3c805ea561dc68af38ffe3926
Image: registry.gitlab.com/gitlab-org/build/cng/gitlab-rails:latest
Image ID: docker-pullable://registry.gitlab.com/gitlab-org/build/cng/gitlab-rails@sha256:7dca5eb3b686342a9cff798f8349ad07459a1ef1e9d47a23b787b284d874cc17
Port: <none>
Args:
/scripts/wait-for-deps
/scripts/db-migrate
State: Running
Started: Tue, 27 Mar 2018 09:50:09 +0800
Last State: Terminated
Reason: Error
Exit Code: 1
Started: Tue, 27 Mar 2018 09:41:52 +0800
Finished: Tue, 27 Mar 2018 09:45:02 +0800
Ready: True
Restart Count: 164
Environment:
CONFIG_TEMPLATE_DIRECTORY: /var/opt/gitlab/templates
CONFIG_DIRECTORY: /var/opt/gitlab/config/gitlab/
GITLAB_ROOT_PASSWORD: Vi4ree2R
Mounts:
/etc/gitlab from migrations-secrets (ro)
/home/git/gitlab/config/secrets.yml from migrations-secrets (rw)
/var/opt/gitlab/templates from migrations-config (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-6rdp2 (ro)
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
Volumes:
migrations-config:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: gitlab-migrations
Optional: false
init-migrations-secrets:
<unknown>
migrations-secrets:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium: Memory
default-token-6rdp2:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-6rdp2
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedMount 6m (x655 over 21h) kubelet, 172.30.0.169 MountVolume.SetUp failed for volume "migrations-config" : configmaps "gitlab-migrations" not found
Warning BackOff 3m (x3516 over 21h) kubelet, 172.30.0.169 Back-off restarting failed container

  

需要关注的地方是Labels标签

Labels:         app=migrations
controller-uid=d0fd1214-30a8-11e8-89a7-525400d81209
job-name=gitlab-migrations.1-30d
release=gitlab

  

发现有个job-name=gitlab-migrations.xxx
于是继续查看kubernetes是否有job存在

# kubectl get jobs -n kube-system
NAME DESIRED SUCCESSFUL AGE
gitlab-migrations.1-2km 1 0 23h
gitlab-migrations.1-30d 1 0 23h
gitlab-migrations.1-dsw 1 0 23h

  

先执行删除job看下:

# kubectl delete job gitlab-migrations.1-2km -n kube-system
job "gitlab-migrations.1-2km" deleted
# kubectl delete job gitlab-migrations.1-30d -n kube-system
job "gitlab-migrations.1-30d" deleted
# kubectl delete job gitlab-migrations.1-dsw -n kube-system
job "gitlab-migrations.1-dsw" deleted

  

再看pod情况:

# kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
gitlab-migrations.1-30d-gx9nz 1/1 Terminating 173 23h
gitlab-migrations.1-dsw-m5qbc 0/1 Terminating 176 23h

  

附图为kubernets 的一些对象资源:

再看pod已经被删除了,还有处于Terminating状态的,一会就会消失掉。至此pod删除成功,所以删除与pods相关联的依赖资源是解决问题的最终方法!

kubernetes 无法删除 pod 问题的解决的更多相关文章

  1. Kubernetes 无法删除pod实例的排查过程

    今天在k8s集群创建pod时,执行了如下命令: #kubectl run busybox-service --image=busybox --replicas=3 但是在创建过程中pod既然失败了, ...

  2. kubernetes批量删除pod

    监控页面出现看到有运行失败的pod 1) 查看有哪些不运行的podcustom-metrics-apiserver日志占满空间被驱逐 [root@hadoop03 ~]# kubectl get po ...

  3. Kubernetes中强制删除Pod、namespace

    Kubernetes中强制删除Pod.namespace 解决方法 可使用kubectl中的强制删除命令 # 删除POD kubectl delete pod PODNAME --force --gr ...

  4. kubernetes删除pod一直处于terminating状态的解决方法

    kubernetes删除pod一直处理 Terminating状态 # kubectl get po -n mon NAME READY STATUS RESTARTS AGE alertmanage ...

  5. 用kubernetes部署oa 强制删除pod delete

    1.[root@pserver88 oa]# cat Dockerfile FROM tomcat RUN rm -rf /usr/local/tomcat/webapps/*ADD ROOT.war ...

  6. kubernetes删除pod,pod一直处于Terminating状态

    删除pod,pod一直处于Terminating状态 [root@yxz-cluster01 deploy_yaml]# kubectl get pod -n yunanbao NAME READY ...

  7. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  8. kubernetes删除pod失败

    一.概述 k8s中删除pod失败,可能是该pod有rc,rs上层控制,而且很有可能,所以删除上层对应的rc,rs,deployment即可: 删除的方法: 1.直接删除rc,rs,deployment ...

  9. 【云计算】Kubernetes、Marathon等框架需要解决什么样的问题?

    闲谈Kubernetes 的主要特性和经验分享       Capitalonline全球云主机.全球私有网络,免费试用进行时 »   主要介绍 Kubernetes 的主要特性和一些经验.先从整体上 ...

随机推荐

  1. PhpSpreadsheet生成Excel时实现单元格自动换行

    PhpSpreadsheet是PHPExcel的替代版本,PHPExcel的作者已经停止了更新,今天尝试了使用PhpSpreadsheet生成Excel的时候支持单元格内的自动换行,发现用法其实差不多 ...

  2. 实现Hadoop的Writable接口Implementing Writable interface of Hadoop

    As we saw in the previous posts, Hadoop makes an heavy use of network transmissions for executing it ...

  3. 【BZOJ】【3489】A simple rmq problem

    KD-Tree(乱搞) Orz zyf教给蒟蒻做法 蒟蒻并不会这题正解……(可持久化树套树?...Orz 对于每个点,我们可以求出pre[i],nex[i],那么询问的答案就是:求max (a[i]) ...

  4. 【BZOJ】【3668】【NOI2014】起床困难综合症

    贪心 位运算的题……基本都是按位来做的?... 从高位到低位,贪心来搞就可以了…… 这都算不上是数位DP吧= = /****************************************** ...

  5. JSP中解决中文乱码

    <%@ page language="java" contentType="text/html;charset=gbk" pageEncoding=&qu ...

  6. C++中List的用法

    Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 begin() ...

  7. EF实体类的枚举属性映射设计方法

    public class FoundationInfo { [Column("id")] public int ID { get; set; } public InvestType ...

  8. php中120个内置函数

    php中实现事件模式 https://yq.aliyun.com/ziliao/162660 <?php class Event{ private $events = []; public fu ...

  9. C# GDI+技术

    C# GDI+技术 GDI+概述         GDI+是GDI(即Windows早期版本号中附带的Graphics Device Interface)的后继者.它是一种构成Windows XP操作 ...

  10. Python模拟登录wap版百度贴吧+自己主动回贴

    模拟登录的原理都差点儿相同.大致都是这样: 打开首页获取相关cookie: 提交登陆表单(即username与password). 确认是否登录成功. 假设想了解更具体的原理与相关知识,推荐到具体解释 ...