Kubernetes의 관리 방법에 대해 짧게 알고가자.


1. 소개

Kubernetes의 관리 방법은 어떨까?


2. 쿠버네티스 대시보드 활용

2.1. 소개

보통 쿠버네티스는 kubectl로 관리하게 되는데 UI 기반의 대시보르를 사용할 수도 있다.

2.2. 설치

기본적으로 제공(배포)되지는 않는다. 설치방법은 공식문서(https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/)를 참고하면 된다. 대시보드를 띄우고 나면 브라우저를 통해 접속 가능하다.

2.3. 기능

기본적인 자원에 대한 모니터링, 오브젝트 생성, 로그 확인 등이 가능하다.

2.4. 주의

편리한 기능을 제공하는만큼 보안에 유의하여 사용해야 한다.


3. 쿠버네티스 업그레이드

쿠버네티스 버전체계는 다음과 같다.

v1.15.1

차례대로 MAJOR, MINOR, PATCH 이다.

현재 노드의 버전은 kubectl get node 커맨드 또는 kubeadm version 커맨드를 통해 확인한다.

순서는 컨트롤 플레인 노드 업그레이드 -> 워커 노드 업그레이드 순이다.

버전(메이저 버전)은 한단계씩 올린다.

3.1. 컨트롤 플레인 노드 업그레이드

한번에 한 노드씩 진행한다.

3.1.1. kubeadm upgrade 

최초 노드의 경우는
1) sudo kubeadm uprgade plan 커맨드를 통해 kubeadm 업그레이드 플랜을 확인한다.
2) 업그레이드 버전을 선택하고 sudo kubeadm upgrade apply v1.22.x 등 커맨드를 실행한다.
3) 커맨드 실행 결과 SUCCESS인지 확인한다.
4) CNI 제공자 플러그인을 수동으로 업그레이드한다.

다른 노드의 경우는
1) sudo kubeadm upgrade apply가 아닌 sudo kubeadm upgrade node 커맨드를 사용한다.

3.1.2. 노드 드레인

kubectl drain <드레인노드> --ignore-daemonsets 등의 커맨드를 사용한다. 예를 들면 kubectl drain master --ignore-daemonsets 이다.

3.1.3. kubelet, kubectl 업그레이드

모든 컨트롤 노드에서 kubelet과 kubectl을 업그레이드하고 kubectl을 재기동한다.

3.1.4. 노드 uncordon

kubectl uncordon <드레인노드> 커맨드를 통해 노드를 schedulable 으로 표시하여 다시 온라인 상태로 전환한다.

3.2. 워커 노드 업그레이드

3.2.1. kubeadm 업그레이드

모든 워커 노드에서 kubeadm을 업그레이드한다.

3.2.2. kubeadm upgrade

sudo kubeadm upgrade node 커맨드를 통해 로컬 kubelet 구성을 업그레이드한다.

3.2.3. 노드 드레인

kubectl drain <드레인노드> --ignore-daemonsets 등의 커맨드를 사용하여 unschedule 상태로 표시하고 워크로드를 제거하여 유지보수할 준비를 맞는다.

3.2.4. kubelet, kubectl 업그레이드

모든 컨트롤 노드에서 kubelet과 kubectl을 업그레이드하고 kubectl을 재기동한다.

3.2.5. 노드 uncodron

kubectl uncordon <드레인노드> 커맨드를 통해 노드를 schedulable 으로 표시하여 다시 온라인 상태로 전환한다.

3.3. 클러스터 상태 확인

kubectl get nodes 커맨드를 통해 모든 노드가 사용 가능한지 확인한다. STATUS가 Ready여야 한다. 


4. 문제 확인

kubectl get nodes -o wide 커맨드를 통해 노드 상태를 확인하고 STATUS에 NotReady가 있는지 확인한다.

노드 상태를 더 자세히 확인하려면 kubectl describe node <노드명> | grep Conditions -A 10 -B 6 등의 커맨드로 확인한다.