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

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

1.30: 정식 버전
1.29: 미리보기
1.28: 사용할 수 없음

HA가 아닌 관리자 클러스터에는 제어 영역 노드 1개와 부가기능 노드 2개가 있습니다. HA 관리자 클러스터에는 3개의 컨트롤 플레인 노드가 있고 부가기능 노드가 없으므로 HA 관리자 클러스터에 필요한 VM 수는 변경되지 않았지만 가용성이 크게 개선되었습니다.

마이그레이션 준비

관리자 클러스터 버전이 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
    

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

암호화 키를 순환하지 않고 마이그레이션을 시작한 경우 Google 지원팀에 문의하세요.

절차 개요

마이그레이션과 관련된 기본 단계는 다음과 같습니다.

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

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

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

    • HA 사양 및 새 제어 영역 VIP를 사용하여 새 관리자 클러스터 제어 영역을 만듭니다.

    • 기존 관리자 클러스터 제어 영역을 사용 중지합니다.

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

    • 새 HA 제어 영역에 이전 관리자 클러스터 데이터를 복원합니다.

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

참고

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

  • 마이그레이션 중에 관리자 클러스터 제어 영역에 약간의 다운타임이 발생합니다. (다운타임은 테스트에 따라 18분 미만이지만, 실제 길이는 개별 인프라 환경에 따라 다릅니다.)

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

  • 마이그레이션이 성공적으로 완료되면 장애 복구를 위해 의도적으로 유지한 나머지 리소스(예: 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 관리자 클러스터에 액세스하는 데 사용할 수도 있습니다.