• https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/
intro
- 운영체제 업그레이드에 대해 살펴본다.
- 클러스터에서 노드를 잃는 것의 의미를 보자.
- os에 패치, 업그레이드 적용하는 것과 같은 목적
- 클러스터 업그레이드 프로세스를 살펴보자.
- 쿠버네티스 릴리즈 및 버전에 대해 알아보자.
- 업그레이드에 대한 모범 사례, 업그레이드 시기, 업그레이드 버전을 알아보자.
- 백업, 복원 방법을 알아보자.
117. OS upgrade
- 클러스터의 소프트웨어 업그레이드, 보안 패치 등의 유지관리를 위해 일부 노드를 중단해야하는 시나리오에 대해 논의해보자.
- 노드 2가 다운됨.
- 파랑 pod 는 옆 노드에 있으므로, 사용자가 서비스 이용하는 것에 문제가 없다.
- 하지만 초록 Pod 는 유일하므로 영향을 받는다.
- 여기서 5분 이내로 노드2가 온라인 상태가 되면, kubectl 프로세스가 시작되고 pod 가 다시 돌아온다.
- 하지만, 노드가 5분 이상 중단되는 경우, 해당 노드에서 pod 가 종료된다. = k8s 가 그들을 죽은 것으로 간주
노드가 5분 이상 다운되는 경우, 해당 노드에서 파드가 종료된다.
- 파드가 replicaset 의 일부인 경우, 다른 노드에서 다시 생성된다.
- 파드가 다시 온라인 상태가 될 때까지 기다리는 시간
pod eviction timeout
은 컨트롤러 관리자에서 기본값 5분으로 설정된다.
- 파드 제거 시간 초과 후 , 노드가 온라인 상태가 되면 , 예약된 파드 없이 비어있게 된다.
- 따라서 노드에 수행할 유지 관리 작업이 있고, 노드에서 실행 중인 워크로드에 다른 복제본이 있다는 것을 알고 있고, 짧은 시간 동안 다운돼도 괜찮고, 노드가 올 것이라고 확신하는 경우 5분 이내 다시 온라인 상태가 되면, 빠르게 업그레이드하고 재부팅할 수 있다. 그러나, 노드가 5분 이내에 다시 온라인이 될 지 확실치 않다.
drain
명령어를 이용해 의도적으로 한 노드에 있는 모든 워크로드들을 다른 노드로 이동시킬 수 있다.
- 기술적으로 그들은 움직이지 않는다. 노드를 비우면, 파드가 있는 노드에서 정상적으로 종료되고, 다른 노드에 다시 생성된다.
kubectl drain node-1
- 또한 노드는 스케줄링 불가능한 것으로 mark, cordoned된다.
- 유지 관리 후 노드가 다시 온라인 상태가 되면 여전히 스케줄링할 수 없다.그리고 나서 당신은 그것을 uncordorn할 필요가 있다.
kubectl uncordorn node-1
cordorn
만 하는 경우, 단순히 스케줄링 불가로 마크 된다. drain
과 달리, 해당 노드에 현존하는 파드들의 이동이나 종결이 일어나지 않는다.
kubectl cordorn node-1
120. K8S SOFTWARE VERSIONS
- 쿠버네티스 릴리즈와 버전에 대해 공부해보자.
- 우리가 설치한 k8s 버전은 노드만 봐도 알 수 있다.
버전 number 에 대해 상세히 보자.