[摘要] 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. [Git] git代码统计

    copy : https://www.cnblogs.com/liyropt/archive/2012/12/31/2841053.html 命令行 查看git上的个人代码量: git log --a ...

  2. 论文神器Latex30分钟快速入门教程-只需9步向学神看齐

    小E说:工欲善其事,必先利其器.立志做个安静的美学霸的你,学会Latex,一定能使你的论文写作事半功倍. 1.LaTeX软件的安装和使用 方法A(自助):在MikTeX的官网下载免费的MikTeX编译 ...

  3. 基于zabbix的Redis、Sentinel、Slave多实例自动发现监控

    约定 保证whereis redis-cli 能够正确返回redis-cli程序的路径 保证 redis的配置文件在模板宏{$REDIS_SERVER_CONFIG_PATH}的路径,并且后缀名 为. ...

  4. C++分布式实时应用框架——系统管理模块

    一个分布式实时系统集群动辄上百台机器,集群的规模已经限定这将是一个”封闭“的系统.你不可能再一台台去操作上百台机器,传统的人工运维方式早已不能满足当下需要,所有对集群或者集群中某个节点的操作都必需通过 ...

  5. iOS开发-多线程之GCD(Grand Central Dispatch)

    Grand Central Dispatch(GCD)是一个强有力的方式取执行多线程任务,不管你在回调的时候是异步或者同步的,可以优化应用程序支持多核心处理器和其他的对称多处理系统的系统.开发使用的过 ...

  6. Ionic 4 and the Lifecycle Hooks

    原文: https://medium.com/@paulstelzer/ionic-4-and-the-lifecycle-hooks-4fe9eabb2864 ------------------- ...

  7. (转)[unity3d]easytouch的使用

    对于移动平台上的RPG类的游戏,我们常用虚拟摇杆来控制人物角色的行走和一些行为,相信我们对它并不陌生,之前尝试了EasyTouch2.5,发现并没有最新版的3.1好用,2.5版本的对于自适应没有做的很 ...

  8. 移动立方体算法(Marching cubes algorithm)

    百度百科: 医学图像三维重建的方法主要有两大类:一类是三维面绘制,另一类是三维体绘制.体绘制能够更真实地反映物体结构,但由于其运算量大,即使利用高性能的计算机也无法满足实际应用中交互操作的需要.因此, ...

  9. Python构造字符串

    不断报错 coercing to Unicode : 不要用+连接字符串,要用格式化字符串 None的问题:只能用 or “”的方式来解决了 not all arguments converted d ...

  10. cpu访址能力和内存

    这里有两个概念:cpu访址能力和提供的内存.举例来说,有个灯泡,可以照亮100立方米的空间,只有照亮的空间才可以工作.假如现在的空间只有50立方米,只要增加空间,可工作的空间就增加了.如果当前已经是1 ...