GKE on AWS 업그레이드

GKE on AWS 환경을 업그레이드하려면 먼저 관리 서비스를 업그레이드한 다음 사용자 클러스터를 업그레이드합니다.

관리 서비스

다음 섹션에서는 관리 서비스를 업그레이드합니다.

시작하기 전에

GKE on AWS 리소스에 연결하려면 다음 단계를 수행하세요. 기존 AWS VPC가 있거나 VPC에 직접 연결되어 있는지 또는 관리 서비스를 만들 때 전용 VPC를 만들었는지 선택합니다.

기존 VPC

기존 VPC에 직접 또는 VPN으로 연결된 경우 이 주제의 명령어에서 env HTTP_PROXY=http://localhost:8118 줄을 생략합니다.

전용 VPC

전용 VPC에서 관리 서비스를 만들면 GKE on AWS의 공개 서브넷에 배스천 호스트가 포함됩니다.

관리 서비스에 연결하려면 다음 단계를 수행하세요.

  1. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.

    cd anthos-aws

  2. bastion-tunnel.sh 스크립트를 실행하여 터널을 엽니다. 터널이 localhost:8118로 연결됩니다.

    배스천 호스트에 대한 터널을 열려면 다음 명령어를 실행합니다.

    ./bastion-tunnel.sh -N
    

    SSH 터널의 메시지가 이 창에 표시됩니다. 연결을 종료할 준비가 되면 Control+C를 사용하거나 창을 닫아 프로세스를 중지합니다.

  3. 새 터미널을 열고 anthos-aws 디렉터리로 변경합니다.

    cd anthos-aws
  4. kubectl을 사용하여 클러스터에 연결할 수 있는지 확인합니다.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    출력에는 관리 서비스 API 서버의 URL이 포함됩니다.

관리 서비스 업그레이드

관리 서비스를 업그레이드하려면 anthos-gke의 새 버전을 다운로드하고 anthos-gke.yaml을 수정한 후 변경사항을 적용합니다.

anthos-gke 새 버전 다운로드

anthos-gke 도구의 최신 버전은 aws-1.14.1-gke.0입니다. anthos-gke의 새 버전을 다운로드하려면 다음 단계를 따르세요.

anthos-gke 명령줄 도구에서는 Linux 및 macOS만 지원됩니다.

  1. Cloud Storage에서 바이너리를 다운로드합니다.

    Linux

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
    

    macOS

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
    
  2. anthos-gke의 권한을 업데이트하여 /usr/local/bin에 복사합니다.

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. 버전이 aws-1.14.1-gke.0인지 확인합니다.

    anthos-gke version
    

관리 서비스 업그레이드

클러스터를 업그레이드하려면 다음 단계를 수행하세요.

  1. GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
    cd anthos-aws
  2. 텍스트 편집기에서 anthos-gke.yaml을 엽니다. spec.version 값을 aws-1.14.1-gke.0으로 변경합니다.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     version: aws-1.14.1-gke.0
     region: aws-region
     ...
    
  3. anthos-gke aws management init를 실행하여 AWSManagementService 객체를 검증하고 anthos-gke.status.yaml 파일을 업데이트합니다.

    anthos-gke aws management init
    
  4. anthos-gke aws management apply를 실행하여 AWS의 관리 서비스를 업데이트합니다.

    anthos-gke aws management apply
    

    anthos-gke 명령어를 통해 관리 서비스를 업그레이드하기 시작합니다. 업그레이드가 완료되는 데 최대 10분 정도 걸릴 수 있습니다.

사용자 클러스터

다음 섹션에서는 사용자 클러스터를 업그레이드합니다.

시작하기 전에

이 단계를 완료하려면 먼저 관리 서비스와 1개 이상의 사용자 클러스터가 있어야 합니다.

지원되는 Kubernetes 버전

GKE on AWS aws-1.14.1-gke.0은 다음 Kubernetes 버전을 지원합니다.

  • 1.23.15-gke.2000
  • 1.24.9-gke.2100
  • 1.25.5-gke.2100

이전 지원 버전에 대한 자세한 내용은 출시 노트를 참조하세요.

구성요소 업그레이드

이 섹션에서는 AWSCluster와 AWSNodePool의 업그레이드에 대해 설명합니다.

AWSCluster

AWSNodePool을 업데이트하지 않고 AWSCluster를 새로운 버전의 GKE on AWS로 업데이트할 수 있습니다.

AWSNodePool

AWSNodePool을 AWSCluster보다 최신 버전으로 업데이트할 수 없습니다. AWSNodePool을 업데이트하려면 먼저 AWSCluster를 업데이트해야 합니다.

AWSNodePool 버전은 AWSCluster 버전보다 부버전 두 개 이상 뒤쳐져서는 안 됩니다.

기존 AWSCluster 및 AWSNodePool 업그레이드

클러스터를 업그레이드하려면 관리 서비스의 AWSCluster 객체와 AWSNodePool 객체의 version 필드를 업데이트합니다.

AWSCluster

AWSCluster를 업그레이드하려면 다음 단계를 수행합니다.

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. AWSCluster를 만든 YAML 파일을 텍스트 편집기에서 엽니다. 초기 YAML 파일이 없으면 kubectl edit를 사용할 수 있습니다.

    YAML 수정

    사용자 클러스터 만들기 안내를 따랐으면 YAML 파일 이름은 cluster-0.yaml입니다. 이 파일을 텍스트 편집기에서 엽니다.

    kubectl 수정

    kubectl edit를 사용하여 AWSCluster를 수정하려면 다음 명령어를 실행합니다.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    cluster-name을 AWSCluster로 바꿉니다. 예를 들어 기본 클러스터 cluster-0을 수정하려면 다음 명령어를 실행합니다.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. spec.controlPlane.version 필드를 최신 버전의 GKE on AWS로 업데이트합니다. 최신 버전은 1.25.5-gke.2100입니다.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      region: us-east-1
      controlPlane:
        version: gke_version
        instanceType: t3.medium
      ...
    

    gke-version을 원하는 Kubernetes 버전으로 바꿉니다. 지원되는 최신 Kubernetes 버전은 1.25.5-gke.2100입니다.

  4. 파일을 저장합니다. kubectl edit을 사용하는 경우 kubectl이 변경사항을 자동으로 적용합니다. YAML 파일을 편집하는 경우 다음 명령어를 사용하여 관리형 서비스에 적용합니다.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl apply -f cluster-0.yaml
    

    그러면 관리형 서비스가 AWSCluster를 업데이트합니다.

AWSNodePool

AWSNodePool을 업그레이드하려면 다음 단계를 수행합니다.

  1. anthos-aws 디렉터리에서 anthos-gke를 사용하여 컨텍스트를 관리 서비스로 전환합니다.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. AWSNodePool을 만든 YAML 파일을 텍스트 편집기에서 엽니다. 사용자 클러스터 만들기 안내를 따랐으면 이 파일의 이름은 cluster-0.yaml입니다.

  3. AWSNodePool 리소스의 spec.version 값을 업데이트합니다.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    metadata:
      name: cluster-0-pool-0
    spec:
      clusterName: cluster-0
      region: us-east-1
      version: gke-version
      ...
    

    gke-version을 원하는 Kubernetes 버전으로 바꿉니다. 지원되는 최신 Kubernetes 버전은 1.25.5-gke.2100입니다.

  4. kubectl을 사용하여 관리 서비스에 새 구성을 적용합니다.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    

    그러면 관리 서비스가 AWSNodePool을 업데이트합니다(한 번에 하나의 노드). 노드가 종료되기 전에 해당 노드에서 실행 중인 pod는 SIGTERM을 수신합니다. 유예 기간이 지난 후 Pod가 종료되지 않으면 Pod는 SIGKILL을 수신합니다.

상태 보기

업그레이드 상태를 확인하려면 관리 서비스에 kubectl get AWSClusters를 실행합니다.

env HTTPS_PROXY=http://localhost:8118 \
    kubectl get AWSClusters

출력에는 각 클러스터의 이름, 상태, 사용 기간, 버전, 엔드포인트가 포함됩니다. 예를 들어 다음 출력에는 cluster-0이라는 AWSCluster가 하나 포함됩니다.

NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Upgrading   2m41s      1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com

클러스터의 STATE프로비저닝되면 사용자 클러스터 업그레이드가 완료됩니다.