개요
이 페이지에서는 버전 1.30 이상 관리자 클러스터를 다음 권장 기능으로 마이그레이션하는 방법을 보여줍니다.
부하 분산기 구성:
ManualLB
에 대한 통합 F5 BIG-IP 부하 분산기 구성또는
MetalLB에 대한 번들 Seesaw 부하 분산기
HA가 아닌 관리자 클러스터에서 고가용성(HA) 관리자 클러스터로 마이그레이션합니다. 동일한 수의 VM을 사용하는 경우 HA 관리자 클러스터로 가용성이 크게 개선됩니다. HA가 아닌 관리자 클러스터에는 제어 영역 노드 1개와 부가기능 노드 2개가 있습니다. HA 관리자 클러스터의 3개 노드는 모두 부가기능 노드가 없는 컨트롤 플레인 노드입니다.
이 페이지는 기본 기술 인프라의 수명 주기를 관리하는 IT 관리자 및 운영자를 위해 작성되었습니다. Google Cloud 콘텐츠에서 참조하는 일반 역할과 예시 태스크에 대한 자세한 내용은 일반 GKE Enterprise 사용자 역할 및 태스크를 참조하세요.
마이그레이션 계획에 관한 자세한 내용은 권장 기능으로 클러스터 마이그레이션 계획을 참조하세요.
권장사항
테스트, 개발, 프로덕션과 같은 여러 환경이 있는 경우 먼저 테스트와 같이 가장 중요하지 않은 환경을 마이그레이션하는 것이 좋습니다. 마이그레이션이 성공했는지 확인한 후 각 환경에 대해 이 프로세스를 반복하여 프로덕션 환경을 마지막으로 마이그레이션합니다. 이렇게 하면 더 중요한 다음 환경으로 이동하기 전에 각 마이그레이션의 성공 여부를 확인하고 워크로드가 제대로 실행되는지 확인할 수 있습니다.
요구사항
- 관리자 클러스터는 버전 1.30 이상이어야 합니다.
- 사용자 클러스터를 권장 기능으로 마이그레이션에 설명된 대로 관리자 클러스터에서 관리하는 모든 사용자 클러스터는 이미 권장 기능으로 마이그레이션되어 있야 합니다.
마이그레이션 중 다운타임 계획
마이그레이션을 위해 제한된 컨트롤 플레인 다운타임을 계획하세요. HA가 아닌 관리자 클러스터에서는 약 20분 동안 Kubernetes API 액세스를 사용할 수 없지만 F5가 있는 HA 관리자 클러스터에서는 Kubernetes 컨트롤 플레인을 계속 사용할 수 있습니다. 마이그레이션하는 동안 Kubernetes 데이터 영역은 안정적인 상태로 계속 작동합니다.
기존 | 대상 | Kubernetes API 액세스 | 사용자 워크로드 |
---|---|---|---|
F5 BIG-IP를 사용한 HA 관리자 클러스터 |
|
영향을 받지 않음 |
영향을 받지 않음 |
|
동일한 종류의 부하 분산기를 사용한 HA 관리자 클러스터 |
영향을 받음 |
영향을 받지 않음 |
F5 BIG-IP를 사용한 HA가 아닌 관리자 클러스터 |
|
영향을 받음 |
영향을 받지 않음 |
Seesaw를 사용한 HA가 아닌 관리자 클러스터 |
MetalLB를 사용한 HA 관리자 클러스터 |
영향을 받음 |
영향을 받지 않음 |
- 영향을 받음: 마이그레이션 중에 서비스가 눈에 띄게 중단됩니다.
- 영향을 받지 않음: 서비스 중단이 발생하지 않거나 거의 알아챌 수 없습니다.
마이그레이션 준비
관리자 클러스터가 HA가 아닌 경우 이 섹션의 단계에 따라 HA 관리자 클러스터로 마이그레이션할 준비를 합니다. 관리자 클러스터가 이미 HA인 경우 다음 섹션인 부하 분산기 마이그레이션 준비로 건너뜁니다.
IP 주소 추가 할당
비HA에서 HA로 관리자 클러스터를 마이그레이션할 때 IP 주소 4개를 추가로 할당합니다. 다음 IP 주소가 기존 관리자 클러스터 노드와 동일한 VLAN에 있고 기존 노드에서 아직 사용하지 않았는지 확인합니다.
- 관리자 클러스터 구성 파일의
loadBalancer.vips.controlPlaneVIP
필드에 새 컨트롤 플레인 VIP의 IP 주소 1개를 할당합니다. - 관리자 클러스터 구성 파일의
network.controlPlaneIPBlock
섹션에 있는 3개의 컨트롤 플레인 노드 각각에 새 IP 주소를 할당합니다.
방화벽 규칙 업데이트
관리자 클러스터를 비HA에서 HA로 마이그레이션할 때는 관리자 클러스터에서 방화벽 규칙을 업데이트합니다. 이렇게 하면 관리자 클러스터의 방화벽 규칙에 설명된 대로 컨트롤 플레인 노드에 새로 할당된 IP 주소가 모든 필수 API 및 기타 대상에 도달할 수 있습니다.
부하 분산기 마이그레이션 준비
관리자 클러스터에서 통합 F5 BIG-IP 구성 또는 번들로 제공된 Seesaw 부하 분산기를 사용하는 경우 이 섹션의 단계에 따라 관리자 클러스터 구성 파일을 필요에 맞게 변경합니다. 그렇지 않으면 다음 섹션인 비HA에서 HA로 마이그레이션 준비로 건너뜁니다.
F5 BIG-IP
관리자 클러스터에서 통합 F5 BIG-IP 구성을 사용하는 경우 관리자 클러스터 구성 파일을 다음과 같이 변경합니다.
loadBalancer.kind
필드를"ManualLB"
로 설정합니다.loadBalancer.vips.controlPlaneVIP
필드의 값을 설정하거나 유지합니다. 관리자 클러스터가 이미 HA인 경우 동일한 값을 유지합니다. HA가 아닌 관리자 클러스터에서 HA 관리자 클러스터로 마이그레이션하는 경우loadBalancer.vips.controlPlaneVIP
필드의 값을 할당한 IP 주소로 변경합니다.- 전체
loadBalancer.f5BigIP
섹션을 삭제합니다.
다음 관리자 클러스터 구성 파일 예시에서는 이러한 변경사항을 보여줍니다.
loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind:"F5BigIP""ManualLB"f5BigIP: address: "203.0.113.20" credentials: fileRef: path: ""my-config-folder/user-creds.yaml" entry: "f5-creds" partition: "my-f5-user-partition"
Seesaw
관리자 클러스터에서 Seesaw 부하 분산기를 사용하는 경우 관리자 클러스터 구성 파일을 다음과 같이 변경합니다.
loadBalancer.kind
필드를 'MetalLB'로 설정합니다.network.hostConfig
섹션을 유지합니다.loadBalancer.vips.controlPlaneVIP
]5 필드의 값을 설정하거나 유지합니다. 관리자 클러스터가 이미 HA인 경우 동일한 값을 유지할 수 있습니다. 비HA 관리자 클러스터에서 HA 관리자 클러스터로 마이그레이션하는 경우loadBalancer.vips.controlPlaneVIP
필드의 값을 할당한 IP 주소로 변경합니다.loadBalancer.seesaw
섹션을 삭제합니다.
다음 관리자 클러스터 구성 파일 예시에서는 이러한 변경사항을 보여줍니다.
network: hostConfig: dnsServers: - "203.0.113.1" - "203.0.113.2" ntpServers: - "203.0.113.3" loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind: "MetalLB""Seesaw"seesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072
비HA에서 HA로 마이그레이션 준비
관리자 클러스터가 HA가 아닌 경우 이 섹션의 단계에 따라 HA로 마이그레이션할 준비를 합니다.
관리자 클러스터가 이미 HA인 경우 다음 섹션인 관리자 클러스터 마이그레이션으로 건너뜁니다.
관리자 클러스터 버전이 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":""}]
필요한 경우 암호화 키 순환
이전 섹션의 단계에서 암호화 키를 순환해야 한다고 표시되면 다음 단계를 따르세요.
관리자 클러스터 구성 파일에서
keyVersion
을 늘립니다.관리자 클러스터를 업데이트합니다.
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
이렇게 하면 새 버전 번호와 일치하는 새 키가 생성되고, 각 보안 비밀이 다시 암호화되고, 이전 보안 비밀이 안전하게 삭제됩니다. 이후의 모든 새 보안 비밀은 새 암호화 키를 사용하여 암호화됩니다.
관리자 클러스터 구성 파일 업데이트
관리자 클러스터 구성 파일을 다음과 같이 변경합니다.
- 컨트롤 플레인 노드에 할당한 세 개의 IP 주소를
network.controlPlaneIPBlock
에 입력합니다. network.hostConfig
섹션을 작성했는지 확인합니다. 이 섹션에는 클러스터 노드인 VM에서 사용하는 NTP 서버, DNS 서버, DNS 검색 도메인에 대한 정보가 포함되어 있습니다.loadBalancer.vips.controlPlaneVIP
값을 할당한 IP 주소로 바꿨는지 확인합니다.adminMaster.replicas
를 3으로 설정합니다.vCenter.dataDisk
필드를 삭제합니다. HA 관리자 클러스터의 경우 컨트롤 플레인 노드에서 사용하는 데이터 디스크 3개의 경로가 데이터 스토어의 루트 디렉터리anthos
에 자동으로 생성되기 때문입니다.loadBalancer.kind
가"ManualLB"
로 설정된 경우loadBalancer.manualLB.controlPlaneNodePort
를 0으로 설정합니다.
다음 관리자 클러스터 구성 파일 예시에서는 이러한 변경사항을 보여줍니다.
vCenter: address: "my-vcenter-server.my-domain.example" datacenter: "my-data-center"dataDisk: "xxxx.vmdk"... network: hostConfig: dnsServers: – 203.0.113.1 – 203.0.113.2 ntpServers: – 203.0.113.3 ... controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "198.51.100.1" ips: – ip: "192.0.2.1" hostname: "admin-cp-hostname-1" – ip: "192.0.2.2" hostname: "admin-cp-hostname-2" – ip: "192.0.2.3" hostname: "admin-cp-hostname-3" ... ... loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind: ManualLB manualLB:controlPlaneNodePort: 300030 ... adminMaster: replicas: 3 cpus: 4 memoryMB: 8192 ...
필요한 경우 부하 분산기에서 매핑 조정
관리자 클러스터에서 수동 부하 분산을 사용하고 있다면 이 섹션의 단계를 완료합니다.
통합 F5 BIG-IP에서 수동 부하 분산으로 마이그레이션하거나 MetalLB로 마이그레이션하는 경우 다음 섹션인 관리자 클러스터 마이그레이션으로 건너뜁니다.
network.controlPlaneIPBlock
섹션에서 지정한 3개의 새로운 컨트롤 플레인 노드 IP 주소 각각에 대해 외부 부하 분산기(예: F5 BIG-IP 또는 Citrix)에서 이 매핑을 구성합니다.
(old controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:old controlPlaneNodePort)
이렇게 하면 이전 컨트롤 플레인 VIP가 마이그레이션 중에 계속 작동합니다.
관리자 클러스터 마이그레이션
관리자 클러스터 구성 파일에 적용한 모든 변경사항을 신중하게 검토합니다. 마이그레이션을 위해 클러스터를 업데이트하는 경우를 제외하고 모든 설정은 변경할 수 없습니다.
클러스터를 업데이트합니다.
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config ADMIN_CLUSTER_CONFIG
Replace the following
:
ADMIN_CLUSTER_KUBECONFIG
: 관리자 클러스터 kubeconfig 파일의 경로입니다.ADMIN_CLUSTER_CONFIG
: 관리자 클러스터 구성 파일의 경로입니다.
이 명령어는 마이그레이션 진행 상황을 표시합니다.
메시지가 표시되면 Y
를 입력하여 계속 진행합니다.
비HA에서 HA로 마이그레이션하는 동안 이전 컨트롤 플레인 VIP는 계속 작동하며 새 HA 관리자 클러스터에 액세스하는 데 사용할 수 있습니다. 마이그레이션이 완료되면 관리자 클러스터 kubeconfig 파일이 새 컨트롤 플레인 VIP를 사용하도록 자동으로 업데이트됩니다.
마이그레이션 후
업데이트가 완료되면 관리자 클러스터가 실행 중인지 확인합니다.
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
출력은 다음과 비슷합니다.
부하 분산기 마이그레이션
부하 분산기를 마이그레이션한 경우 부하 분산기 구성요소가 정상적으로 실행되고 있는지 확인합니다.
MetalLB
MetalLB로 마이그레이션한 경우 다음 명령어를 사용하여 MetalLB 구성요소가 정상적으로 실행되고 있는지 확인합니다.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
--namespace kube-system --selector app=metallb
출력에 MetalLB 컨트롤러 및 스피커에 대한 포드가 표시됩니다. 예를 들면 다음과 같습니다.
metallb-controller-744884bf7b-rznr9 1/1 Running
metallb-speaker-6n8ws 1/1 Running
metallb-speaker-nb52z 1/1 Running
metallb-speaker-rq4pp 1/1 Running
마이그레이션이 완료되면 관리자 클러스터의 전원이 꺼진 Seesaw VM을 삭제합니다. 구성 디렉터리에 있는 seesaw-for-gke-admin.yaml
파일의 vmnames
섹션에서 Seesaw VM 이름을 찾을 수 있습니다.
ManualLB
수동 부하 분산을 사용하도록 클러스터를 업데이트한 후에도 클러스터로의 트래픽이 중단되지 않습니다. 이는 다음 명령어를 실행하면 알 수 있듯이 기존 F5 리소스가 여전히 존재하기 때문입니다.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
출력은 다음과 비슷합니다.
Warning: v1 ComponentStatus is deprecated in v1.19+
NAMESPACE NAME TYPE DATA AGE
kube-system secret/bigip-login-xt697x Opaque 4 13h
NAMESPACE NAME SECRETS AGE
kube-system serviceaccount/bigip-ctlr 0 13h
kube-system serviceaccount/load-balancer-f5 0 13h
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 13h
kube-system deployment.apps/load-balancer-f5 1/1 1 1 13h
NAME ROLE AGE
clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 13h
clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 13h
NAME CREATED AT
clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T04:37:34Z
clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T04:37:34Z