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