============
== 白菜 ==
============
一个勤奋的代码搬运工!

Kubernetes 停止和移除 pod

技术分享 k3s kubectl

停止和移除pod

按名称删除pod

按名称删除kubia-gpu pod:

kubectl delete po kubia-gpu

在删除pod的过程中,实际上我们在指示Kubernetes终止该pod中的所有容器。Kubernetes向进程发送一个SIGTERM信号并等待一定的秒数(默认为30),使其正常关闭。如果它没有及时关闭,则通过SIGKILL终止该进程。因此,为了确保你的进程总是正常关闭,进程需要正确处理SIGTERM信号。

提示

还可以通过指定多个空格分隔的名称来删除多个pod(例如:kubectl delete po pod1 pod2)。

使用标签选择器删除pod

停止 kubia-manual 和 kubia-manual-v2 pod 。这两个pod都包含标签 creation_method=manual ,因此可以通过使用一个标签选择器来删除它们:

kubectl delete po -l creation_method=manual

通过删除整个命名空间来删除pod

以下命令删除custom-namespace:

kubectl delete ns custom-namespace

删除命名空间中的所有pod,但保留命名空间

查看 pods

kubectl get pods

通过使用–all选项告诉Kubernetes删除当前命名空间中的所有pod:

kubectl delete po --all

删除命名空间中的(几乎)所有资源

通过使用单个命令删除当前命名空间中的所有资源,可以删除ReplicationCcontroller和pod,以及我们创建的所有service:

kubectl delete all --all

命令中的第一个all指定正在删除所有资源类型,而–all选项指定将删除所有资源实例,而不是按名称指定它们(我们在运行前一个删除命令时已经使用过此选项)。

注意

使用all关键字删除所有内容并不是真的完全删除所有内容。一些资源会被保留下来,并且需要被明确指定删除。

删除资源时,kubectl将打印它删除的每个资源的名称。

注意

kubectl delete all --all 命令也会删除名为kubernetes的Service,但它应该会在几分钟后自动重新创建。

kubectl 命令演示

kubectl 展示搜索出的pod列表(含pod所在的namespace)

kubectl get pod -A |grep <podname>

[root@node ~]# kubectl get pod -A |grep dashboard
kubernetes-dashboard   dashboard-metrics-scraper-5657497c4c-j5kr8   1/1     Running   0              113m
kubernetes-dashboard   kubernetes-dashboard-78f87ddfc-tlmjv         1/1     Running   0              113m

kubectl 删除pod命令

kubectl delete pod <podname> -n <namespace>

在进行删除pod命令时,会发现pod并未被真正删除,原因是k8s误认为我们要删除的pod异常挂了,会启用容灾机制,导致重新在拉起一个新的pod。 故,我们想要正常且彻底的删除一个pod,必须要先破坏掉他的容灾机制,即删除deployment机制。

查看deployment信息

kubectl get deployment -n <namespace>

[root@debian ~]# kubectl get deployment  --all-namespaces
NAMESPACE              NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
kube-system            coredns                     2/2     2            2           4h7m
kubernetes-dashboard   dashboard-metrics-scraper   1/1     1            1           117m
kubernetes-dashboard   kubernetes-dashboard        1/1     1            1           117m

删除deployment配置

kubectl delete deployment <deployment名> -n <namespace>

[root@node ~]# kubectl delete deployment  kubernetes-dashboard -n kubernetes-dashboard
deployment.apps "kubernetes-dashboard" deleted

[root@node ~]# kubectl delete deployment  dashboard-metrics-scraper -n kubernetes-dashboard
deployment.apps "dashboard-metrics-scraper" deleted

然后进行删除pod命令即可,我删除deployment后,再次查询pod发现,上面的pod已经开始自行删除了(这步可酌情处理)

kubectl delete pod <podname> -n <namespace>

[root@node ~]# delete pod dashboard-metrics-scraper-5657497c4c-j5kr8 -n kubernetes-dashboard
pod "dashboard-metrics-scraper-5657497c4c-j5kr8" deleted

# 附一个我这边删除deployment后pod自行删除的情况
[root@node ~]# kubectl get pod -A|grep dashboard