升級 GKE on AWS

如要升級 GKE on AWS 環境,請先升級管理服務,再升級使用者叢集

管理服務

在下列各節中,您將升級管理服務。

事前準備

如要連線至 GKE on AWS 資源,請按照下列步驟操作。選取您是否已有 AWS 虛擬私有雲 (或直接連線至虛擬私有雲),或是在建立管理服務時建立了專屬虛擬私有雲。

現有 VPC

如果您已透過直接連線或 VPN 連線至現有虛擬私有雲,請從本主題的指令中省略 env HTTP_PROXY=http://localhost:8118 行。

專用虛擬私有雲

在專屬虛擬私有雲中建立管理服務時,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 伺服器的網址。

升級管理服務

如要升級管理服務,請下載新版 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

    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 .
    
  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 指令會開始升級管理服務。升級作業最多可能需要十分鐘才能完成。

使用者叢集

在以下各節中,您將升級使用者叢集。

事前準備

如要完成這些步驟,您必須擁有管理服務和至少一個使用者叢集

支援的 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

如要升級叢集,請更新管理服務中 AWSClusterAWSNodePool 物件的 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 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
    
  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 editkubectl 會自動套用變更。如果您要編輯 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 在寬限期過後未關閉,系統會收到 SIGKILL。

查看狀態

如要取得升級狀態,請在管理服務上執行 kubectl get AWSClusters

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

輸出結果包含每個叢集的名稱、狀態、存在時間、版本和端點。 舉例來說,下列輸出內容包含一個名為 cluster-0AWSCluster

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

當叢集的 STATE 為「Provisioned」(已佈建) 時,代表使用者叢集升級完成。