다음을 통해 공유


Kubernetes 도구를 사용하여 간접적으로 연결된 Azure Arc 지원 데이터 컨트롤러 업그레이드

이 문서에서는 Kubernetes 도구를 사용하여 간접적으로 연결된 Azure Arc 지원 데이터 컨트롤러를 업그레이드하는 방법을 설명합니다.

데이터 컨트롤러를 업그레이드하는 동안 CRD(사용자 지정 리소스 정의) 및 컨테이너와 같은 데이터 컨트롤 플레인의 일부가 업그레이드될 수 있습니다. 데이터 컨트롤러를 업그레이드해도 데이터 서비스(SQL Managed Instance 또는 PostgreSQL 서버)에 가동 중지 시간이 발생하지 않습니다.

이 문서에서는 .yaml 파일을 다음에 적용합니다.

  1. 업그레이드를 실행하기 위한 서비스 계정을 만듭니다.
  2. 부트스트래퍼를 업그레이드합니다.
  3. 데이터 컨트롤러를 업그레이드합니다.

참고 항목

일부 데이터 서비스 계층 및 모드는 일반 공급 상태이며 일부는 미리 보기로 제공됩니다. 동일한 데이터 컨트롤러에서 GA 및 미리 보기 서비스를 설치하는 경우 현재 위치에서 업그레이드할 수 없습니다. 업그레이드하려면 GA가 아닌 모든 데이터베이스 인스턴스를 삭제합니다. 릴리스 정보에서 일반 공급 및 미리 보기 서비스 목록을 찾을 수 있습니다.

필수 조건

데이터 컨트롤러의 업그레이드를 시작하기 전에 다음이 필요합니다.

  • Kubernetes 클러스터에 연결하고 인증하려면
  • 선택한 기존 Kubernetes 컨텍스트

imageTag: v1.0.0_2021-07-30 이상의 간접적으로 연결된 데이터 컨트롤러가 필요합니다.

도구 설치

Kubernetes 도구를 사용하여 데이터 컨트롤러를 업그레이드하려면 Kubernetes 도구가 설치되어 있어야 합니다.

이 문서의 예제에서는 kubectl을 사용하지만 이와 마찬가지로, 관련 도구와 Kubernetes yaml/json에 익숙하다면 Kubernetes 대시보드, oc 또는 helm 등의 다른 Kubernetes 도구를 사용할 수도 있습니다.

kubectl 도구 설치

사용 가능한 이미지 보기 및 버전 선택

다음 명령을 사용하여 데이터 컨트롤러에 사용할 수 있는 이미지 목록을 가져옵니다.

az arcdata dc list-upgrades --k8s-namespace <namespace>

위의 명령은 다음 예제와 같은 출력을 반환합니다.

Found 2 valid versions.  The current datacontroller version is <current-version>.
<available-version>
...

데이터 컨트롤러 업그레이드

이 섹션에서는 간접적으로 연결된 데이터 컨트롤러를 업그레이드하는 방법을 보여줍니다.

참고 항목

일부 데이터 서비스 계층 및 모드는 일반 공급 상태이며 일부는 미리 보기로 제공됩니다. 동일한 데이터 컨트롤러에서 GA 및 미리 보기 서비스를 설치하는 경우 현재 위치에서 업그레이드할 수 없습니다. 업그레이드하려면 GA가 아닌 모든 데이터베이스 인스턴스를 삭제합니다. 릴리스 정보에서 일반 공급 및 미리 보기 서비스 목록을 찾을 수 있습니다.

지원되는 업그레이드 경로는 Azure Arc 지원 데이터 서비스 업그레이드를 참조하세요.

업그레이드

데이터 컨트롤러 업그레이드를 시작하기 전에 Kubernetes 클러스터에 연결하여 인증하고 기존 Kubernetes 컨텍스트를 선택해야 합니다.

업그레이드를 실행하기 위한 서비스 계정 만들기

Important

서비스 계정, 역할 바인딩, 클러스터 역할, 클러스터 역할 바인딩 및 서비스 계정에 부여되는 모든 RBAC 권한을 만들기 위한 Kubernetes 권한이 필요합니다.

arcdata-deployer.yaml의 복사본을 저장하고 파일의 자리 표시자를 {{NAMESPACE}} 데이터 컨트롤러의 네임스페이스(예: arc)로 바꿉니다. 다음 명령을 실행하여 편집된 파일로 배포자 서비스 계정을 만듭니다.

kubectl apply --namespace arc -f arcdata-deployer.yaml

부트스트래퍼 업그레이드

다음 명령은 부트스트래퍼 및 관련 Kubernetes 개체를 업그레이드하는 작업을 만듭니다.

Important

다음 명령의 yaml 파일은 기본적으로 mcr.microsoft.com/arcdata입니다. yaml 파일의 복사본을 저장하고 필요한 경우 다른 레지스트리/리포지토리를 사용하도록 업데이트하세요.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/bootstrapper-upgrade-job.yaml

데이터 컨트롤러 업그레이드

다음 명령은 이미지 태그를 패치하여 데이터 컨트롤러를 업그레이드합니다.

kubectl apply --namespace arc -f https://raw.githubusercontent.com/microsoft/azure_arc/main/arc_data_services/upgrade/yaml/data-controller-upgrade.yaml

업그레이드 상태 모니터링

kubectl을 사용하여 업그레이드의 진행률을 모니터링할 수 있습니다.

kubectl

kubectl get datacontrollers --namespace <namespace> -w
kubectl get monitors --namespace <namespace> -w

업그레이드는 두 부분으로 구성된 프로세스입니다. 먼저 컨트롤러가 업그레이드된 다음 모니터링 스택이 업그레이드됩니다. 업그레이드하는 동안 kubectl get monitors -n <namespace> -w를 사용하여 상태를 확인합니다. 다음과 같이 출력됩니다.

NAME           STATUS     AGE
monitorstack   Updating   36m
monitorstack   Updating   36m
monitorstack   Updating   39m
monitorstack   Updating   39m
monitorstack   Updating   41m
monitorstack   Ready      41m

문제 해결

원하는 버전이 특정 버전으로 설정되면 부트스트래퍼 작업은 성공할 때까지 해당 버전으로 업그레이드를 시도합니다. 업그레이드에 성공하면 사양의 RunningVersion 속성이 새 버전으로 업데이트됩니다. 잘못된 이미지 태그, 레지스트리 또는 리포지토리에 연결할 수 없음, 컨테이너에 할당된 CPU 또는 메모리 부족 또는 스토리지 부족과 같은 시나리오의 경우 업그레이드가 실패할 수 있습니다.

  1. 아래 명령을 실행하여 Pod가 Error 상태를 표시하거나 다시 시작 횟수가 많은지 확인합니다.

    kubectl get pods --namespace <namespace>
    
  2. 오류가 있는지 확인하기 위해 이벤트를 보려면 다음을 실행합니다.

    kubectl describe pod <pod name> --namespace <namespace>
    
  3. Pod의 컨테이너 목록을 가져오려면 다음을 실행합니다.

    kubectl get pods <pod name> --namespace <namespace> -o jsonpath='{.spec.containers[*].name}*'
    
  4. 컨테이너에 대한 로그를 가져오려면 다음을 실행합니다.

    kubectl logs <pod name> <container name> --namespace <namespace>
    

일반적인 오류와 문제 해결 방법을 보려면 문제 해결 리소스로 이동합니다.