이 문서에서는 스토리지 정책 기반 관리(SPBM)를 사용하여 한 vSphere 데이터 스토어에서 다른 vSphere 데이터 스토어로 디스크를 마이그레이션하는 방법을 보여줍니다.
1.29: 정식 버전
1.28: 미리보기
1.16: 사용할 수 없음
다음 종류의 스토리지를 마이그레이션할 수 있습니다.
다음을 포함하여 Google Distributed Cloud에서 관리하는 시스템 구성요소의 스토리지입니다.
관리자 클러스터 및 Controlplane V2 사용자 클러스터의 제어 영역 노드에서 사용하는 데이터 디스크(VMDK 파일)
모든 관리자 클러스터 및 사용자 클러스터 노드에 사용되는 부팅 디스크(VMDK 파일)
관리자 클러스터에서 PV/PVC로 표시되고 kubeception 사용자 클러스터의 제어 영역 구성요소에서 사용하는 vSphere 볼륨
트리 내 vSphere 볼륨 플러그인 또는 vSphere CSI 드라이버로 프로비저닝된 PV/PVC를 사용하여 사용자 클러스터 워커 노드에 배포하는 워크로드용 스토리지
관리자 클러스터 기본 요건
관리자 클러스터에는 HA 제어 영역이 있어야 합니다. 관리자 클러스터에 HA가 아닌 제어 영역이 있는 경우 계속하기 전에 HA로 마이그레이션하세요.
관리자 클러스터에 HA 제어 영역이 있는지 확인합니다.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes
ADMIN_CLUSTER_KUBECONFIG를 관리자 클러스터 kubeconfig 파일의 경로로 바꿉니다.
출력에 제어 영역 노드가 3개 표시되는지 확인합니다. 예를 들면 다음과 같습니다.
admin-cp-1 Ready control-plane,master ... admin-cp-2 Ready control-plane,master ... admin-cp-3 Ready control-plane,master ...
모든 클러스터의 기본 요건(관리자 및 사용자)
클러스터에 노드 자동 복구가 사용 중지되어 있어야 합니다. 노드 자동 복구가 사용 설정된 경우 노드 자동 복구를 사용 중지합니다.
클러스터는 스토리지 정책 기반 관리(SPBM)를 사용해야 합니다. 클러스터에서 SPBM을 사용하지 않는 경우 계속하기 전에 스토리지 정책을 만듭니다.
클러스터가 SPBM을 사용하는지 확인합니다.
kubectl --kubeconfig CLUSTER_KUBECONFIG get onpremadmincluster --namespace kube-system \ -ojson | jq '{datastore: .items[0].spec.vCenter.datastore, storagePolicyName: .items[0].spec.vCenter.storagePolicyName}'
(사용자 클러스터만 해당) 노드 풀이 SPBM을 사용하는지 확인합니다.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremnodepools --namespace USER_CLUSTER_NAME-gke-onprem-mgmt \ -ojson | jq '.items[] | {name: .metadata.name, datastore: .spec.vsphere.datastore, storagePolicyName: .spec.vsphere.storagePolicyName}'
다음을 바꿉니다.
CLUSTER_KUBECONFIG: 클러스터 kubeconfig 파일(관리자 또는 사용자)의 경로
ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로
USER_CLUSTER_NAME: 사용자 클러스터의 이름
출력에서
datastore
필드가 비어 있고storagePolicyName
필드가 비어 있지 않으면 클러스터가 SPBM을 사용 중인 것입니다.클러스터는 vSphere 트리 내 볼륨 플러그인을 사용하지 않아야 합니다.
클러스터가 이전 버전의 Google Distributed Cloud에서 업그레이드된 경우 vSphere 트리 내 볼륨 플러그인에서 프로비저닝한 PV/PVC가 있을 수 있습니다. 이러한 종류의 볼륨은 kubeception 사용자 클러스터의 제어 영역 노드 또는 워커 노드에서 만든 워크로드에서 사용 중일 수 있습니다.
모든 PVC와 해당 StorageClass의 목록:
kubectl --kubeconfig CLUSTER_KUBECONFIG get pvc --all-namespaces \ -ojson | jq '.items[] | {namespace: .metadata.namespace, name: .metadata.name, storageClassName: .spec.storageClassName}'
모든 StorageClass를 나열하고 어떤 프로비저닝 도구를 사용하고 있는지 확인합니다.
kubectl --kubeconfig CLUSTER_KUBECONFIG get storageclass
출력에서
PROVISIONER
열이kubernetes.io/vsphere-volume
이면 이 StorageClass로 생성된 PVC가 vSphere 트리 내 볼륨 플러그인을 사용하고 있는 것입니다. 이러한 PV/PVC를 사용하는 StatefulSet의 경우 이를 vSphere CSI 드라이버로 마이그레이션합니다.
스토리지 마이그레이션 수행
Google Distributed Cloud는 두 가지 카테고리의 스토리지 마이그레이션을 지원합니다.
노드에서 실행되는 포드에서 사용하는 연결된 vSphere CNS 볼륨 및 노드에 연결된 이러한 VM CNS 볼륨에서 사용하는 VMDK를 포함하여 VM 스토리지를 이동하는 VM용 스토리지 vMotion
VM용 스토리지 vMotion을 수행하지 않고 지정된 vSphere CNS 볼륨을 호환되는 데이터 스토어로 이동하는 CNS 볼륨 재배치
VM에 대해 스토리지 vMotion 수행
마이그레이션에는 vSphere 환경에서 수행하는 단계와 관리자 워크스테이션에서 실행하는 명령어가 포함됩니다.
vSphere 환경에서 스토리지 정책에 대상 데이터 스토어를 추가합니다.
vSphere 환경에서 이전 데이터 스토어를 사용하는 클러스터 VM을 새 데이터 스토어로 마이그레이션합니다. 자세한 내용은 가상 머신을 새로운 컴퓨팅 리소스 및 스토리지로 마이그레이션을 참조하세요.
관리자 워크스테이션에서 VM이 새 데이터 스토어로 성공적으로 마이그레이션되었는지 확인합니다.
클러스터의 머신 객체를 가져옵니다.
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines --output yaml
출력의
status.disks
아래에서 VM에 연결된 디스크를 확인할 수 있습니다. 예를 들면 다음과 같습니다.status: addresses: – address: 172.16.20.2 type: ExternalIP disks: – bootdisk: true datastore: pf-ds06 filepath: me-xvz2ccv28bf9wdbx-2/me-xvz2ccv28bf9wdbx-2.vmdk uuid: 6000C29d-8edb-e742-babc-9c124013ba54 – datastore: pf-ds06 filepath: anthos/gke-admin-nc4rk/me/ci-bluecwang-head-2-data.vmdk uuid: 6000C29e-cb12-8ffd-1aed-27f0438bb9d9
클러스터에 있는 모든 머신의 모든 디스크가 대상 데이터 스토어로 마이그레이션되었는지 확인합니다.
관리자 워크스테이션에서
gkectl diagnose
를 실행하여 클러스터가 정상인지 확인합니다.
CNS 볼륨 이동을 위한 CNS Relocation API 호출
vSphere CSI 드라이버로 프로비저닝된 CNS 볼륨만 이동하려면 vSphere의 컨테이너 볼륨 마이그레이션의 안내를 따르면 됩니다. 이전 데이터 스토어에 CNS 볼륨만 있으면 이 방법이 더 간단할 수 있습니다.
필요한 경우 스토리지 정책 업데이트
vSphere 환경에서 이전 데이터 스토어를 제외하도록 스토리지 정책을 업데이트합니다. 그렇지 않으면 새 볼륨과 다시 생성된 VM이 이전 데이터 스토어에 할당될 수 있습니다.