[Cluster Setup and Hardening] Kubernetes 클러스터 업그레이드 가이드

IMKUNYOUNG·2024년 7월 5일
0

CKS

목록 보기
21/70

이번 글에서는 Kubernetes 클러스터 업그레이드 과정을 자세히 살펴보겠습니다.

Kubernetes 구성 요소의 버전 관리

Kubernetes의 구성 요소들은 각기 다른 릴리스 버전을 가질 수 있습니다. 중요한 점은 큐브 API 서버(kube-apiserver)가 ControlPlane의 주요 구성 요소로, 다른 구성 요소가 이와 통신한다는 점입니다. 따라서 다른 구성 요소는 kube-apiserver보다 높은 버전을 가져서는 안 됩니다. 각 구성 요소가 가질 수 있는 버전은 다음과 같습니다:

  • kube-controller-manager와 kube-scheduler: kube-apiserver보다 한 버전 낮을 수 있습니다.
  • kubelet과 kube-proxy: kube-apiserver보다 두 버전 낮을 수 있습니다.

예를 들어, kube-apiserver가 1.0.10 버전이라면:

  • kube-controller-manager와 kube-scheduler는 1.0.10 또는 1.0.9 버전을 가질 수 있습니다.
  • kubelet과 kube-proxy는 1.0.10 또는 1.0.9 또는 1.0.8 버전을 가질 수 있습니다.

하지만 kubectl 유틸리티는 예외입니다. kubectl은 kube-apiserver와 동일하거나 한 버전 낮거나 높은 버전을 가질 수 있습니다.

이러한 버전 간의 호환성 덕분에 Kubernetes 구성 요소를 단계적으로 업그레이드할 수 있습니다.

업그레이드 시기

업그레이드를 해야 할 시점은 최신 릴리스를 기준으로 판단할 수 있습니다. Kubernetes는 최근 3개의 마이너 버전만을 지원합니다. 예를 들어, 최신 릴리스가 1.0.12일 때 Kubernetes는 1.0.12, 1.0.11 및 1.0.10 버전을 지원합니다. 따라서 1.0.13이 릴리스되기 전에 클러스터를 다음 릴리스로 업그레이드하는 것이 좋습니다.

한 번에 여러 마이너 버전을 건너뛰어 업그레이드하는 것은 권장되지 않습니다. 예를 들어, 1.0.10에서 1.0.13으로 직접 업그레이드하지 않고 1.0.11, 1.0.12를 거쳐 업그레이드해야 합니다.

업그레이드 방법

Kubernetes 클러스터의 업그레이드 과정은 클러스터의 설정 방식에 따라 달라집니다.

1. 클라우드 서비스 제공업체 이용

Google Kubernetes Engine(GKE)과 같은 클라우드 서비스 제공업체를 이용하는 경우, 몇 번의 클릭만으로 쉽게 클러스터를 업그레이드할 수 있습니다.

2. 도구 이용

kubeadm과 같은 도구를 이용하여 클러스터를 배포한 경우, 도구를 통해 업그레이드 계획을 세울 수 있습니다.

3. 수동 업그레이드

클러스터를 처음부터 배포한 경우, 각 구성 요소를 직접 수동으로 업그레이드해야 합니다.

kubeadm을 사용한 업그레이드

단계 1: 마스터 노드 업그레이드

운영 중인 프로덕션 환경에서 사용자에게 서비스를 제공하는 포드를 호스팅하는 마스터 및 워커 노드가 있다고 가정해봅시다. 현재 노드와 구성 요소는 1.0.10 버전입니다.

  1. kubeadm 업그레이드 계획 확인:

    kubeadm upgrade plan
  2. kubeadm Tool 업그레이드:

    apt-get update && apt-get install -y kubeadm=1.0.12-00
  3. 클러스터 업그레이드:

    kubeadm upgrade apply v1.0.12
  4. kubelet 업그레이드:

    apt-get update && apt-get install -y kubelet=1.0.12-00
    systemctl restart kubelet

단계 2: 워커 노드 업그레이드

마스터 노드 업그레이드 후, 이제 워커 노드를 업그레이드해야 합니다. 워커 노드는 하나씩 업그레이드합니다.

  1. 첫 번째 워커 노드 드레인:

    kubectl drain <노드 이름> --ignore-daemonsets
  2. kubeadm 및 kubelet 업그레이드:

    apt-get update && apt-get install -y kubeadm=1.0.12-00 kubelet=1.0.12-00
    kubeadm upgrade node
    systemctl restart kubelet
  3. 노드 언코든:

    kubectl uncordon <노드 이름>

이 과정을 통해 마스터 및 워커 노드를 순차적으로 업그레이드하여 클러스터의 다운타임 없이 안전하게 업그레이드를 완료할 수 있습니다.

마무리

이번 글에서는 Kubernetes 클러스터 업그레이드 과정에 대해 알아보았습니다. 단계별로 마스터와 워커 노드를 업그레이드하는 방법과 이를 위해 kubeadm 도구를 사용하는 방법을 설명했습니다. Kubernetes 클러스터를 안전하게 유지하고 최신 기능을 사용하려면 정기적으로 클러스터를 업그레이드하는 것이 중요합니다.

0개의 댓글