노드를 Linux cgroupv2로 마이그레이션


버전 1.32부터 Google Kubernetes Engine(GKE)은 cgroupv1을 실행하는 클러스터를 cgroupv2로 마이그레이션합니다. 이 페이지에서는 다음을 수행하는 방법을 안내합니다.

  • 클러스터 노드가 실행 중인 cgroup 모드를 확인하고 워크로드가 cgroup 모드 간의 전환으로 인한 영향을 받지 않는지 확인합니다.
  • GKE Standard 클러스터 노드 풀을 cgroupv2로 마이그레이션합니다.
  • cgroupv1을 사용하는 노드 풀을 cgroupv2로 자동 마이그레이션하는 GKE를 일시 중지합니다. cgroup 모드 간 전환이 영향을 미칠 수 있는 워크로드가 클러스터에서 실행되는 경우 이 안내를 따릅니다.

Standard 노드 풀을 수동으로 마이그레이션하거나 일시 중지할 수 있습니다. Autopilot 클러스터를 마이그레이션하거나 일시 중지할 수 없습니다.

cgroupv2에서 워크로드가 예상한 대로 실행되거나 cgroup 모드 구성의 영향을 받지 않고 있음을 알고 있으면 이 페이지를 건너뛰어도 됩니다. GKE는 버전 1.32 이상을 사용하여 cgroupv1을 실행하는 클러스터를 cgroupv2로 자동 마이그레이션합니다.

Linux 통제 그룹 정보

kubelet 및 컨테이너 런타임은 포드의 각 컨테이너에서 액세스할 수 있는 CPU 또는 메모리 양을 제한하는 것과 같은 리소스 관리에 Linux 커널 통제 그룹(cgroup)을 사용합니다. 커널에는 cgroupv1cgroupv2 등 두 가지 cgroup 하위 시스템 모드가 있습니다. cgroupv2에 대한 Kubernetes 지원은 Kubernetes 버전 1.18에서 알파, 1.22에서 베타, 1.25에서 정식 버전으로 도입되었습니다. 자세한 내용은 Kubernetes cgroups v2 문서를 참조하세요.

Standard 클러스터의 cgroup 모드를 구성하는 방법에 대한 자세한 내용은 Linux cgroup 모드 구성 옵션을 참조하세요.

GKE에서 cgroupv2로 전환하는 방법

다음 타임라인을 검토하여 GKE에서 cgroupv2를 사용하도록 기존 클러스터를 전환하는 방법을 확인합니다.

  • 1.26 이전 버전에서는 cgroupv1이 노드 기본값이었습니다. 1.26 이상 버전에서는 cgroupv2가 새 노드의 기본값입니다. 기존 노드는 변경되지 않습니다. GKE 클러스터에서 기본적으로 실행하는 cgroup 모드에 대한 자세한 내용은 클러스터 노드의 cgroup 모드 확인을 참조하세요.
  • 부 버전 1.31부터 GKE에서 cgroupv1을 지원 중단합니다.
  • 버전 1.32부터 GKE에서 cgroupv1을 실행하는 클러스터를 cgroupv2로 마이그레이션합니다. 노드 풀에서 cgroupv1을 사용하도록 명시적으로 지정하여 이러한 자동 마이그레이션을 일시적으로 방지할 수 있습니다.
  • 부 버전 1.34에서 GKE는 cgroupv1을 지원하지 않습니다.

1.31 및 1.32와 같은 이후 부 버전으로 자동 업그레이드되는 대략적인 시점은 출시 채널의 예상 일정을 참조하세요.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

클러스터 노드의 cgroup 모드 확인

기본 cgroup 모드는 클러스터 또는 노드 풀의 유형과 버전에 따라 다릅니다. 버전 1.26 이상에서는 기본값이 cgroupv2입니다. 버전 1.25 이하에서는 기본값이 cgroupv1입니다.

  • Autopilot 클러스터와 노드 자동 프로비저닝으로 만든 새 Standard 클러스터 노드 풀의 경우 cgroup 모드는 초기 클러스터 버전을 기반으로 합니다.
  • 노드 자동 프로비저닝을 사용하지 않고 수동으로 만든 Standard 클러스터 노드 풀의 경우 cgroup 모드는 초기 노드 풀 버전을 기반으로 합니다.

cgroup 모드를 확인하려면 클러스터 모드에 따라 안내를 따르세요.

Autopilot

다음 명령어를 실행하고 CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

gcloud container clusters describe CLUSTER_NAME \
    --format='value(initialClusterVersion)'

GKE 버전 1.25 이하로 처음 생성된 GKE Autopilot 클러스터에서는 cgroupv1을 실행합니다. 버전 1.26 이상으로 처음 생성된 클러스터에서는 cgroupv2를 실행합니다.

Standard

GKE Standard 클러스터에서는 cgroup 모드가 노드 풀 수준에서 설정됩니다. 개별 노드 풀의 모드를 확인하려면 안내에 따라 cgroup 구성을 확인합니다. 클러스터의 노드에서 이미 cgroupv2를 사용하고 있으면 추가 작업이 필요 없습니다.

노드를 cgroupv2로 마이그레이션

GKE에서 버전 1.32 이상의 노드로 자동 마이그레이션하기 전에 기존 노드를 마이그레이션하는 것이 좋습니다. Standard 노드 풀을 수동으로 마이그레이션할 수 있습니다. Autopilot 클러스터를 마이그레이션할 수 없습니다.

cgroupv1을 실행하는 노드를 마이그레이션하려면 다음 단계를 수행합니다.

  1. 노드의 cgroup 모드를 확인합니다. 클러스터의 노드에서 이미 cgroupv2를 사용하고 있으면 추가 작업이 필요 없습니다.
  2. 마이그레이션 고려사항(cgroup v2로 마이그레이션)을 검토하여 워크로드가 새 버전의 API를 사용할 준비가 되었는지 확인합니다.
  3. 각 노드 풀의 노드 시스템 구성에 다음을 추가하여 Standard 클러스터의 노드를 마이그레이션합니다.

      linuxConfig:
      cgroupMode: 'CGROUP_MODE_V2'
    

cgroupv2로 자동 마이그레이션 일시 중지

Standard 노드 풀을 일시 중지할 수 있습니다. Autopilot 클러스터를 일시 중지할 수는 없습니다.

일시적으로 부 버전 1.32 이상에서 cgroupv1을 실행하는 Standard 클러스터 노드 풀이 cgroupv2로 자동 마이그레이션되지 않게 하려면 cgroupv1을 명시적으로 설정해야 합니다.

기존 Standard 노드 풀의 경우 각 노드 풀의 노드 시스템 구성에 다음을 추가합니다.

linuxConfig:
  cgroupMode: 'CGROUP_MODE_V1'

자세한 내용은 노드 시스템 구성 맞춤설정을 참조하세요.