GKE on AWS 환경을 업그레이드하려면 먼저 관리 서비스를 업그레이드한 다음 사용자 클러스터를 업그레이드합니다.
관리 서비스
다음 섹션에서는 관리 서비스를 업그레이드합니다.
시작하기 전에
GKE on AWS 리소스에 연결하려면 다음 단계를 수행하세요. 기존 AWS VPC가 있거나 VPC에 직접 연결되어 있는지 또는 관리 서비스를 만들 때 전용 VPC를 만들었는지 선택합니다.
기존 VPC
기존 VPC에 직접 또는 VPN으로 연결된 경우 이 주제의 명령어에서 env HTTP_PROXY=http://localhost:8118
줄을 생략합니다.
전용 VPC
전용 VPC에서 관리 서비스를 만들면 GKE on AWS의 공개 서브넷에 배스천 호스트가 포함됩니다.
관리 서비스에 연결하려면 다음 단계를 수행하세요.
GKE on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
cd anthos-aws
bastion-tunnel.sh
스크립트를 실행하여 터널을 엽니다. 터널이localhost:8118
로 연결됩니다.배스천 호스트에 대한 터널을 열려면 다음 명령어를 실행합니다.
./bastion-tunnel.sh -N
SSH 터널의 메시지가 이 창에 표시됩니다. 연결을 종료할 준비가 되면 Control+C를 사용하거나 창을 닫아 프로세스를 중지합니다.
새 터미널을 열고
anthos-aws
디렉터리로 변경합니다.cd anthos-aws
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만 지원됩니다.
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 .
anthos-gke
의 권한을 업데이트하여/usr/local/bin
에 복사합니다.chmod 755 anthos-gke sudo mv anthos-gke /usr/local/bin
버전이
aws-1.14.1-gke.0
인지 확인합니다.anthos-gke version
관리 서비스 업그레이드
클러스터를 업그레이드하려면 다음 단계를 수행하세요.
- GKE on AWS 구성이 있는 디렉터리로 변경합니다.
이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
cd anthos-aws
텍스트 편집기에서
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 ...
anthos-gke aws management init
를 실행하여AWSManagementService
객체를 검증하고anthos-gke.status.yaml
파일을 업데이트합니다.anthos-gke aws management init
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를 업그레이드하려면 다음 단계를 수행합니다.
anthos-aws
디렉터리에서anthos-gke
를 사용하여 컨텍스트를 관리 서비스로 전환합니다.cd anthos-aws anthos-gke aws management get-credentials
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
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입니다.
파일을 저장합니다.
kubectl edit
을 사용하는 경우kubectl
이 변경사항을 자동으로 적용합니다. YAML 파일을 편집하는 경우 다음 명령어를 사용하여 관리형 서비스에 적용합니다.env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f cluster-0.yaml
그러면 관리형 서비스가 AWSCluster를 업데이트합니다.
AWSNodePool
AWSNodePool을 업그레이드하려면 다음 단계를 수행합니다.
anthos-aws
디렉터리에서anthos-gke
를 사용하여 컨텍스트를 관리 서비스로 전환합니다.cd anthos-aws anthos-gke aws management get-credentials
AWSNodePool을 만든 YAML 파일을 텍스트 편집기에서 엽니다. 사용자 클러스터 만들기 안내를 따랐으면 이 파일의 이름은
cluster-0.yaml
입니다.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입니다.
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가 프로비저닝되면 사용자 클러스터 업그레이드가 완료됩니다.