쿠버네티스 1.29.0 -> 1.30.0 업그레이드시 개념 정리 및 내가 궁금했던 사항들을 정리한다.
/etc/apt/sources.list.d/kubernetes.list
쿠버네티스 apt 레포지토리 파일
해당 레포지토리에 minor release 로 변경하여 사용할 수 있다.
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/
->
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/
kubectl drain controlplane --ignore-daemonsets
위 명령어는 k8s 클러스터에서 특정 node를 비우기 위해 사용됨. 위와 같은 경우 controlplane 노드가 비워짐
kubectl : k8s 클러스터와 상호 작용하기 위한 명령줄 도구
drain : 지정된 노드에서 모든 pod를 안전하게 종료하고 해당 노드를 비우는 명령어, 유지보수하거나 업그레이드시 유용
--ignore-daemonsets : drain 작업시 daemonsets pod를 무시하게 만듦
daemonsets pod는 각 node에 하나씩 배포되며, 일반적으로 노드의 로깅, 모니터링, 시스템 관리 등을 작업수행하게됨.
그래서 Daemonsets pod를 종료하지 않고 나머지 pod만 종료하게끔 설정하는 것
--ignore-daemonsets: 해당 작업을 하지 않고 drain 하게되면 어떠한 문제가 발생할까?
DaemonSet 포드 종료의 영향
- 모니터링 및 로깅 중단:
- DaemonSet 포드 중에는 클러스터 모니터링, 로깅, 네트워크 플러그인 등이 포함되어 있습니다. 이 포드들이 종료되면 클러스터 모니터링 및 로그 수집이 중단되어, 업그레이드 중 발생하는 문제를 실시간으로 감지하기 어려울 수 있습니다.
- 네트워크 관리:
- 일부 DaemonSet 포드는 네트워크 플러그인으로서 클러스터 네트워크를 관리합니다. 이들이 종료되면 클러스터 네트워크 설정에 문제가 발생할 수 있으며, 네트워크 연결이 끊길 수 있습니다.
- 중요 시스템 기능 중단:
- DaemonSet 포드가 제공하는 중요한 시스템 기능들이 중단될 수 있습니다. 예를 들어, 보안 관련 DaemonSet 포드가 종료되면 업그레이드 중 보안이 약화될 수 있습니다.
업그레이드 시 문제
- 안정성 문제:
- DaemonSet 포드가 종료되면 클러스터의 안정성이 저하될 수 있습니다. 이는 업그레이드 작업 중 예기치 않은 문제를 발생시킬 가능성을 높입니다.
- 자동 재시작의 부재:
- DaemonSet 포드는 노드가 비워질 때 자동으로 다른 노드로 이동하지 않습니다. 이는 업그레이드 후 DaemonSet 포드가 다시 배포되기 전까지 클러스터의 일부 기능이 정상적으로 작동하지 않을 수 있음을 의미합니다.
DaemonSet 포드의 주요 기능
- 로깅 및 모니터링:
- 기능: 클러스터의 로그 수집과 모니터링을 담당하는 포드를 각 노드에 배포합니다.
- 예시: Fluentd, Prometheus Node Exporter.
- 중요성: 클러스터의 상태와 성능을 실시간으로 모니터링하고 로그를 수집하여 문제를 빠르게 감지하고 해결할 수 있습니다.
- 네트워크 플러그인:
- 기능: 클러스터 네트워크 설정을 관리하고, 네트워크 연결을 유지하는 포드를 각 노드에 배포합니다.
- 예시: Calico, Flannel, Weave.
- 중요성: 네트워크 통신이 원활하게 이루어지도록 하며, 각 노드 간의 연결을 유지합니다. 네트워크 설정이 중단되면 클러스터 전체의 네트워크 기능이 영향을 받을 수 있습니다.
- 시스템 관리:
- 기능: 노드의 시스템 자원을 관리하고, 특정 시스템 작업을 수행하는 포드를 각 노드에 배포합니다.
- 예시: Node Problem Detector, Kube-state-metrics.
- 중요성: 노드의 상태를 모니터링하고, 자원 사용량을 관리하여 클러스터의 안정성과 효율성을 유지합니다.
- 보안 관리:
- 기능: 클러스터 보안을 관리하고, 보안 관련 작업을 수행하는 포드를 각 노드에 배포합니다.
- 예시: Falco (보안 이벤트 감지), Istio (서비스 메쉬 보안).
- 중요성: 클러스터의 보안을 강화하고, 보안 위협을 실시간으로 감지하여 대응할 수 있습니다.
중요성
- 가용성 및 안정성:
- DaemonSet 포드는 클러스터의 중요한 시스템 기능을 담당하므로, 이들이 정상적으로 동작하지 않으면 클러스터 전체의 가용성과 안정성이 저하될 수 있습니다.
- 중앙 집중식 관리:
- 각 노드에 동일한 기능을 배포함으로써, 중앙 집중식으로 클러스터의 모든 노드를 관리할 수 있습니다. 이는 일관된 모니터링, 로깅, 보안 관리를 가능하게 합니다.
- 실시간 모니터링 및 대응:
- 실시간으로 각 노드의 상태를 모니터링하고, 문제가 발생하면 즉시 대응할 수 있도록 합니다. 이는 클러스터 운영의 효율성을 높이고, 장애 발생 시 신속한 복구를 가능하게 합니다.
- 자동화된 작업 수행:
- 반복적인 관리 작업을 자동화하여 운영의 편의성을 높이고, 수작업으로 인한 오류를 줄일 수 있습니다.
apt-cache madison kubeadm
kubeadm 패키지의 가용한 버전을 조회함, 특정 버전으로 업그레이드시 유용하다.
해당 명령어는 조회지 설치가 아니기때문에 원하는 버전을 설치할 경우
apt-get install kubeadm=1.30.0-1.1 처럼 설치 명령어를사용해야한다.
Taint란?
특정 노드에 포드를 스케줄링을 할 수 있는지 여부를 제어하는 메커니즘
특정 노드에 taint를 설정하면 'taint'와 일치하는 'toleration'을 가진 pod만 해당 노드에 스케줄링될 수 있다.
이를 통해 클러스터 관리자는 특정 노드에 특정 포드만 스케줄링되도록 제한할 수 있다.
- 키 (Key): taint의 이름을 정의합니다.
- 값 (Value): taint의 값을 정의합니다.
- 효과 (Effect): taint가 적용되는 방식을 정의합니다. 주요 효과는 다음과 같습니다:
- NoSchedule: toleration이 없는 포드는 해당 노드에 스케줄링되지 않습니다.
- PreferNoSchedule: toleration이 없는 포드는 가능하면 해당 노드에 스케줄링되지 않습니다.
- NoExecute: toleration이 없는 포드는 이미 해당 노드에 실행 중인 경우에도 종료됩니다.
'Kubernetes > CKA' 카테고리의 다른 글
CKA 문제 업데이트 공지 // 2024년 11월 25일 이후 (0) | 2024.09.10 |
---|---|
CKA 자격증 취득 후기 (1) | 2024.09.10 |
Static Pod는 왜 namespace 지정이 안될까? (2) | 2024.08.20 |
emptyDir 이해 (0) | 2024.08.11 |
Cluster Upgrade Process (1) | 2024.07.15 |