이 문서에서는 HA가 아닌 관리자 클러스터에서 고가용성(HA) 관리자 클러스터로 마이그레이션하는 방법을 보여줍니다.
1.29: 미리보기
1.28: 사용할 수 없음
1.16: 사용할 수 없음
HA 관리자 클러스터에는 3개의 제어 영역 노드가 있고 부가기능 노드가 없습니다. HA가 아닌 관리자 클러스터에는 제어 영역 노드 1개와 부가기능 노드 2개가 있습니다.
절차 개요
마이그레이션과 관련된 기본 단계는 다음과 같습니다.
관리자 클러스터 구성 파일을 수정합니다.
gkectl update admin
를 실행합니다. 이 명령어는 다음을 수행합니다.외부 클러스터(종류)를 가져와서 현재 HA가 아닌 관리자 클러스터가 정상 상태인지 확인합니다.
HA 사양 및 새 제어 영역 VIP를 사용하여 새 관리자 클러스터 제어 영역을 만듭니다.
기존 관리자 클러스터 제어 영역을 사용 중지합니다.
기존 관리자 클러스터의 etcd 스냅샷을 만듭니다.
새 HA 제어 영역에 이전 관리자 클러스터 데이터를 복원합니다.
HA 관리자 클러스터의 종료 상태를 충족하도록 복원된 관리자 클러스터를 조정합니다.
참고
마이그레이션 중에는 사용자 클러스터 워크로드에 다운타임이 발생하지 않습니다.
마이그레이션 중에 관리자 클러스터 제어 영역에 약간의 다운타임이 발생합니다. (다운타임은 테스트에 따라 18분 미만이지만, 실제 길이는 개별 인프라 환경에 따라 다릅니다.)
HA 이외에서 HA로 마이그레이션하기 위한 HA 관리자 클러스터의 요구사항은 여전히 적용됩니다. 즉, HA가 아닌 관리자 클러스터에 Seesaw 부하 분산기를 사용하는 경우 먼저 MetalLB로 마이그레이션한 다음 HA 관리자 클러스터로 마이그레이션합니다. 이는 HA 관리자 클러스터에서 Seesaw를 지원하지 않기 때문입니다.
마이그레이션이 성공적으로 완료되면 장애 복구를 위해 의도적으로 유지한 나머지 리소스(예: HA가 아닌 관리자 마스터 VM)가 남게 됩니다. 필요한 경우 수동으로 삭제할 수 있습니다.
마이그레이션 전과 후
마이그레이션 전과 후의 클러스터 주요 차이점은 다음과 같습니다.
마이그레이션 전 | 마이그레이션 후 | |
---|---|---|
제어 영역 노드 복제본 | 1 | 3 |
부가기능 노드 | 2 | 0 |
제어 영역 포드 복제본 (kube-apiserver, kube-etcd 등) | 1 | 3 |
데이터 디스크 크기 | 100GB* 1 | 25GB* 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 주소 지정
관리자 클러스터 구성 파일에서 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"
hostconfig 섹션을 입력합니다. 관리자 클러스터에서 고정 IP 주소를 사용하는 경우 이 섹션은 이미 채워져 있습니다. 예를 들면 다음과 같습니다.
hostConfig: dnsServers: – 203.0.113.1 – 198.51.100.1 ntpServers: – 216.239.35.12
loadBalancer.vips.controlPlaneVIP 값을 새 VIP로 바꿉니다. 예를 들면 다음과 같습니다.
loadBalancer: vips: controlPlaneVIP: "172.16.20.59"
추가 구성 필드 업데이트
adminMaster.replicas를
3
으로 설정합니다.adminMaster: replicas: 3 cpus: 4 memoryMB: 8192
vCenter.dataDisk 필드를 삭제합니다. 이는 HA 관리자 클러스터의 경우 제어 영역 노드에서 사용하는 데이터 디스크 3개의 경로가 데이터 스토어의 루트 디렉터리
anthos
에 자동으로 생성되기 때문입니다.loadBalancer.manualLB.controlPlaneNodePort의 값이 0이 아니면
0
으로 설정합니다.
수동 부하 분산기 구성 조정
관리자 클러스터에서 수동 부하 분산을 사용하는 경우 이 섹션의 단계를 수행합니다. 그렇지 않으면 이 섹션을 건너뛰세요.
network.controlPlaneIPBlock 섹션에서 지정한 3개의 새로운 제어 영역 노드 IP 주소 각각에 대해 부하 분산기에서 이 매핑을 구성합니다.
(old controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:old controlPlaneNodePort)
이는 마이그레이션 중에 이전 제어 영역 VIP가 작동하도록 하기 위함입니다.
관리자 클러스터 업데이트
마이그레이션 시작:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG
다음을 바꿉니다.
ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.
ADMIN_CLUSTER_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.
이 명령어는 마이그레이션 진행 상황을 표시합니다.
메시지가 표시되면
Y
를 입력하여 계속 진행합니다.마이그레이션이 완료되면 관리자 클러스터 kubeconfig 파일이 새 제어 영역 VIP를 사용하도록 자동으로 업데이트됩니다. 한편 이전 제어 영역 VIP는 계속 작동하며 새 HA 관리자 클러스터에 액세스하는 데 사용할 수도 있습니다.
필요한 경우 남은 리소스를 수동으로 삭제
마이그레이션 중에 gkectl
은 관리자 클러스터 제어 영역 VM을 삭제하지 않습니다. vSphere에서 VM을 삭제하는 대신 VM을 종료합니다. 마이그레이션 성공 후 이전 제어 영역 VM을 삭제하려면 수동으로 삭제를 수행해야 합니다.
이전 제어 영역 VM 및 관련 리소스를 수동으로 삭제하려면 다음 안내를 따르세요.
- HA가 아닌 관리자 마스터 VM
gke-admin-master-xxx
의 전원이 이미 꺼져 있는지 확인합니다. - vSphere에서 HA가 아닌 관리자 마스터 VM
gke-admin-master-xxx
를 삭제합니다. - vSphere에서 HA가 아닌 관리자 마스터 VM 템플릿
gke-admin-master-xxx-tmpl
을 삭제합니다. - HA가 아닌 관리자 데이터 디스크 및 관리자 체크포인트 파일을 삭제합니다.
/home/ubuntu/admin-ha-migration/[ADMIN_CLUSTER_NAME]/
에 저장된 임시 파일을 삭제합니다.
cli를 선호하는 경우 govc 명령어는 다음과 같습니다.
// Configure govc credentials export GOVC_INSECURE=1 export GOVC_URL=VCENTER_URL export GOVC_DATACENTER=DATACENTER export GOVC_DATASTORE=DATASTORE export GOVC_USERNAME=USERNAME export GOVC_PASSWORD=PASSWORD // Configure admin master VM name (you can find the master VM name from the "[HA Migration]" logs) export ADMIN_MASTER_VM=ADMIN_MASTER_VM_NAME // Configure datadisk path (remove ".vmdk" suffix) export DATA_DISK_PATH=DATADISK_PATH_WITHOUT_VMDK // Check whether admin master is in "poweredOff" state: govc vm.info $ADMIN_MASTER_VM | grep Power // Delete admin master VM govc vm.destroy $ADMIN_MASTER_VM // Delete admin master VM template govc vm.destroy "$ADMIN_MASTER_VM"-tmpl // Delete data disk govc datastore.ls $DATA_DISK_PATH govc datastore.rm $DATA_DISK_PATH // Delete admin checkpoint file govc datastore.ls "$DATA_DISK_PATH"-checkpoint.yaml govc datastore.rm "$DATA_DISK_PATH"-checkpoint.yaml