本教學課程說明如何使用多叢集 Ingress 升級多叢集 Google Kubernetes Engine (GKE) 環境。本教學課程延續使用多叢集 Ingress 升級多叢集 GKE 的內容,更詳細地說明相關程序、架構和術語。建議您先閱讀概念文件,再開始本教學課程。
如要詳細比較多叢集 Ingress (MCI)、多叢集閘道 (MCG) 和負載平衡器與獨立網路端點群組 (LB 和獨立 NEG),請參閱為 GKE 選擇多叢集負載平衡 API。
本文適用對象為負責維護 GKE 叢集車隊的 Google Cloud 管理員。
建議您自動升級 GKE 叢集。自動升級是全代管功能,可根據Google Cloud決定的發布時間表,自動更新叢集 (控制層和節點)。這項作業不需要操作人員介入。不過,如果您想進一步掌控叢集的升級方式和時間,本教學課程將逐步說明如何升級多個叢集,讓應用程式在所有叢集上執行。接著,系統會使用多叢集 Ingress 逐一排空叢集,然後再升級。
架構
本教學課程使用下列架構。共有三個叢集:兩個叢集 (blue
和 green
) 是相同的叢集,部署的應用程式也相同,一個叢集 (ingress-config
) 則做為控制平面叢集,用於設定多叢集 Ingress。在本教學課程中,您將範例應用程式部署至兩個應用程式叢集 (blue
和 green
叢集)。
目標
- 建立三個 GKE 叢集,並註冊為機群。
- 將一個 GKE 叢集 (
ingress-config
) 設定為中央設定叢集。 - 將範例應用程式部署至其他 GKE 叢集。
- 設定多叢集 Ingress,將用戶端流量傳送至在兩個應用程式叢集上執行的應用程式。
- 為應用程式設定負載產生器,並設定監控功能。
- 從多叢集 Ingress 中移除 (排空) 一個應用程式叢集,然後升級排空的叢集。
- 使用多叢集 Ingress 將流量溢回升級後的叢集。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
- 本教學課程需要設定多叢集 Ingress,
以便設定下列項目:
- 兩個以上的叢集具有相同應用程式,例如命名空間、部署作業和服務,且這些應用程式在所有叢集上執行。
- 所有叢集都已停用自動升級功能。
- 叢集是使用別名 IP 位址範圍的虛擬私有雲原生叢集
- 啟用 HTTP 負載平衡 (預設為啟用)。
gcloud --version
必須為 369 以上。 GKE 叢集註冊步驟會因這個版本而異。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, activate Cloud Shell.
設定您的預設專案:
export PROJECT=$(gcloud info --format='value(config.project)') gcloud config set project ${PROJECT}
啟用 GKE、Hub 和
multiclusteringress
API:gcloud services enable container.googleapis.com \ gkehub.googleapis.com \ multiclusteringress.googleapis.com \ multiclusterservicediscovery.googleapis.com
設定環境
在 Cloud Shell 中複製存放區,取得本教學課程的檔案:
cd ${HOME} git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
建立
WORKDIR
目錄:cd kubernetes-engine-samples/networking/gke-multicluster-upgrade-mci/ export WORKDIR=`pwd`
建立 GKE 叢集並向 Hub 註冊
在本節中,您將建立三個 GKE 叢集,並向 GKE Enterprise Hub 註冊這些叢集。
建立 GKE 叢集
在 Cloud Shell 中建立三個 GKE 叢集:
gcloud container clusters create ingress-config --location us-west1-a \ --release-channel=None --no-enable-autoupgrade --num-nodes=4 \ --enable-ip-alias --workload-pool=${PROJECT}.svc.id.goog --quiet --async gcloud container clusters create blue --location us-west1-b --num-nodes=3 \ --release-channel=None --no-enable-autoupgrade --enable-ip-alias \ --workload-pool=${PROJECT}.svc.id.goog --quiet --async gcloud container clusters create green --location us-west1-c --num-nodes=3 \ --release-channel=None --no-enable-autoupgrade --enable-ip-alias \ --workload-pool=${PROJECT}.svc.id.goog --quiet
在本教學課程中,您會在單一區域的三個不同區域 (
us-west1-a
、us-west1-b
和us-west1-c
) 中建立叢集。如要進一步瞭解地區和區域,請參閱地理位置與地區。稍候幾分鐘,直到所有叢集建立成功,然後確認叢集正在執行:
gcloud container clusters list
輸出結果會與下列內容相似:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING
建立
kubeconfig
檔案,並連線至所有叢集,在kubeconfig
檔案中產生項目:touch gke-upgrade-kubeconfig export KUBECONFIG=gke-upgrade-kubeconfig gcloud container clusters get-credentials ingress-config \ --location us-west1-a --project ${PROJECT} gcloud container clusters get-credentials blue --location us-west1-b \ --project ${PROJECT} gcloud container clusters get-credentials green --location us-west1-c \ --project ${PROJECT}
您可以使用
kubeconfig
檔案為每個叢集建立使用者和背景資訊,藉此為叢集建立驗證。建立kubeconfig
檔案後,您就可以快速切換不同叢集的背景資訊。確認
kubeconfig
檔案中有三個叢集:kubectl config view -ojson | jq -r '.clusters[].name'
輸出內容如下:
gke_gke-multicluster-upgrades_us-west1-a_ingress-config gke_gke-multicluster-upgrades_us-west1-b_blue gke_gke-multicluster-upgrades_us-west1-c_green
取得這三個叢集的內容,以供日後使用:
export INGRESS_CONFIG_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep ingress-config) export BLUE_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep blue) export GREEN_CLUSTER=$(kubectl config view -ojson | jq \ -r '.clusters[].name' | grep green) echo -e "${INGRESS_CONFIG_CLUSTER}\n${BLUE_CLUSTER}\n${GREEN_CLUSTER}"
輸出內容如下:
gke_gke-multicluster-upgrades_us-west1-a_ingress-config gke_gke-multicluster-upgrades_us-west1-b_blue gke_gke-multicluster-upgrades_us-west1-c_green
將 GKE 叢集註冊至機群
將叢集註冊至機群後,您就能在混合式環境中運作 Kubernetes 叢集。註冊至機群的叢集可以使用多叢集 Ingress 等進階 GKE 功能。如要將 GKE 叢集註冊至車隊,您可以直接使用 Google Cloud服務帳戶,也可以使用建議的 GKE 適用的工作負載身分聯盟方法,讓 GKE 叢集中的 Kubernetes 服務帳戶做為 Identity and Access Management 服務帳戶。
將這三個叢集註冊為機群:
gcloud container fleet memberships register ingress-config \ --gke-cluster=us-west1-a/ingress-config \ --enable-workload-identity gcloud container fleet memberships register blue \ --gke-cluster=us-west1-b/blue \ --enable-workload-identity gcloud container fleet memberships register green \ --gke-cluster=us-west1-c/green \ --enable-workload-identity
確認叢集已註冊:
gcloud container fleet memberships list
輸出結果會與下列內容相似:
NAME: blue EXTERNAL_ID: 401b4f08-8246-4f97-a6d8-cf1b78c2a91d NAME: green EXTERNAL_ID: 8041c36a-9d42-40c8-a67f-54fcfd84956e NAME: ingress-config EXTERNAL_ID: 65ac48fe-5043-42db-8b1e-944754a0d725
透過 Hub 啟用
multiclusteringress
功能,將ingress-config
叢集設為多叢集 Ingress 的設定叢集:gcloud container fleet ingress enable --config-membership=ingress-config
上述指令會將
MulticlusterIngress
和MulticlusterService
CRD (自訂資源定義) 新增至ingress-config
叢集。這個指令需要幾分鐘才能完成。請稍候片刻,再進行下一個步驟。確認
ingress-cluster
叢集已成功設定 Multi Cluster Ingress:watch gcloud container fleet ingress describe
等待輸出結果與下列內容相似:
createTime: '2022-07-05T10:21:40.383536315Z' membershipStates: projects/662189189487/locations/global/memberships/blue: state: code: OK updateTime: '2022-07-08T10:59:44.230329189Z' projects/662189189487/locations/global/memberships/green: state: code: OK updateTime: '2022-07-08T10:59:44.230329950Z' projects/662189189487/locations/global/memberships/ingress-config: state: code: OK updateTime: '2022-07-08T10:59:44.230328520Z' name: projects/gke-multicluster-upgrades/locations/global/features/multiclusteringress resourceState: state: ACTIVE spec: multiclusteringress: configMembership: projects/gke-multicluster-upgrades/locations/global/memberships/ingress-config state: state: code: OK description: Ready to use updateTime: '2022-07-08T10:57:33.303543609Z' updateTime: '2022-07-08T10:59:45.247576318Z'
如要結束
watch
指令,請按 Control+C。
將範例應用程式部署至藍色和綠色叢集
在 Cloud Shell 中,將範例
whereami
應用程式部署至blue
和green
叢集:kubectl --context ${BLUE_CLUSTER} apply -f ${WORKDIR}/application-manifests kubectl --context ${GREEN_CLUSTER} apply -f ${WORKDIR}/application-manifests
請稍候幾分鐘,確認
blue
和green
叢集中的所有 Pod 狀態皆為Running
:kubectl --context ${BLUE_CLUSTER} get pods kubectl --context ${GREEN_CLUSTER} get pods
輸出結果會與下列內容相似:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-zsmr6 1/1 Running 0 74s NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-sndz7 1/1 Running 0 68s.
設定多叢集 Ingress
在本節中,您將建立多叢集 Ingress,將流量傳送至 blue
和 green
叢集上執行的應用程式。您可以使用 Cloud Load Balancing 建立負載平衡器,並將 blue
和 green
叢集中的 whereami
應用程式做為後端。如要建立負載平衡器,您需要兩個資源:MultiClusterIngress
和一或多個 MultiClusterServices
。MultiClusterIngress
和 MultiClusterService
物件是多叢集類似項目,適用於單一叢集環境中現有的 Kubernetes Ingress 和 Service 資源。
在 Cloud Shell 中,將
MulticlusterIngress
資源部署至ingress-config
叢集:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mci.yaml
輸出內容如下:
multiclusteringress.networking.gke.io/whereami-mci created
將
MulticlusterService
資源部署至ingress-config
叢集:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
輸出內容如下:
multiclusterservice.networking.gke.io/whereami-mcs created
如要比較這兩項資源,請按照下列步驟操作:
檢查
MulticlusterIngress
資源:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusteringress -o yaml
輸出內容包含下列項目:
spec: template: spec: backend: serviceName: whereami-mcs servicePort: 8080
MulticlusterIngress
資源與 Kubernetes Ingress 資源類似,但serviceName
規格會指向MulticlusterService
資源。檢查
MulticlusterService
資源:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice -o yaml
輸出內容包含下列項目:
spec: clusters: - link: us-west1-b/blue - link: us-west1-c/green template: spec: ports: - name: web port: 8080 protocol: TCP targetPort: 8080 selector: app: whereami
MulticlusterService
資源與 Kubernetes Service 資源類似,但具有clusters
規格。clusters
值是已註冊的叢集清單,其中會建立MulticlusterService
資源。確認
MulticlusterIngress
資源是否已建立負載平衡器,且後端服務指向MulticlusterService
資源:watch kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o jsonpath="{.items[].status.VIP}"
最多可能需要 10 分鐘。請等待輸出內容與下列內容類似:
34.107.246.9
如要結束
watch
指令,請按下Control+C
。
在 Cloud Shell 中,取得 Cloud Load Balancing VIP:
export GCLB_VIP=$(kubectl --context ${INGRESS_CONFIG_CLUSTER} \ get multiclusteringress -o json | jq -r '.items[].status.VIP') \ && echo ${GCLB_VIP}
輸出結果會與下列內容相似:
34.107.246.9
使用
curl
存取負載平衡器和已部署的應用程式:curl ${GCLB_VIP}
輸出結果會與下列內容相似:
{ "cluster_name": "green", "host_header": "34.107.246.9", "pod_name": "whereami-deployment-756c7dc74c-sndz7", "pod_name_emoji": "😇", "project_id": "gke-multicluster-upgrades", "timestamp": "2022-07-08T14:26:07", "zone": "us-west1-c" }
重複執行
curl
指令。請注意,系統會在部署至兩個叢集 (blue
和green
) 的whereami
應用程式之間,平衡負載要求。
設定負載產生器
在本節中,您將設定 loadgenerator
服務,產生傳送至 Cloud Load Balancing VIP 的用戶端流量。首先,流量會傳送至 blue
和 green
叢集,因為 MulticlusterService
資源已設定為將流量傳送至這兩個叢集。稍後,您會設定 MulticlusterService
資源,將流量傳送至單一叢集。
設定
loadgenerator
資訊清單,將用戶端流量傳送至 Cloud Load Balancing:TEMPLATE=loadgen-manifests/loadgenerator.yaml.templ && envsubst < ${TEMPLATE} > ${TEMPLATE%.*}
在
ingress-config
叢集中部署loadgenerator
:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply -f ${WORKDIR}/loadgen-manifests
確認
ingress-config
叢集中的loadgenerator
Pod 狀態皆為Running
:kubectl --context ${INGRESS_CONFIG_CLUSTER} get pods
輸出結果會與下列內容相似:
NAME READY STATUS RESTARTS AGE loadgenerator-5498cbcb86-hqscp 1/1 Running 0 53s loadgenerator-5498cbcb86-m2z2z 1/1 Running 0 53s loadgenerator-5498cbcb86-p56qb 1/1 Running 0 53s
如果任何 Pod 的狀態不是
Running
,請稍候幾分鐘,然後再次執行指令。
監控流量
在本節中,您將使用Google Cloud 控制台監控 whereami
應用程式的流量。
在上一節中,您設定了 loadgenerator
部署作業,透過存取 Cloud Load Balancing VIP 中的 whereami
應用程式,模擬用戶端流量。您可以透過Google Cloud 控制台監控這些指標。請先設定監控功能,以便在排空叢集以進行升級時監控 (詳見下一節)。
建立資訊主頁,顯示抵達多叢集 Ingress 的流量:
export DASH_ID=$(gcloud monitoring dashboards create \ --config-from-file=dashboards/cloud-ops-dashboard.json \ --format=json | jq -r ".name" | awk -F '/' '{print $4}')
輸出結果會與下列內容相似:
Created [721b6c83-8f9b-409b-a009-9fdf3afb82f8]
您可以在Google Cloud 主控台中查看 Cloud Load Balancing 的指標。產生網址:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
輸出結果會與下列內容相似:
https://console.cloud.google.com/monitoring/dashboards/builder/721b6c83-8f9b-409b-a009-9fdf3afb82f8/?project=gke-multicluster-upgrades&timeDomain=1h"
在瀏覽器中前往上一個指令產生的網址。
範例應用程式的流量會從負載產生器傳送至
blue
和green
叢集 (以叢集所在的兩個區域表示)。時間軸指標圖表會顯示前往兩個後端的流量。滑鼠懸停在值上時,會顯示兩個前端MulticlusterServices
的網路端點群組 (NEG) 正在blue
和green
叢集中執行。k8s1-
排空並升級 blue
叢集
在本節中,您將排空 blue
叢集。排空叢集是指將叢集從負載平衡集區中移除。排空 blue
叢集後,所有傳送至應用程式的用戶端流量都會導向 green
叢集。如要監控這個程序,請參閱上一節的說明。叢集排空後,即可升級排空的叢集。升級完成後,即可將其放回負載平衡集區。重複這些步驟,即可升級其他叢集 (本教學課程未顯示)。
如要排空 blue
叢集,請更新 ingress-cluster
叢集中的 MulticlusterService
資源,並從 clusters
規格中移除 blue
叢集。
排空藍色叢集
在 Cloud Shell 中,更新
ingress-config
叢集中的MulticlusterService
資源:kubectl --context ${INGRESS_CONFIG_CLUSTER} \ apply -f ${WORKDIR}/multicluster-manifests/mcs-green.yaml
確認
clusters
規格中只有green
叢集:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'
輸出內容如下:
[ { "link": "us-west1-c/green" } ]
clusters
規格中只列出green
叢集,因此只有green
叢集位於負載平衡集區中。您可以在Google Cloud 主控台中查看 Cloud Load Balancing 指標。產生網址:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
在瀏覽器中前往上一個指令產生的網址。
圖表顯示只有
green
叢集收到流量。
升級 blue
叢集
blue
叢集不再接收任何用戶端流量,現在可以升級叢集 (控制層和節點)。
在 Cloud Shell 中,取得叢集的目前版本:
gcloud container clusters list
輸出結果會與下列內容相似:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING
叢集版本可能因完成本教學課程的時間而異。
取得區域中可用的
MasterVersions
版本清單:gcloud container get-server-config --location us-west1-b --format=json | jq \ '.validMasterVersions[0:20]'
輸出結果會與下列內容相似:
[ "1.24.1-gke.1400", "1.23.7-gke.1400", "1.23.6-gke.2200", "1.23.6-gke.1700", "1.23.6-gke.1501", "1.23.6-gke.1500", "1.23.5-gke.2400", "1.23.5-gke.1503", "1.23.5-gke.1501", "1.22.10-gke.600", "1.22.9-gke.2000", "1.22.9-gke.1500", "1.22.9-gke.1300", "1.22.8-gke.2200", "1.22.8-gke.202", "1.22.8-gke.201", "1.22.8-gke.200", "1.21.13-gke.900", "1.21.12-gke.2200", "1.21.12-gke.1700" ]
取得可用區的可用
NodeVersions
版本清單:gcloud container get-server-config --location us-west1-b --format=json | jq \ '.validNodeVersions[0:20]'
輸出結果會與下列內容相似:
[ "1.24.1-gke.1400", "1.23.7-gke.1400", "1.23.6-gke.2200", "1.23.6-gke.1700", "1.23.6-gke.1501", "1.23.6-gke.1500", "1.23.5-gke.2400", "1.23.5-gke.1503", "1.23.5-gke.1501", "1.22.10-gke.600", "1.22.9-gke.2000", "1.22.9-gke.1500", "1.22.9-gke.1300", "1.22.8-gke.2200", "1.22.8-gke.202", "1.22.8-gke.201", "1.22.8-gke.200", "1.22.7-gke.1500", "1.22.7-gke.1300", "1.22.7-gke.900" ]
為
MasterVersions
和NodeVersions
清單中的MasterVersion
和NodeVersion
版本設定環境變數,且該版本高於blue
叢集的目前版本,例如:export UPGRADE_VERSION="1.22.10-gke.600"
本教學課程使用
。1.22.10-gke.600
版本。叢集版本可能有所不同,具體取決於您完成本教學課程時可用的版本。如要進一步瞭解升級,請參閱升級叢集和節點集區。升級
blue
叢集的control plane
節點:gcloud container clusters upgrade blue \ --location us-west1-b --master --cluster-version ${UPGRADE_VERSION}
如要確認升級,請按
Y
。此程序需要幾分鐘才能完成。請等待升級完成再繼續操作。
更新完成後,輸出內容如下:
Updated [https://container.googleapis.com/v1/projects/gke-multicluster-upgrades/zones/us-west1-b/clusters/blue].
升級
blue
叢集中的節點:gcloud container clusters upgrade blue \ --location=us-west1-b --node-pool=default-pool \ --cluster-version ${UPGRADE_VERSION}
按下
Y
即可確認更新。此程序需要幾分鐘才能完成。請等待節點升級完成再繼續操作。
升級完成後,輸出內容如下:
Upgrading blue... Done with 3 out of 3 nodes (100.0%): 3 succeeded...done. Updated [https://container.googleapis.com/v1/projects/gke-multicluster-upgrades/zones/us-west1-b/clusters/blue].
確認
blue
叢集已升級:gcloud container clusters list
輸出結果會與下列內容相似:
NAME: ingress-config LOCATION: us-west1-a MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.233.186.135 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 4 STATUS: RUNNING NAME: blue LOCATION: us-west1-b MASTER_VERSION: 1.22.10-gke.600 MASTER_IP: 34.82.35.222 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.10-gke.600 NUM_NODES: 3 STATUS: RUNNING NAME: green LOCATION: us-west1-c MASTER_VERSION: 1.22.8-gke.202 MASTER_IP: 35.185.204.26 MACHINE_TYPE: e2-medium NODE_VERSION: 1.22.8-gke.202 NUM_NODES: 3 STATUS: RUNNING
將 blue
叢集加回負載平衡集區
在本節中,您會將 blue
叢集加回負載平衡集區。
在 Cloud Shell 中,確認應用程式部署作業正在
blue
叢集上執行,然後再將其加回負載平衡集區:kubectl --context ${BLUE_CLUSTER} get pods
輸出結果會與下列內容相似:
NAME READY STATUS RESTARTS AGE whereami-deployment-756c7dc74c-xdnb6 1/1 Running 0 17m
更新
MutliclusterService
資源,將blue
叢集加回負載平衡集區:kubectl --context ${INGRESS_CONFIG_CLUSTER} apply \ -f ${WORKDIR}/multicluster-manifests/mcs-blue-green.yaml
確認叢集規格中同時有
blue
和green
叢集:kubectl --context ${INGRESS_CONFIG_CLUSTER} get multiclusterservice \ -o json | jq '.items[].spec.clusters'
輸出內容如下:
[ { "link": "us-west1-b/blue" }, { "link": "us-west1-c/green" } ]
blue
和green
叢集現在位於clusters
規格中。您可以在Google Cloud 控制台中查看 Cloud Load Balancing 指標。產生網址:
echo "https://console.cloud.google.com/monitoring/dashboards/builder/${DASH_ID}/?project=${PROJECT}&timeDomain=1h"
在瀏覽器中前往上一個指令產生的網址。
圖表顯示藍色和綠色叢集都透過負載平衡器接收負載產生器的流量。
恭喜!您已使用多叢集 Ingress,在多叢集架構中成功升級 GKE 叢集。
如要升級
green
叢集,請重複執行排空並升級藍色叢集的程序,並將所有blue
替換為green
。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
如要避免付費,最簡單的方法就是刪除您為本教學課程建立的專案。 Google Cloud 或者,您也可以刪除個別資源。
刪除叢集
在 Cloud Shell 中,取消註冊並刪除
blue
和green
叢集:gcloud container fleet memberships unregister blue --gke-cluster=us-west1-b/blue gcloud container clusters delete blue --location us-west1-b --quiet gcloud container fleet memberships unregister green --gke-cluster=us-west1-c/green gcloud container clusters delete green --location us-west1-c --quiet
從
ingress-config
叢集刪除MuticlusterIngress
資源:kubectl --context ${INGRESS_CONFIG_CLUSTER} delete -f ${WORKDIR}/multicluster-manifests/mci.yaml
這項指令會從專案中刪除 Cloud Load Balancing 資源。
取消註冊並刪除
ingress-config
叢集:gcloud container fleet memberships unregister ingress-config --gke-cluster=us-west1-a/ingress-config gcloud container clusters delete ingress-config --location us-west1-a --quiet
確認所有叢集都已刪除:
gcloud container clusters list
輸出內容如下:
*<null>*
重設
kubeconfig
檔案:unset KUBECONFIG
移除
WORKDIR
資料夾:cd ${HOME} rm -rf ${WORKDIR}
刪除專案
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
- 進一步瞭解多叢集 Ingress。
- 瞭解如何在叢集之間部署多叢集 Ingress。
- 探索 Google Cloud 的參考架構、圖表和最佳做法。 歡迎瀏覽我們的雲端架構中心。