如要升級 GKE on AWS 環境,請先升級管理服務,再升級使用者叢集。
管理服務
在下列各節中,您將升級管理服務。
事前準備
如要連線至 GKE on AWS 資源,請按照下列步驟操作。選取您是否已有 AWS 虛擬私有雲 (或直接連線至虛擬私有雲),或是在建立管理服務時建立了專屬虛擬私有雲。
現有 VPC
如果您已透過直接連線或 VPN 連線至現有虛擬私有雲,請從本主題的指令中省略 env HTTP_PROXY=http://localhost:8118
行。
專用虛擬私有雲
在專屬虛擬私有雲中建立管理服務時,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 伺服器的網址。
升級管理服務
如要升級管理服務,請下載新版 anthos-gke
、編輯 anthos-gke.yaml
,然後套用變更。
下載新版 anthos-gke
anthos-gke
工具的最新版本為 aws-1.14.1-gke.0
。如要下載新版 anthos-gke
,請按照下列步驟操作:
anthos-gke
指令列工具僅支援 Linux 和 macOS。
從 Cloud Storage 下載二進位檔。
Linux
gcloud storage cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
macOS
gcloud storage 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
指令會開始升級管理服務。升級作業最多可能需要十分鐘才能完成。
使用者叢集
在以下各節中,您將升級使用者叢集。
事前準備
支援的 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
如要瞭解先前支援的版本,請參閱「版本資訊」。
元件升級
本節說明如何升級 AWSClusters 和 AWSNodePools。
AWSCluster
您可以將 AWSCluster 更新為新版 GKE on AWS,不必更新 AWSNodePools。
AWSNodePools
您無法將 AWSNodePool 更新為比 AWSCluster 更新的版本。如要更新 AWSNodePool,請先更新 AWSCluster。
AWSNodePools 版本必須至少比 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 edit
如要使用
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 在寬限期過後未關閉,系統會收到 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 為「Provisioned」(已佈建) 時,代表使用者叢集升級完成。