Post

쿠버네티스 클러스터 관리


클러스터 업그레이드

클러스터 업그레이드 시 업그레이드 대상인 노드는 일시적으로 이용 불가능할 수 있으며 해당 노드에서 동작하고 있는 기존 파드의 관리가 필요하다.

소프트웨어 버전 관리 관례: v{major}.{minor}.{patch}

  1. Major: 보통 API 호환성에 영향이 있는 경우 발생하는 버전
  2. Minor: 기능 추가, API 호환이 되는 변경이 있는 경우 발생하는 버전
  3. Patch: 버그 수정이나 성능 개선과 같이 소규모 변경이 있는 경우 발생하는 버전

컨트롤 플레인 구성요소들은 각각의 버전간 호환성이 관리되는 규칙이 있고 kube-apiserver를 기준으로 다음과 같이 관리된다.

  1. kube-apiserver = X
  2. X >= Controller-manager, kube-scheduler >= X-1
  3. X >= kubelet, kube-proxy >= X-2
  4. X+1 >= kubectl >= X-1
  5. etcd는 저장소이므로 독립적으로 관리된다. 권장되는 업그레이드 주기는 하나의 마이너 버전씩 업그레이드하는 것이다.
  • 업그레이드 절차
    1. 마스터 노드 업그레이드
    2. 워커 노드 업그레이드
      • 전략
      1. 일괄 업그레이드: 모든 노드를 한번에 업그레이드
      2. 순차 업그레이드: 기존 노드들을 하나씩 순차적으로 업그레이드
      3. 롤링 업그레이드: 새로운 노드를 추가하고 기존 노드를 제거

클러스터 관리 도구인 kubeadm을 이용하면 업그레이드를 포함한 클러스터 관리를 비교적 쉽게 할 수 있다.


노드 관리 명령어

  • drain: 해당 노드에 존재하는 파드들을 내리고 다른 노드에 배치하며 스케줄링할 수 없는 상태로 변경한다.
  • cordon: 해당 노드를 스케줄링할 수 없는 상태로 변경한다.
  • uncordon: 해당 노드를 스케줄링할 수 있는 상태로 변경한다.


클러스터 백업

크게 리소스 설정, etcd, PV가 백업 대상으로 볼 수 있다.


리소스 설정

  • 백업 방법
    1. git을 통한 형상 관리 도구를 이용하여 백업
    2. kube-apiserver에 모든 리소스 정보를 요청하여 파일 형태로 백업
    3. 백업 솔루션 도입


etcd

  • 백업 방법
    1. etcd 데이터가 저장되는 디렉토리를 백업
    2. etcdctl을 이용하여 snapshot 파일 백업
This post is licensed under CC BY 4.0 by the author.