VPC 기반 클러스터를 GKE Dataplane V2로 마이그레이션

이 문서를 사용하여 기존 Google Kubernetes Engine (GKE) VPC 기반 클러스터를 Dataplane V1에서 GKE Dataplane V2로 마이그레이션하고, 마이그레이션을 모니터링하고, 필요한 경우 롤백하세요.

이 문서는 GKE 클러스터의 네트워크 구성을 관리하는 플랫폼 관리자 및 운영자와 네트워킹 전문가를 대상으로 합니다.

시작하기 전에 각 마이그레이션 단계에서 발생하는 작업과 GKE Dataplane V2로 마이그레이션 정보 에서 워크로드 중단을 계획하는 방법을 알아보세요.

시작하기 전에

마이그레이션을 시작하기 전에 클러스터가 자격 요건을 충족하는지 확인하고 워크로드에 미치는 영향을 고려하세요.

클러스터가 다음 요구사항을 충족하는지 확인합니다.

  • 클러스터는 VPC 기반 클러스터입니다.
  • 클러스터가 버전 1.35.3-gke.1155000 이상을 실행합니다.
  • 노드 풀이 버전 1.35.1-gke.1516000 이상을 실행합니다.
  • Cloud Service Mesh 또는 오픈소스 Istio를 사용하는 경우 Istio 버전은 1.23 이상입니다.

클러스터 준비

마이그레이션을 시작하기 전에 다음 작업을 완료하세요.

  • NetworkPolicy 삭제: 기존 네트워크 정책을 삭제합니다. GKE가 노드를 다시 만들 때 네트워크 정책을 갑자기 적용하면 의도치 않은 네트워크 중단이 발생할 수 있습니다.
  • Calico 네트워크 정책: 네트워크 정책 (Calico)이 사용 설정된 GKE Standard 클러스터를 사용하는 경우 네트워크 정책 시행을 사용 중지합니다. 이러한 클러스터는 직접 마이그레이션할 수 없습니다.
  • Active Assist 권장사항: Active Assist 또는 클러스터 세부정보 페이지에서 마이그레이션과 충돌할 수 있는 권장사항을 확인합니다.
  • IP 주소 용량: 클러스터의 포드 IP 주소 범위에 노드 풀 업그레이드 전략을 위한 충분한 용량이 있는지 확인합니다. 자세한 내용은 GKE IP 주소 사용률 통계를 참조하세요.
    • 네트워킹 기능: 마이그레이션을 시작하기 전 또는 마이그레이션이 완료된 후에 NodeLocal DNSCache 또는 노드 내 가시성과 같은 네트워킹 기능을 사용 설정합니다. 마이그레이션 중에는 사용 설정할 수 없습니다.

제한사항 이해

  • 잠긴 네트워킹 구성: 마이그레이션을 시작한 후에는 마이그레이션이 완료될 때까지 클러스터 전체 네트워킹 구성을 변경할 수 없습니다.
  • 유지보수 기간: 마이그레이션은 유지보수 기간 및 유지보수 제외를 따르므로 중단된 것처럼 보일 수 있습니다. 속도를 높이려면 노드 풀을 수동으로 패치하면 됩니다. 단계는 마이그레이션 가속화를 참조하세요.
  • 선택적 GKE Dataplane V2 기능: 마이그레이션이 완료된 후 GKE Dataplane V2 관측 가능성 또는 포드의 다중 네트워크 지원과 같은 선택적 GKE Dataplane V2 기능을 구성합니다.
  • Terraform: Terraform을 사용하여 GKE Dataplane V2로 마이그레이션할 수 없습니다.

마이그레이션 시작

마이그레이션을 수동으로 시작하고 자동 진단 검사를 우회하려면 Google Cloud CLI를 사용하여 클러스터를 패치하면 됩니다.

다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --enable-dataplane-v2

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • LOCATION: 클러스터의 컴퓨팅 위치입니다.

마이그레이션 진행 상황 관찰

datapathProvider 필드를 확인하여 마이그레이션 상태를 모니터링할 수 있습니다. 전환 중에 이 필드에는 MIGRATE_TO_ADVANCED_DATAPATH가 표시됩니다.

  1. 클러스터 상태를 확인합니다.

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(networkConfig.datapathProvider)'
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • LOCATION: 클러스터의 컴퓨팅 위치입니다.
  2. 노드 풀 상태를 확인합니다.

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=LOCATION \
        --format='value(name, networkConfig.datapathProvider)'
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • LOCATION: 클러스터의 컴퓨팅 위치입니다.
  3. anetd DaemonSet을 확인하여 에이전트가 실행 중인지 확인합니다.

    kubectl get ds -n kube-system anetd
    

마이그레이션 가속화

자동 출시 일정을 우회하려면 선택적으로 노드 풀을 수동으로 패치합니다.

노드 풀을 수동으로 패치하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --datapath-provider=advanced-datapath

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 이름
  • CLUSTER_NAME: 클러스터의 이름입니다.
  • LOCATION: 클러스터의 컴퓨팅 위치입니다.

마이그레이션 완료

모든 노드 풀이 GKE Dataplane V2로 마이그레이션되면 GKE가 마이그레이션을 자동으로 완료합니다. 마이그레이션이 완료되면 명령어 출력에 ADVANCED_DATAPATH 상태가 표시되고 클러스터가 GKE Dataplane V2를 실행합니다.

클러스터 상태를 확인하여 완료를 관찰합니다.

gcloud container clusters describe CLUSTER_NAME \
    --location=LOCATION \
    --format='value(networkConfig.datapathProvider)'

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름입니다.
  • LOCATION: 클러스터의 컴퓨팅 위치입니다.

마이그레이션이 완료되면 출력에 ADVANCED_DATAPATH가 표시됩니다.

마이그레이션 롤백

완료 단계가 완료되기 전에는 언제든지 마이그레이션을 Dataplane V1로 되돌릴 수 있습니다. 마이그레이션 되돌리기는 정방향 마이그레이션과 대칭적인 프로세스입니다. 롤백을 시작하면 GKE가 노드 풀을 기존 데이터 경로로 자동으로 패치한 후 클러스터를 완료합니다.

  1. **anetd 상태 관찰**: 마이그레이션을 롤백하기 전에 에이전트가 실행 중인지 확인하여 오류를 완화할 수 있는지 확인합니다.

    kubectl get ds -n kube-system anetd
    
  2. 진행 중인 노드 풀 작업 취소:

    1. 클러스터 패치 요청을 차단하는 실행 중인 노드 풀 작업을 식별하고 취소합니다.

      gcloud container operations list \
          --location=LOCATION \
          --filter="operationType=UPGRADE_NODES AND status=RUNNING AND targetLink:*/clusters/CLUSTER_NAME"
      

      다음을 바꿉니다.

      • LOCATION: 클러스터의 컴퓨팅 위치입니다.
      • CLUSTER_NAME: 클러스터의 이름입니다.
    2. 작업 ID를 사용하여 작업을 취소합니다.

      gcloud container operations cancel OPERATION_ID \
          --location=LOCATION
      

      다음을 바꿉니다.

      • OPERATION_ID: 실행 중인 작업의 ID입니다.
      • LOCATION: 클러스터의 컴퓨팅 위치입니다.
  3. 롤백 시작: 클러스터 패치 요청을 실행하여 마이그레이션을 Dataplane V1로 되돌립니다.

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --no-enable-dataplane-v2
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • LOCATION: 클러스터의 컴퓨팅 위치입니다.
  4. 노드 풀 출시 관찰: 노드 풀 상태를 확인하여 기존 데이터 경로로의 마이그레이션을 확인합니다.

    gcloud container node-pools list \
        --cluster=CLUSTER_NAME \
        --location=LOCATION \
        --format='value(name, networkConfig.datapathProvider)'
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • LOCATION: 클러스터의 컴퓨팅 위치입니다.

    롤백 중에 명령어 출력에 패치된 노드 풀의 LEGACY_DATAPATH 상태가 표시됩니다.

  5. 완료 관찰: 모든 노드 풀이 Dataplane V1으로 마이그레이션되면 GKE가 마이그레이션을 자동으로 완료합니다. 클러스터 상태를 확인하여 완료를 관찰합니다.

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(networkConfig.datapathProvider)'
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • LOCATION: 클러스터의 컴퓨팅 위치입니다.

    롤백이 완료되면 명령어 출력에 LEGACY_DATAPATH 상태가 표시됩니다.

마이그레이션 문제 해결

이 섹션에서는 GKE Dataplane V2로 마이그레이션할 때 발생할 수 있는 일반적인 문제를 해결하는 데 도움이 되는 정보를 제공합니다.

노드 풀 마이그레이션 실패

노드 풀을 마이그레이션할 때 GKE는 구성된 일시 급증 업그레이드 또는 블루-그린 업그레이드 전략을 사용하여 이전 노드를 삭제하기 전에 새 노드를 만듭니다. Google Cloud 영역에 새 노드를 프로비저닝할 리소스가 충분하지 않으면 GCE_STOCKOUT 또는 ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS 오류와 함께 마이그레이션이 실패합니다. GKE는 이러한 노드 풀을 자동으로 다시 마이그레이션하려고 시도합니다. 노드 풀을 수동으로 패치하는 경우 리소스가 제공될 때까지 기다렸다가 나중에 마이그레이션을 다시 시도하세요.

다음 단계