관리자 클러스터를 HA로 마이그레이션

이 페이지에서는 버전 1.29의 HA가 아닌 관리자 클러스터에서 고가용성(HA) 관리자 클러스터로 마이그레이션하는 방법을 보여줍니다.

1.29: 미리보기
1.28: 사용할 수 없음

마이그레이션 전후에 관리자 클러스터에는 3개의 노드가 있습니다.

  • HA가 아닌 관리자 클러스터에는 컨트롤 플레인 노드 1개와 부가기능 노드 2개가 있습니다.
  • HA 관리자 클러스터에는 컨트롤 플레인 노드 3개가 있고 부가기능 노드가 없으므로 가용성이 크게 개선되었습니다.

마이그레이션 준비

관리자 클러스터 버전이 1.29.0~1.29.600 또는 1.30.0~1.30.100이고 버전 1.14 이하의 관리자 클러스터에서 상시 보안 비밀 암호화가 사용 설정된 경우 마이그레이션을 시작하기 전에 암호화 키를 순환해야 합니다. 그러지 않으면 새 HA 관리자 클러스터에서 보안 비밀을 복호화할 수 없습니다.

클러스터에서 이전 암호화 키를 사용하고 있는지 확인하려면 다음 단계를 따르세요.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret -n kube-system admin-master-component-options -o jsonpath='{.data.data}' | base64 -d | grep -oP '"GeneratedKeys":\[.*?\]'

출력에 다음 예시와 같은 빈 키가 표시되면 암호화 키를 순환해야 합니다.

"GeneratedKeys":[{"KeyVersion":"1","Key":""}]

필요한 경우 암호화 키 순환

이전 섹션의 단계에서 암호화 키를 순환해야 한다고 표시되면 다음 단계를 따르세요.

  1. 관리자 클러스터 구성 파일에서 keyVersion을 늘립니다.

  2. 관리자 클러스터를 업데이트합니다.

    gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config ADMIN_CLUSTER_CONFIG
    

    이렇게 하면 새 버전 번호와 일치하는 새 키가 생성되고, 각 보안 비밀이 다시 암호화되고, 이전 보안 비밀이 안전하게 삭제됩니다. 이후의 모든 새 보안 비밀은 새 암호화 키를 사용하여 암호화됩니다.

절차 개요

마이그레이션에는 다음과 같은 기본 단계가 포함됩니다.

  1. 관리자 클러스터 구성 파일을 수정합니다.

  2. gkectl update admin을 실행합니다. 이 명령어는 다음을 수행합니다.

    • 외부 클러스터(종류)를 가져와서 현재 HA가 아닌 관리자 클러스터가 정상 상태인지 확인합니다.

    • HA 사양 및 새 컨트롤 플레인 VIP를 사용하여 새 관리자 클러스터 컨트롤 플레인을 만듭니다.

    • 기존 관리자 클러스터 컨트롤 플레인을 사용 중지합니다.

    • 기존 관리자 클러스터의 etcd 스냅샷을 만듭니다.

    • 새 HA 컨트롤 플레인에 이전 관리자 클러스터 데이터를 복원합니다.

    • HA 관리자 클러스터의 종료 상태를 충족하도록 복원된 관리자 클러스터를 조정합니다.

참고

  • 마이그레이션 중에는 사용자 클러스터 워크로드에 다운타임이 발생하지 않습니다.

  • 마이그레이션 중에 관리자 클러스터 컨트롤 플레인에 약간의 다운타임이 발생합니다. (테스트에 따르면 다운타임이 18분 미만이지만 실제 길이는 개별 인프라 환경에 따라 달라집니다.)

  • HA 이외에서 HA로 마이그레이션하기 위한 HA 관리자 클러스터의 요구사항은 여전히 적용됩니다. 예를 들어 HA 관리자 클러스터는 Seesaw를 지원하지 않으므로 HA가 아닌 관리자 클러스터에 Seesaw 부하 분산기를 사용하는 경우 먼저 MetalLB로 마이그레이션한 다음 HA 관리자 클러스터로 마이그레이션해야 합니다.

  • 마이그레이션이 완료되면 장애 복구를 위해 HA가 아닌 관리자 마스터 VM과 같은 남은 리소스가 의도적으로 유지됩니다.

마이그레이션 전과 후

다음 표에는 마이그레이션 전과 후에 클러스터의 주요 차이점이 나와 있습니다.

마이그레이션 전마이그레이션 후
컨트롤 플레인 노드 복제본13
부가기능 노드20
컨트롤 플레인 포드 복제본
(kube-apiserver, kube-etcd 등)
13
데이터 디스크 크기100GB* 125GB* 3
데이터 디스크 경로 관리자 클러스터 구성 파일에서 vCenter.dataDisk로 설정 아래의 디렉터리에 자동 생성: /anthos/[ADMIN_CLUSTER_NAME]/default/[MACHINE_NAME]-data.vmdk
컨트롤 플레인 VIP용 부하 분산기 관리자 클러스터 구성 파일에서 loadBalancer.kind로 설정 keepalived + haproxy
관리자 클러스터 컨트롤 플레인 노드의 IP 주소 할당 network.ipMode.type에 따라 DHCP 또는 정적 고정 IP 주소 3개
kubeception 사용자 클러스터 컨트롤 플레인 노드의 IP 주소 할당 network.ipMode.type에 따라 DHCP 또는 정적 network.ipMode.type에 따라 DHCP 또는 정적
체크포인트 파일기본적으로 사용 설정됨사용되지 않음

관리자 클러스터 구성 파일 수정

IP 주소 4개를 추가로 지정해야 합니다.

  • 관리자 클러스터의 컨트롤 플레인 노드용 IP 주소 3개
  • 관리자 클러스터 부하 분산기의 새 컨트롤 플레인 VIP

또한 다음 섹션에 설명된 대로 관리자 클러스터 구성 파일에서 다른 몇 가지 필드도 변경해야 합니다.

IP 주소 지정

  1. 관리자 클러스터 구성 파일에서 network.controlPlaneIPBlock 섹션을 입력합니다. 예를 들면 다음과 같습니다.

    controlPlaneIPBlock:
     netmask: "255.255.255.0"
     gateway: "172.16.20.1"
     ips:
     – ip: "172.16.20.50"
       hostname: "admin-cp-node-1"
     – ip: "172.16.20.51"
       hostname: "admin-cp-node-2"
     – ip: "172.16.20.52"
       hostname: "admin-cp-node-3"
    
  2. hostconfig 섹션을 입력합니다. 관리자 클러스터에서 고정 IP 주소를 사용하는 경우 이 섹션은 이미 채워져 있습니다. 예를 들면 다음과 같습니다.

    hostConfig:
     dnsServers:
     – 203.0.113.1
     – 198.51.100.1
     ntpServers:
     – 216.239.35.12
    
  3. loadBalancer.vips.controlPlaneVIP 값을 새 VIP로 바꿉니다. 예를 들면 다음과 같습니다.

    loadBalancer:
     vips:
       controlPlaneVIP: "172.16.20.59"
    

추가 구성 필드 업데이트

  1. adminMaster.replicas3으로 설정합니다.

    adminMaster:
     replicas: 3
     cpus: 4
     memoryMB: 8192
    
  2. vCenter.dataDisk 필드를 삭제합니다. HA 관리자 클러스터의 경우 컨트롤 플레인 노드에서 사용하는 데이터 디스크 3개의 경로가 데이터 스토어의 루트 디렉터리 anthos에 자동으로 생성됩니다.

  3. loadBalancer.manualLB.controlPlaneNodePort의 값이 0이 아니면 0으로 설정합니다.

수동 부하 분산기 구성 조정

관리자 클러스터에서 수동 부하 분산을 사용하는 경우 이 섹션을 완료합니다. 그렇지 않으면 이 섹션을 건너뛰세요.

network.controlPlaneIPBlock 섹션에서 지정한 3개의 새로운 컨트롤 플레인 노드 IP 주소 각각에 대해 부하 분산기에서 다음 매핑을 구성합니다.

(old controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:old controlPlaneNodePort)

이 매핑을 사용하면 마이그레이션 중에 이전 컨트롤 플레인 VIP가 작동합니다.

관리자 클러스터 업데이트

필드는 변경할 수 없으므로 적용한 구성 변경사항을 검토합니다. 변경사항이 올바른지 확인한 후 클러스터를 업데이트합니다.

  1. 마이그레이션 시작:

    gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
    

    다음을 바꿉니다.

    • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

    • ADMIN_CLUSTER_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

  2. 이 명령어는 마이그레이션 진행 상황을 표시합니다.

    메시지가 표시되면 Y를 입력하여 계속 진행합니다.

  3. 마이그레이션이 완료되면 관리자 클러스터 kubeconfig 파일이 새 컨트롤 플레인 VIP를 사용하도록 자동으로 업데이트됩니다. 이전 컨트롤 플레인 VIP는 계속 작동하며 새 HA 관리자 클러스터에 액세스하는 데 사용할 수도 있습니다.