
kubectl get no
kubectl get nodes
[root@MASTER-01 ~]# kubectl get no NAME STATUS ROLES AGE VERSION master-01 Ready control-plane 36h v1.35.1 worker-01 Ready <none> 33h v1.35.1 worker-02 Ready <none> 23h v1.35.1
kubectl get po -A
[root@MASTER-01 sources]# kubectl get po -A NAMESPACE NAME READY STATUS kube-system calico-kube-controllers-9dff488b-6kbvv 1/1 Running kube-system calico-node-dff24 1/1 Running kube-system calico-node-pbjmj 1/1 Running kube-system coredns-7d764666f9-pwjgn 1/1 Running kube-system coredns-7d764666f9-qrqvv 1/1 Running kube-system etcd-master-01 1/1 Running kube-system kube-apiserver-master-01 1/1 Running kube-system kube-controller-manager-master-01 1/1 Running kube-system kube-proxy-v6zgz 1/1 Running kube-system kube-proxy-xp7vx 1/1 Running kube-system kube-scheduler-master-01 1/1 Running
kubectl get po -A -o wide
[root@MASTER-01 ~]# kubectl get po -A -o wide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system calico-kube-controllers-9dff488b-6kbvv 1/1 Running 0 31h 10.98.184.65 master-01 <none> <none> kube-system calico-node-dff24 1/1 Running 1 (31h ago) 31h 192.168.65.13 master-01 <none> <none> kube-system calico-node-j4qrn 1/1 Running 0 23h 192.168.65.15 worker-02 <none> <none> kube-system calico-node-pbjmj 1/1 Running 0 31h 192.168.65.14 worker-01 <none> <none> kube-system coredns-7d764666f9-pwjgn 1/1 Running 0 36h 10.98.184.66 master-01 <none> <none> kube-system coredns-7d764666f9-qrqvv 1/1 Running 0 36h 10.98.184.67 master-01 <none> <none> kube-system etcd-master-01 1/1 Running 0 36h 192.168.65.13 master-01 <none> <none> kube-system kube-apiserver-master-01 1/1 Running 2 (31h ago) 36h 192.168.65.13 master-01 <none> <none> kube-system kube-controller-manager-master-01 1/1 Running 5 (26h ago) 36h 192.168.65.13 master-01 <none> <none> kube-system kube-proxy-q9k4t 1/1 Running 0 23h 192.168.65.15 worker-02 <none> <none> kube-system kube-proxy-v6zgz 1/1 Running 0 33h 192.168.65.14 worker-01 <none> <none> kube-system kube-proxy-xp7vx 1/1 Running 0 36h 192.168.65.13 master-01 <none> <none> kube-system kube-scheduler-master-01 1/1 Running 4 (26h ago) 36h 192.168.65.13 master-01 <none> <none> kube-system metrics-server-d6484c959-9rjfx 1/1 Running 0 22h 10.100.171.6 worker-01 <none> <none> kube-system metrics-server-d6484c959-vwxx2 1/1 Running 0 22h 10.103.204.65 worker-02 <none> <none> time-app time-exporter 2/2 Running 0 26h 10.100.171.1 worker-01 <none> <none>
kubectl describe po -n [namespace] [PodName]
[root@MASTER-01 ~]# kubectl describe po -n kube-system calico-node-dff24 Name: calico-node-dff24 Namespace: kube-system Priority: 2000001000 Priority Class Name: system-node-critical Service Account: calico-node Node: master-01/192.168.65.13 Start Time: Wed, 25 Feb 2026 20:02:04 -0500 Labels: controller-revision-hash=b69b5fdf4 k8s-app=calico-node pod-template-generation=1 Annotations: <none> Status: Running SeccompProfile: RuntimeDefault IP: 192.168.65.13 IPs: IP: 192.168.65.13 Controlled By: DaemonSet/calico-node Init Containers: upgrade-ipam: Container ID: containerd://255fac1cfc55a2c0cf5c9a2ee0e58bbe6451473e226cea866cabaef75deeacd2 Image: quay.io/calico/cni:v3.31.4 Image ID: quay.io/calico/cni@sha256:210055d9682571ee5d6f724d774b54ef524ba7da51379abb6adc73b93eccd07f Port: <none> Host Port: <none> Command: /opt/cni/bin/calico-ipam -upgrade State: Terminated Reason: Completed Exit Code: 0 Started: Wed, 25 Feb 2026 20:04:46 -0500 ...
kubectl apply -f mymanifest.yaml
kubectl drain [NodeName] --ignore-daemonsets
[root@MASTER-01 ~]# kubectl drain worker-02 --ignore-daemonsets ... [root@MASTER-01 ~]# kubectl get no NAME STATUS ROLES AGE VERSION master-01 Ready control-plane 44h v1.35.1 worker-01 Ready <none> 41h v1.35.1 worker-02 Ready,SchedulingDisabled <none> 31h v1.35.1
drain: تخلیه، تخلیه کردن
این دستور سبب می شود که نود مربوطه unschedulable شود یعنی پاد جدید روی آن اجرا نمی شود.
پادهایی که روی نود اجرا می شوند را می توان به دو دسته تقسیم بندی کرد؛ دسته اول پادهای سیستمی کوبرنتیز هستند که مختص همان نود می باشند و دسته دوم سایر پادها هستند که مربوط به برنامه های اجرایی هستند.
با اجرای دستور drain، پادهای دسته دوم روی نود حذف شده و روی نود دیگری مجددا ایجاد می شوند. پارامتر ignore-daemonsets هم می گوید که دسته اول حذف شود و به آنها نیاز نیست. اگر این پارامتر وارد نشود، اجرای دستور drain با خطا (هشدار) مواجه می شود.
*توجه داشته باشید که اجرای دستور drain، نود را حذف نمی کند فقط آن را تخلیه می کند. از این دستور زمانی استفاده می کنیم که بخواهیم آن نود را از لحاظ سخت افزاری یا نرم افزاری ارتقا بدهیم یا تعمیر کنیم.
برای حذف یک نود از کلاستر، مراحل زیر را به ترتیب باید انجام دهیم.
1.ابتدا با اجرای دستور زیر در control-plane، آن نود را تخلیه می کنیم:
kubectl drain [NodeName] --ignore-daemonsets
2.با اجرای دستور زیر در نود مورد نظر، عضویت آن را در کلاستر لغو می کنیم:
kubeadm reset
[root@WORKER-02 ~]# kubeadm reset W0227 12:35:48.438671 697028 preflight.go:55] [reset] WARNING: Changes made to this host by 'kubeadm init' or 'kubeadm join' will be reverted. [reset] Are you sure you want to proceed? [y/N]: y [preflight] Running pre-flight checks W0227 12:36:02.923635 697028 removeetcdmember.go:105] [reset] No kubeadm config, using etcd pod spec to get data directory [reset] Deleted contents of the etcd data directory: /var/lib/etcd [reset] Stopping the kubelet service [reset] Unmounting mounted directories in "/var/lib/kubelet" [reset] Deleting contents of directories: [/etc/kubernetes/manifests /var/lib/kubelet /etc/kubernetes/pki] [reset] Deleting files: [/etc/kubernetes/admin.conf /etc/kubernetes/super-admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf] The reset process does not perform cleanup of CNI plugin configuration, network filtering rules and kubeconfig files. For information on how to perform this cleanup manually, please see: https://k8s.io/docs/reference/setup-tools/kubeadm/kubeadm-reset/
[root@MASTER-01 ~]# kubectl get no NAME STATUS ROLES AGE VERSION master-01 Ready control-plane 45h v1.35.1 worker-01 Ready <none> 41h v1.35.1 worker-02 NotReady,SchedulingDisabled <none> 31h v1.35.1
3.با اجرای دستور زیر در control-plane، آن نود را از کلاستر حذف می کنیم:
kubectl delete no [NodeName]
[root@MASTER-01 ~]# kubectl delete no worker-02 node "worker-02" deleted [root@MASTER-01 ~]# kubectl get no NAME STATUS ROLES AGE VERSION master-01 Ready control-plane 45h v1.35.1 worker-01 Ready <none> 42h v1.35.1
kubeadm token delete [TokenName]
[root@MASTER-01 ~]# kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS bfuf4z.h3n9ec80ukmxqo4s 23h 2026-02-28T17:58:55Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token [root@MASTER-01 ~]# kubeadm token delete bfuf4z.h3n9ec80ukmxqo4s bootstrap token "bfuf4z" deleted
kubeadm token create --print-join-command
مشاهده لیست نودها به همراه label های هر کدام:
kubectl get no --show-labels
افزودن Role به یک نود:
kubectl label no [NodeName] node-role.kubernetes.io/[RoleName]=
حذف Role از یک نود:
kubectl label no [NodeName] node-role.kubernetes.io/[RoleName]-
[root@MASTER-01 ~]# kubectl get no --show-labels NAME STATUS ROLES AGE VERSION LABELS master-01 Ready control-plane 2d v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master-01,kubernetes.io/os=linux,node-role.kubernet es.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers= worker-01 Ready <none> 45h v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-01,kubernetes.io/os=linux worker-02 Ready <none> 16m v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-02,kubernetes.io/os=linux
[root@MASTER-01 ~]# kubectl label no worker-01 node-role.kubernetes.io/worker= node/worker-01 labeled
[root@MASTER-01 ~]# kubectl get no --show-labels NAME STATUS ROLES AGE VERSION LABELS master-01 Ready control-plane 2d v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master-01,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers= worker-01 Ready worker 45h v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-01,kubernetes.io/os=linux,node-role.kubernetes.io/worker= worker-02 Ready <none> 17m v1.35.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker-02,kubernetes.io/os=linux
روی نودی که مشکل دارد دستور زیر را اجرا می کنیم:
iptables -F; systemctl restart containerd; systemctl restart kubelet;