[Kubernetes] Node 상태 확인
kubectl get node, kubectl top nodes로 Kubernetes 노드 상태와 사용량을 확인하고 cordon, uncordon, drain으로 노드 스케줄링을 관리하는 방법을 정리합니다.
요약
kubectl get node -o wide로 노드 상태, 버전, OS 이미지, 커널, 컨테이너 런타임까지 확인할 수 있습니다.kubectl top nodes로 노드별 CPU와 메모리 사용량을 볼 수 있습니다.kubectl cordon과uncordon으로 노드 스케줄 가능 여부를 바꾸고,kubectl drain으로 유지보수 전에 노드를 비웁니다.
테스트 환경 k3s v1.18.8+k3s1, CentOS Linux 7 (Core), containerd 1.3.3-k3s2
목차
- Build APP - Container image
- Deploy APP
- Check APP
- Expose APP
- Scale APP
- Update APP
Check The Node
이 문서는 Kubernetes Node 를 확인하는 방법에 대해 포함되어 있습니다.
Kubernetes Node
Kubernetes Node 는 최소한 다음과 같이 동작합니다.
- Kubelet은, 쿠버네티스 마스터와 노드 간 통신을 책임지는 프로세스이며, 하나의 머신 상에서 동작하는 파드와 컨테이너를 관리합니다.
- (도커, rkt)와 같은 컨테이너 런타임은 레지스트리에서 컨테이너 이미지를 가져와 묶여 있는 것을 풀고 애플리케이션을 동작시키는 책임을 맡습니다.
Check Kubernetes Node
- Node 정보 확인
$ kubectl get node NAME STATUS ROLES AGE VERSION fastvm-centos-7-7-110 Ready master 16d v1.18.8+k3s1 - Node 상세 정보 확인
$ kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME fastvm-centos-7-7-110 Ready master 16d v1.18.8+k3s1 192.168.200.110 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 containerd://1.3.3-k3s2 - Node 성능 사용량 확인
$ kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% fastvm-centos-7-7-110 127m 6% 573Mi 66%
Node Management
- Node Schedule 관련
$ kubectl --help ... cordon Mark node as unschedulable uncordon Mark node as schedulable drain Drain node in preparation for maintenance ... - Mark node as unschedulable
$ kubectl cordon <node> - Mark node as schedulable
$ kubectl uncordon <node> - Drain node in preparation for maintenance
$ kubectl drain <node>
참고 문서
- https://github.com/chhanz/kubernetes-hands-on-lab
- https://github.com/chhanz/kubernetes-hands-on-lab/blob/master/doc/check-the-node.md
자주 묻는 질문
kubectl cordon과 drain의 차이는 무엇인가요?
kubectl cordon은 노드를 스케줄 불가(unschedulable)로 표시만 하고, kubectl drain은 유지보수를 위해 노드를 drain합니다. 다시 스케줄을 허용하려면 kubectl uncordon을 사용합니다.
노드의 컨테이너 런타임과 커널 버전은 어떻게 확인하나요?
kubectl get node -o wide를 실행하면 OS-IMAGE, KERNEL-VERSION, CONTAINER-RUNTIME 열이 함께 표시됩니다.
Kubernetes 노드에서 Kubelet은 어떤 역할을 하나요?
Kubelet은 쿠버네티스 마스터와 노드 간 통신을 책임지는 프로세스이며, 해당 머신에서 동작하는 Pod와 컨테이너를 관리합니다.