亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)詳解

 更新時(shí)間:2022年11月07日 17:00:51   作者:人生的哲理  
這篇文章主要為大家介紹了cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一.系統(tǒng)環(huán)境

服務(wù)器版本docker軟件版本Kubernetes(k8s)集群版本CPU架構(gòu)
CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64

Kubernetes集群架構(gòu):k8scloude1作為master節(jié)點(diǎn),k8scloude2,k8scloude3作為worker節(jié)點(diǎn)

服務(wù)器操作系統(tǒng)版本CPU架構(gòu)進(jìn)程功能描述
k8scloude1/192.168.110.130CentOS Linux release 7.4.1708 (Core)x86_64docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calicok8s master節(jié)點(diǎn)
k8scloude2/192.168.110.129CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點(diǎn)
k8scloude3/192.168.110.128CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點(diǎn)

二.前言

本文介紹cordon節(jié)點(diǎn),drain驅(qū)逐節(jié)點(diǎn),delete 節(jié)點(diǎn),在對(duì)k8s集群節(jié)點(diǎn)執(zhí)行維護(hù)(例如內(nèi)核升級(jí)、硬件維護(hù)等)時(shí)候會(huì)用到。

cordon節(jié)點(diǎn),drain驅(qū)逐節(jié)點(diǎn),delete 節(jié)點(diǎn)的前提是已經(jīng)有一套可以正常運(yùn)行的Kubernetes集群,關(guān)于Kubernetes(k8s)集群的安裝部署,可以查看博客《Centos7 安裝部署Kubernetes(k8s)集群》

三.cordon節(jié)點(diǎn)

3.1 cordon節(jié)點(diǎn)概覽

cordon 節(jié)點(diǎn)會(huì)使其停止調(diào)度,會(huì)將node狀態(tài)調(diào)為SchedulingDisabled,之后再創(chuàng)建新pod,新pod不會(huì)被調(diào)度到該節(jié)點(diǎn),原有的pod不會(huì)受到影響,仍正常對(duì)外提供服務(wù)。

3.2 cordon節(jié)點(diǎn)

創(chuàng)建目錄存放yaml文件

[root@k8scloude1 ~]# mkdir deploy
[root@k8scloude1 ~]# cd deploy/

使用--dry-run生成deploy配置文件

[root@k8scloude1 deploy]# kubectl create deploy nginx --image=nginx --dry-run=client -o yaml >nginx.yaml
[root@k8scloude1 deploy]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

修改deploy配置文件,replicas: 5表示副本數(shù)為 5,deploy將創(chuàng)建5個(gè)pod

[root@k8scloude1 deploy]# vim nginx.yaml 
#修改配置文件:
# replicas: 5  副本數(shù)修改為5
#terminationGracePeriodSeconds: 0  寬限期修改為0
# imagePullPolicy: IfNotPresent  鏡像下載策略為存在鏡像就不下載
[root@k8scloude1 deploy]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 0
      containers:
      - image: nginx
        name: nginx
        imagePullPolicy: IfNotPresent
        resources: {}
status: {}

創(chuàng)建deploy和使用pod yaml文件創(chuàng)建pod

[root@k8scloude1 deploy]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod1
  name: pod1
spec:
  terminationGracePeriodSeconds: 0
  containers:
  - image: nginx
    imagePullPolicy: IfNotPresent
    name: n1
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@k8scloude1 deploy]# kubectl apply -f pod.yaml 
pod/pod1 created
[root@k8scloude1 deploy]# kubectl apply -f nginx.yaml 
deployment.apps/nginx created

查看pod,可以看到deploy生成5個(gè)pod(nginx-6cf858f6cf-XXXXXXX),還有一個(gè)pod1。

[root@k8scloude1 deploy]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-fwhmh   1/1     Running   0          52s   10.244.251.217   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hr6bn   1/1     Running   0          52s   10.244.251.218   k8scloude3   <none>           <none>
nginx-6cf858f6cf-j2ccs   1/1     Running   0          52s   10.244.112.161   k8scloude2   <none>           <none>
nginx-6cf858f6cf-l7n4w   1/1     Running   0          52s   10.244.112.162   k8scloude2   <none>           <none>
nginx-6cf858f6cf-t6qxq   1/1     Running   0          52s   10.244.112.163   k8scloude2   <none>           <none>
pod1                     1/1     Running   0          60s   10.244.251.216   k8scloude3   <none>           <none>

假設(shè)某天要對(duì)k8scloude2進(jìn)行維護(hù)測(cè)試,不希望k8scloude2節(jié)點(diǎn)上被分配新的pod,可以對(duì)某個(gè)節(jié)點(diǎn)執(zhí)行cordon之后,此節(jié)點(diǎn)就不會(huì)再調(diào)度新的pod了

cordon k8scloude2節(jié)點(diǎn),k8scloude2節(jié)點(diǎn)變?yōu)镾chedulingDisabled狀態(tài)

[root@k8scloude1 deploy]# kubectl cordon k8scloude2
node/k8scloude2 cordoned
[root@k8scloude1 deploy]# kubectl get nodes
NAME         STATUS                     ROLES                  AGE     VERSION
k8scloude1   Ready                      control-plane,master   8d      v1.21.0
k8scloude2   Ready,SchedulingDisabled   <none>                 7d23h   v1.21.0
k8scloude3   Ready                      <none>                 7d23h   v1.21.0

kubectl scale deploy命令使nginx deploy的副本數(shù)擴(kuò)展為10個(gè)

[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=10
deployment.apps/nginx scaled

查看pod,可以發(fā)現(xiàn)新生成的pod都被調(diào)度到到k8scloude3上,某個(gè)節(jié)點(diǎn)被cordon之后,新的pod將不被調(diào)度到該節(jié)點(diǎn),原先的pod不變。

[root@k8scloude1 deploy]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-7fdnr   1/1     Running   0          4s      10.244.251.221   k8scloude3   <none>           <none>
nginx-6cf858f6cf-fwhmh   1/1     Running   0          9m9s    10.244.251.217   k8scloude3   <none>           <none>
nginx-6cf858f6cf-g92ls   1/1     Running   0          4s      10.244.251.219   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hr6bn   1/1     Running   0          9m9s    10.244.251.218   k8scloude3   <none>           <none>
nginx-6cf858f6cf-j2ccs   1/1     Running   0          9m9s    10.244.112.161   k8scloude2   <none>           <none>
nginx-6cf858f6cf-l7n4w   1/1     Running   0          9m9s    10.244.112.162   k8scloude2   <none>           <none>
nginx-6cf858f6cf-lsvsg   1/1     Running   0          4s      10.244.251.223   k8scloude3   <none>           <none>
nginx-6cf858f6cf-mpwjl   1/1     Running   0          4s      10.244.251.222   k8scloude3   <none>           <none>
nginx-6cf858f6cf-s8x6b   1/1     Running   0          4s      10.244.251.220   k8scloude3   <none>           <none>
nginx-6cf858f6cf-t6qxq   1/1     Running   0          9m9s    10.244.112.163   k8scloude2   <none>           <none>
pod1                     1/1     Running   0          9m17s   10.244.251.216   k8scloude3   <none>           <none>

來(lái)個(gè)極端的例子,先把deploy的副本數(shù)變?yōu)?,再變?yōu)?0,此時(shí)所有的pod都運(yùn)行在k8scloude3節(jié)點(diǎn)了。

[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=0
deployment.apps/nginx scaled
[root@k8scloude1 deploy]# kubectl get pod -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
pod1   1/1     Running   0          10m   10.244.251.216   k8scloude3   <none>           <none>
[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=10
deployment.apps/nginx scaled
[root@k8scloude1 deploy]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-5cx9s   1/1     Running   0          8s    10.244.251.231   k8scloude3   <none>           <none>
nginx-6cf858f6cf-6cblj   1/1     Running   0          8s    10.244.251.228   k8scloude3   <none>           <none>
nginx-6cf858f6cf-827cz   1/1     Running   0          8s    10.244.251.233   k8scloude3   <none>           <none>
nginx-6cf858f6cf-b989n   1/1     Running   0          8s    10.244.251.229   k8scloude3   <none>           <none>
nginx-6cf858f6cf-kwxhn   1/1     Running   0          8s    10.244.251.224   k8scloude3   <none>           <none>
nginx-6cf858f6cf-ljjxz   1/1     Running   0          8s    10.244.251.225   k8scloude3   <none>           <none>
nginx-6cf858f6cf-ltrpr   1/1     Running   0          8s    10.244.251.227   k8scloude3   <none>           <none>
nginx-6cf858f6cf-lwf7g   1/1     Running   0          8s    10.244.251.230   k8scloude3   <none>           <none>
nginx-6cf858f6cf-xw84l   1/1     Running   0          8s    10.244.251.226   k8scloude3   <none>           <none>
nginx-6cf858f6cf-zpwhq   1/1     Running   0          8s    10.244.251.232   k8scloude3   <none>           <none>
pod1                     1/1     Running   0          11m   10.244.251.216   k8scloude3   <none>           <none>

3.3 uncordon節(jié)點(diǎn)

要讓節(jié)點(diǎn)恢復(fù)調(diào)度pod,uncordon即可。

uncordon k8scloude2節(jié)點(diǎn),k8scloude2節(jié)點(diǎn)狀態(tài)變?yōu)镽eady,恢復(fù)調(diào)度。

#需要uncordon
[root@k8scloude1 deploy]# kubectl uncordon k8scloude2
node/k8scloude2 uncordoned
[root@k8scloude1 deploy]# kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8scloude1   Ready    control-plane,master   8d    v1.21.0
k8scloude2   Ready    <none>                 8d    v1.21.0
k8scloude3   Ready    <none>                 8d    v1.21.0

四.drain節(jié)點(diǎn)

4.1 drain節(jié)點(diǎn)概覽

在對(duì)節(jié)點(diǎn)執(zhí)行維護(hù)(例如內(nèi)核升級(jí)、硬件維護(hù)等)之前, 可以使用 kubectl drain 從節(jié)點(diǎn)安全地逐出所有 Pods。 安全的驅(qū)逐過(guò)程允許 Pod 的容器 體面地終止, 并確保滿足指定的 PodDisruptionBudgets,PodDisruptionBudget 是一個(gè)對(duì)象,用于定義可能對(duì)一組 Pod 造成的最大干擾。。

說(shuō)明: 默認(rèn)情況下, kubectl drain 將忽略節(jié)點(diǎn)上不能殺死的特定系統(tǒng) Pod;

'drain' 驅(qū)逐或刪除除鏡像 pod 之外的所有 pod(不能通過(guò) API 服務(wù)器刪除)。如果有 daemon set-managed pods,drain 不會(huì)在沒(méi)有 --ignore-daemonsets 的情況下繼續(xù)進(jìn)行,并且無(wú)論如何它都不會(huì)刪除任何 daemon set-managed pods,因?yàn)檫@些 pods 將立即被 daemon set 控制器替換,它會(huì)忽略不可調(diào)度的標(biāo)記。如果有任何 pod 既不是鏡像 pod,也不是由復(fù)制控制器、副本集、守護(hù)程序集、有狀態(tài)集或作業(yè)管理的,那么除非您使用 --force,否則 drain 不會(huì)刪除任何 pod。如果一個(gè)或多個(gè) pod 的管理資源丟失, --force 也將允許繼續(xù)刪除。

kubectl drain 的成功返回,表明所有的 Pods(除了上一段中描述的被排除的那些), 已經(jīng)被安全地逐出(考慮到期望的終止寬限期和你定義的 PodDisruptionBudget)。 然后就可以安全地關(guān)閉節(jié)點(diǎn), 比如關(guān)閉物理機(jī)器的電源,如果它運(yùn)行在云平臺(tái)上,則刪除它的虛擬機(jī)。

4.2 drain 節(jié)點(diǎn)

查看node狀態(tài)和pod

[root@k8scloude1 deploy]# kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8scloude1   Ready    control-plane,master   8d    v1.21.0
k8scloude2   Ready    <none>                 8d    v1.21.0
k8scloude3   Ready    <none>                 8d    v1.21.0
[root@k8scloude1 deploy]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-58wnd   1/1     Running   0          65s   10.244.112.167   k8scloude2   <none>           <none>
nginx-6cf858f6cf-5rrk4   1/1     Running   0          65s   10.244.112.164   k8scloude2   <none>           <none>
nginx-6cf858f6cf-86wxr   1/1     Running   0          65s   10.244.251.237   k8scloude3   <none>           <none>
nginx-6cf858f6cf-89wj9   1/1     Running   0          65s   10.244.112.168   k8scloude2   <none>           <none>
nginx-6cf858f6cf-9njrj   1/1     Running   0          65s   10.244.251.236   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hchtb   1/1     Running   0          65s   10.244.251.234   k8scloude3   <none>           <none>
nginx-6cf858f6cf-mb2ft   1/1     Running   0          65s   10.244.112.166   k8scloude2   <none>           <none>
nginx-6cf858f6cf-nq6zv   1/1     Running   0          65s   10.244.112.169   k8scloude2   <none>           <none>
nginx-6cf858f6cf-pl7ww   1/1     Running   0          65s   10.244.251.235   k8scloude3   <none>           <none>
nginx-6cf858f6cf-sf2w6   1/1     Running   0          65s   10.244.112.165   k8scloude2   <none>           <none>
pod1                     1/1     Running   0          36m   10.244.251.216   k8scloude3   <none>           <none>

drain驅(qū)逐節(jié)點(diǎn):drain=cordon+evicted

drain k8scloude2節(jié)點(diǎn),--delete-emptydir-data刪除數(shù)據(jù),--ignore-daemonsets忽略daemonsets

[root@k8scloude1 deploy]# kubectl drain k8scloude2
node/k8scloude2 cordoned
error: unable to drain node "k8scloude2", aborting command...
There are pending nodes to be drained:
 k8scloude2
cannot delete Pods with local storage (use --delete-emptydir-data to override): kube-system/metrics-server-bcfb98c76-k5dmj
cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): kube-system/calico-node-nsbfs, kube-system/kube-proxy-lpj8z
[root@k8scloude1 deploy]# kubectl get node
NAME         STATUS                     ROLES                  AGE   VERSION
k8scloude1   Ready                      control-plane,master   8d    v1.21.0
k8scloude2   Ready,SchedulingDisabled   <none>                 8d    v1.21.0
k8scloude3   Ready                      <none>                 8d    v1.21.0
[root@k8scloude1 deploy]# kubectl drain k8scloude2 --ignore-daemonsets
node/k8scloude2 already cordoned
error: unable to drain node "k8scloude2", aborting command...
There are pending nodes to be drained:
 k8scloude2
error: cannot delete Pods with local storage (use --delete-emptydir-data to override): kube-system/metrics-server-bcfb98c76-k5dmj
[root@k8scloude1 deploy]# kubectl drain k8scloude2 --ignore-daemonsets --force --delete-emptydir-data
node/k8scloude2 already cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-nsbfs, kube-system/kube-proxy-lpj8z
evicting pod pod/nginx-6cf858f6cf-sf2w6
evicting pod pod/nginx-6cf858f6cf-5rrk4
evicting pod kube-system/metrics-server-bcfb98c76-k5dmj
evicting pod pod/nginx-6cf858f6cf-58wnd
evicting pod pod/nginx-6cf858f6cf-mb2ft
evicting pod pod/nginx-6cf858f6cf-89wj9
evicting pod pod/nginx-6cf858f6cf-nq6zv
pod/nginx-6cf858f6cf-5rrk4 evicted
pod/nginx-6cf858f6cf-mb2ft evicted
pod/nginx-6cf858f6cf-sf2w6 evicted
pod/nginx-6cf858f6cf-58wnd evicted
pod/nginx-6cf858f6cf-nq6zv evicted
pod/nginx-6cf858f6cf-89wj9 evicted
pod/metrics-server-bcfb98c76-k5dmj evicted
node/k8scloude2 evicted

查看pod,k8scloude2節(jié)點(diǎn)被drain之后,pod都調(diào)度到了k8scloude3節(jié)點(diǎn)。

節(jié)點(diǎn)被drain驅(qū)逐的本質(zhì)就是刪除節(jié)點(diǎn)上的pod,k8scloude2節(jié)點(diǎn)被drain驅(qū)逐之后,k8scloude2上運(yùn)行的pod會(huì)被刪除。

deploy是一個(gè)控制器,會(huì)監(jiān)控pod的副本數(shù),當(dāng)k8scloude2上的pod被驅(qū)逐之后,副本數(shù)少于10,于是在可調(diào)度的節(jié)點(diǎn)創(chuàng)建pod,補(bǔ)足副本數(shù)。

單獨(dú)的pod不具備再生性,刪除之后就真刪除了,如果k8scloude3被驅(qū)逐,則pod pod1會(huì)被刪除,其他可調(diào)度節(jié)點(diǎn)也不會(huì)再生一個(gè)pod1。

[root@k8scloude1 deploy]# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-7gh4z   1/1     Running   0          84s     10.244.251.240   k8scloude3   <none>           <none>
nginx-6cf858f6cf-7lmfd   1/1     Running   0          85s     10.244.251.238   k8scloude3   <none>           <none>
nginx-6cf858f6cf-86wxr   1/1     Running   0          6m14s   10.244.251.237   k8scloude3   <none>           <none>
nginx-6cf858f6cf-9bn2b   1/1     Running   0          85s     10.244.251.243   k8scloude3   <none>           <none>
nginx-6cf858f6cf-9njrj   1/1     Running   0          6m14s   10.244.251.236   k8scloude3   <none>           <none>
nginx-6cf858f6cf-bqk2w   1/1     Running   0          84s     10.244.251.241   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hchtb   1/1     Running   0          6m14s   10.244.251.234   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hjddp   1/1     Running   0          84s     10.244.251.244   k8scloude3   <none>           <none>
nginx-6cf858f6cf-pl7ww   1/1     Running   0          6m14s   10.244.251.235   k8scloude3   <none>           <none>
nginx-6cf858f6cf-sgxfg   1/1     Running   0          84s     10.244.251.242   k8scloude3   <none>           <none>
pod1                     1/1     Running   0          41m     10.244.251.216   k8scloude3   <none>           <none>

查看node節(jié)點(diǎn)狀態(tài)

[root@k8scloude1 deploy]# kubectl get nodes
NAME         STATUS                     ROLES                  AGE   VERSION
k8scloude1   Ready                      control-plane,master   8d    v1.21.0
k8scloude2   Ready,SchedulingDisabled   <none>                 8d    v1.21.0
k8scloude3   Ready                      <none>                 8d    v1.21.0

4.3 uncordon節(jié)點(diǎn)

要取消drain某個(gè)節(jié)點(diǎn),直接uncordon即可,沒(méi)有undrain操作。

[root@k8scloude1 deploy]# kubectl undrain k8scloude2
Error: unknown command "undrain" for "kubectl"
Did you mean this?
        drain
Run 'kubectl --help' for usage.

uncordon k8scloude2節(jié)點(diǎn),節(jié)點(diǎn)恢復(fù)調(diào)度

[root@k8scloude1 deploy]# kubectl uncordon k8scloude2
node/k8scloude2 uncordoned
[root@k8scloude1 deploy]# kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8scloude1   Ready    control-plane,master   8d    v1.21.0
k8scloude2   Ready    <none>                 8d    v1.21.0
k8scloude3   Ready    <none>                 8d    v1.21.0

把deploy副本數(shù)變?yōu)?,再變?yōu)?0,再觀察pod分布

[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=0
deployment.apps/nginx scaled
[root@k8scloude1 deploy]# kubectl get pods -o wide
NAME   READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
pod1   1/1     Running   0          52m   10.244.251.216   k8scloude3   <none>           <none>
[root@k8scloude1 deploy]# kubectl scale deploy nginx --replicas=10
deployment.apps/nginx scaled

k8scloude2節(jié)點(diǎn)恢復(fù)可調(diào)度pod狀態(tài)

[root@k8scloude1 deploy]# kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP               NODE         NOMINATED NODE   READINESS GATES
nginx-6cf858f6cf-4sqj8   1/1     Running   0          6s    10.244.112.172   k8scloude2   <none>           <none>
nginx-6cf858f6cf-cjqxv   1/1     Running   0          6s    10.244.112.176   k8scloude2   <none>           <none>
nginx-6cf858f6cf-fk69r   1/1     Running   0          6s    10.244.112.175   k8scloude2   <none>           <none>
nginx-6cf858f6cf-ghznd   1/1     Running   0          6s    10.244.112.173   k8scloude2   <none>           <none>
nginx-6cf858f6cf-hnxzs   1/1     Running   0          6s    10.244.251.246   k8scloude3   <none>           <none>
nginx-6cf858f6cf-hshnm   1/1     Running   0          6s    10.244.112.171   k8scloude2   <none>           <none>
nginx-6cf858f6cf-jb5sh   1/1     Running   0          6s    10.244.112.170   k8scloude2   <none>           <none>
nginx-6cf858f6cf-l9xlm   1/1     Running   0          6s    10.244.112.174   k8scloude2   <none>           <none>
nginx-6cf858f6cf-pgjlb   1/1     Running   0          6s    10.244.251.247   k8scloude3   <none>           <none>
nginx-6cf858f6cf-rlnh6   1/1     Running   0          6s    10.244.251.245   k8scloude3   <none>           <none>
pod1                     1/1     Running   0          52m   10.244.251.216   k8scloude3   <none>           <none>

刪除deploy,刪除pod。

[root@k8scloude1 deploy]# kubectl delete -f nginx.yaml 
deployment.apps "nginx" deleted
[root@k8scloude1 deploy]# kubectl delete pod pod1 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod1" force deleted
[root@k8scloude1 deploy]# kubectl get pods -o wide
No resources found in pod namespace.

五.delete 節(jié)點(diǎn)

5.1 delete節(jié)點(diǎn)概覽

delete 刪除節(jié)點(diǎn)就直接把一個(gè)節(jié)點(diǎn)就k8s集群中刪除了,delete 節(jié)點(diǎn)之前需要先drain 節(jié)點(diǎn)。

關(guān)于delete節(jié)點(diǎn)以及重裝節(jié)點(diǎn)的詳細(xì)內(nèi)容,請(qǐng)查看博客《模擬重裝Kubernetes(k8s)集群:刪除k8s集群然后重裝》

5.2 delete節(jié)點(diǎn)

kubectl drain 安全驅(qū)逐節(jié)點(diǎn)上面所有的 pod,--ignore-daemonsets往往需要指定的,這是因?yàn)閐eamonset會(huì)忽略SchedulingDisabled標(biāo)簽(使用kubectl drain時(shí)會(huì)自動(dòng)給節(jié)點(diǎn)打上不可調(diào)度SchedulingDisabled標(biāo)簽),因此deamonset控制器控制的pod被刪除后,可能馬上又在此節(jié)點(diǎn)上啟動(dòng)起來(lái),這樣就會(huì)成為死循環(huán)。因此這里忽略daemonset。

[root@k8scloude1 ~]# kubectl drain k8scloude3 --ignore-daemonsets 
node/k8scloude3 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-wmz4r, kube-system/kube-proxy-84gcx
evicting pod kube-system/calico-kube-controllers-6b9fbfff44-rl2mh
pod/calico-kube-controllers-6b9fbfff44-rl2mh evicted
node/k8scloude3 evicted

k8scloude3變?yōu)镾chedulingDisabled

[root@k8scloude1 ~]# kubectl get nodes 
NAME         STATUS                     ROLES                  AGE   VERSION
k8scloude1   Ready                      control-plane,master   64m   v1.21.0
k8scloude2   Ready                      <none>                 56m   v1.21.0
k8scloude3   Ready,SchedulingDisabled   <none>                 56m   v1.21.0

刪除節(jié)點(diǎn)k8scloude3

[root@k8scloude1 ~]# kubectl delete nodes k8scloude3
node "k8scloude3" deleted
[root@k8scloude1 ~]# kubectl get nodes 
NAME         STATUS   ROLES                  AGE   VERSION
k8scloude1   Ready    control-plane,master   65m   v1.21.0
k8scloude2   Ready    <none>                 57m   v1.21.0

以上就是cordon節(jié)點(diǎn)drain驅(qū)逐節(jié)點(diǎn)delete節(jié)點(diǎn)的詳細(xì)內(nèi)容,更多關(guān)于cordon drain delete節(jié)點(diǎn)詳解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 繼docker之后podman容器技術(shù)崛起

    繼docker之后podman容器技術(shù)崛起

    這篇文章主要為大家介紹了繼docker之后的podman云原生容器技術(shù)崛起的詳細(xì)介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • 詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    詳解Windows?利用?WSL2?安裝?Docker?的2種方式

    這篇文章主要介紹了Windows?利用?WSL2?安裝?Docker?的2種方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Docker鏡像加載原理

    Docker鏡像加載原理

    Docker鏡像是Docker容器運(yùn)行的基礎(chǔ),沒(méi)有Docker鏡像,就不可能有Docker容器,這也是Docker的設(shè)計(jì)原則之一 ,本文給大家介紹Docker鏡像加載原理,感興趣的朋友一起看看吧
    2021-06-06
  • Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊

    Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊

    今天小編就為大家分享一篇關(guān)于Docker容器間通訊直接路由方式實(shí)現(xiàn)網(wǎng)絡(luò)通訊,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Docker鏡像存儲(chǔ)overlayfs的使用

    Docker鏡像存儲(chǔ)overlayfs的使用

    這篇文章主要介紹了Docker鏡像存儲(chǔ)overlayfs的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 使用Docker快速部署Gitlab的方法

    使用Docker快速部署Gitlab的方法

    這篇文章主要介紹了使用Docker快速部署Gitlab的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Docker更換鏡像源詳細(xì)代碼教程

    Docker更換鏡像源詳細(xì)代碼教程

    Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,使用Go語(yǔ)言編寫(xiě),允許開(kāi)發(fā)者將應(yīng)用及依賴(lài)打包到輕量級(jí)容器中,可在不同Linux系統(tǒng)間移植,這篇文章主要給大家介紹了關(guān)于Docker更換鏡像源的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Docker完整卸載的兩種方法詳細(xì)教程

    Docker完整卸載的兩種方法詳細(xì)教程

    在使用Docker的過(guò)程中,有時(shí)我們需要卸載Docker以清理系統(tǒng)環(huán)境或進(jìn)行重新安裝,下面這篇文章主要給大家介紹了關(guān)于Docker完整卸載的兩種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 使用Docker部署Spring Boot的方法示例

    使用Docker部署Spring Boot的方法示例

    這篇文章主要介紹了使用Docker部署Spring Boot的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Docker學(xué)習(xí)之搭建ActiveMQ消息服務(wù)的方法步驟

    Docker學(xué)習(xí)之搭建ActiveMQ消息服務(wù)的方法步驟

    這篇文章主要介紹了Docker學(xué)習(xí)之搭建ActiveMQ消息服務(wù)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09

最新評(píng)論