如要升級 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」(已佈建) 時,代表使用者叢集升級完成。