이전 버전의 VMware Cloud Director Container Service Extension을 사용하여 생성된 클러스터의 경우 일회성 스크립트 업그레이드를 수행해야 합니다. 이렇게 하면 클러스터가 사용하려는 VMware Cloud Director Container Service Extension과 호환될 수 있습니다.

기본적으로 이전 버전의 VMware Cloud Director Container Service Extension에서 생성된 클러스터는 다음과 같은 이전 버전의 Kubernetes 구성 요소에서 작동합니다. 아래에 설명된 최신 버전으로 업그레이드해야 합니다.
Kubernetes 구성 요소 기존 버전 4.2용 업그레이드 버전 4.2.1용 업그레이드 버전 4.2.2용 업그레이드 버전
Kubernetes Cloud Provider for VMware Cloud Director 1.5.0, 1.4.1 또는 이전 버전 1.5.0 1.6.0 1.6.0
Kubernetes Container Storage Interface driver for VMware Cloud Director 1.5.0, 1.4.1 또는 이전 버전 1.5.0 1.6.0 1.6.0
Kubernetes Cluster API Provider for VMware Cloud Director 1.2.0, 1.1.1 또는 이전 버전 1.2.0 1.3.0 1.3.0
RDE 프로젝터 0.7.0, 0.6.1 또는 이전 버전 0.7.0 0.7.0 0.7.1

사전 요구 사항

이 작업을 수행하기 전에 다음 사전 요구 사항을 충족하는지 확인합니다.
  • 시스템은 Ubuntu GNU/Linux 20.04 운영 체제를 사용해야 합니다.
  • kubectl이 설치되어 있는지 확인합니다. 자세한 내용은 Linux에서 kubectl 설치 및 설정을 참조하십시오.
  • Docker를 설치하고 작동하는지 확인합니다. 자세한 내용은 Docker Engine 설치를 참조하십시오.
  • 클러스터의 kubeconfig가 액세스 가능한 경로의 시스템에 있는지 확인합니다.

프로시저

  1. 다음 명령을 사용하여 $HOME 디렉토리를 설정합니다.
    export $HOME=<directory of choice>
    참고: $HOME 디렉토리가 올바르게 설정되었는지 확인하려면 다음 명령을 사용하여 $HOME 디렉토리를 출력합니다. 비어 있으면 안 됩니다.
    echo $HOME
  2. 다음 명령을 사용하여 클러스터 업그레이드 스크립트 컨텐츠를 마운트하고 저장하기 위한 폴더 구조를 생성합니다.
    mkdir -p $HOME/cluster-upgrade-script
  3. 생성된 폴더로 이동하고 다음 명령을 사용하여 http://projects.registry.vmware.com에서 cluster-upgrade-script 이미지를 끌어옵니다.
    • 4.2의 경우:

      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.2
    • 4.2.1의 경우:
      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.3
    • 4.2.2의 경우:
      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.4
  4. 이미지를 끌어온 후 Docker를 사용하여 컨테이너를 생성하고 추출하여 이미지 컨텐츠를 폴더에 추출합니다.
    • 4.2의 경우:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.2
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
    • 4.2.1의 경우:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.3
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
    • 4.2.2의 경우:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.4
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
  5. 컨텐츠가 폴더에 추출된 후에는 임시 컨테이너를 제거해도 안전합니다.
    docker container rm "temp_container" 
  6. 모든 컨텐츠가 기본 폴더에 추출된 후 디렉토리를 열고 스크립트에 대한 사용 권한을 업데이트합니다.
    cd $HOME/cluster-upgrade-script
    chmod +x upgrade_cluster_components.sh
  7. 기본 폴더에서 다음 명령을 실행합니다.
    ./upgrade_cluster_components.sh kubeconfig-absolute-file-path [image registry] 
    
    Example: ./upgrade_cluster_components.sh $HOME/kubeconfig-cluster.txt projects.registry.vmware.com

    image_registry는 선택적 매개 변수로, 스크립트가 이미지를 끌어올 레지스트리를 정의하고 여기에서 CSI/CPI CRS, CAPVCD 매니페스트, clusterctl 등과 같은 이미지가 호스팅될 것으로 예상합니다.

    private/local/airgap 레지스트리를 사용하지 않는 경우 projects.registry.vmware.comimage_registry로 사용합니다. 또는 매개 변수가 비어 있으면 기본값은 image_registry: projects.registry.vmware.com.입니다.

    private/local 레지스트리의 경우 매개 변수에 레지스트리 링크를 사용합니다. 예: my-private.registry.com. 스크립트를 실행하는 가상 시스템이 레지스트리를 신뢰하는지 확인합니다. 그렇지 않으면 x509 certificate signed by unknown authority와 같은 오류가 발생할 수 있습니다.

    참고:
    • 스크립트를 실행하는 동안 모든 이미지 아티팩트가 $HOME/cluster-upgrade-packages/에 다운로드됩니다.
    • 스크립트에서 업그레이드하는 동안 오류가 있으면 이 폴더를 제거하고 스크립트를 다시 실행하여 이 폴더를 생성하는 것이 안전합니다.
    • $HOME/.cluster-api에 clusterctl용 추가 폴더가 생성됩니다. 이 폴더를 삭제해도 안전합니다. 스크립트 실행을 다시 시도하면 이 폴더가 생성되기 때문입니다.

결과

클러스터 업그레이드 스크립트가 성공적으로 실행되면 클러스터 Kuberetes 구성 요소 버전이 업데이트됩니다. 업데이트된 Kubernetes 구성 요소 버전은 Kubernetes Container Clusters UI에서 볼 수 있습니다.