Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Scale Up Hello App
/ 30
Create node pool
/ 30
Managing a Regional Cluster
/ 20
Simulate Traffic
/ 20
Google Kubernetes Engine 叢集的底層基礎架構,是由多個 Compute VM 執行個體節點組成。本實驗室將說明如何調整叢集基礎架構,以便獲得最佳效益,在節省成本的同時,也能提高應用程式架構的效率。
您將瞭解如何為範例工作負載選擇適當的機型,充分利用寶貴的基礎架構資源,避免資源使用率過低。除了類型之外,基礎架構的實際地理位置也會影響成本。透過這項練習,您將瞭解如何制定高可用性區域叢集管理策略,並確保符合成本效益。
本實驗室的學習內容包括:
請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。
您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。
為了順利完成這個實驗室,請先確認:
點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
如有必要,請將下方的 Username 貼到「登入」對話方塊。
您也可以在「Lab Details」窗格找到 Username。
點選「下一步」。
複製下方的 Password,並貼到「歡迎使用」對話方塊。
您也可以在「Lab Details」窗格找到 Password。
點選「下一步」。
按過後續的所有頁面:
Google Cloud 控制台稍後會在這個分頁開啟。
本實驗室會產生一個小型叢集供您使用,佈建時間大約 2 至 5 分鐘。
如果按下「Start Lab」按鈕後,看見藍色的 resources being provisioned 訊息和載入圈圈,代表叢集仍在建立中。
在等待期間,您可以閱讀後續的指示和說明,但在資源佈建完成之前,您將無法執行任何殼層指令。
機型是虛擬機器 (VM) 執行個體可以使用的一組虛擬化硬體資源,包括特定大小的系統記憶體、既定數量的虛擬 CPU (vCPU),以及設有上限的永久磁碟容量。機型可依工作負載分為不同系列。
選擇節點集區的機型時,一般用途機型系列通常可為多種工作負載提供最佳性價比。一般用途機型包含 N 系列和 E2 系列:
機型之間的差異不一定對應用程式有助益。一般而言,E2 和 N1 系列的效能相近,但前者的成本效益最佳。通常單獨使用 E2 機型比較能節省成本。
不過,使用叢集時,最重要的是根據應用程式需求充分利用資源。大型應用程式或部署項目需要大量調度資源,因此將工作負載堆疊在少數最佳化機器上,會比分散在很多一般用途機器上更經濟實惠。
您做出這項決定時,一定要對應用程式有充分瞭解,才能確保機型符合應用程式需求。
在下個部分,您將查看示範應用程式,並將其遷移至設有合適機型的節點集區。
實驗室啟動時已產生 Hello 示範叢集,其中包含兩個 E2 中型節點 (2 個 vCPU,4 GB 記憶體)。這個叢集將部署簡易網頁應用程式 Hello App 的一個副本。此應用程式是用 Go 編寫的網路伺服器,會對所有要求回應「Hello, World!」訊息。
在「Kubernetes 叢集」視窗中,選取「hello-demo-cluster」。
在後續視窗中選取「節點」分頁標籤:
您應會看到自己的叢集節點清單。
請觀察 GKE 如何利用您的叢集資源。您可以查看每個節點要求了多少 CPU 和記憶體,以及可分配給節點的資源量。
請查看「Pod」部分。您應會在 default 命名空間中看到 hello-server Pod。如果找不到 hello-server Pod,請返回「節點」分頁,並選取叢集的第二個節點。
您會發現 hello-server Pod 要求了 400 mCPU,另外還有一些 kube-system Pod 正在運作。載入這些 Pod 是為了協助執行 GKE 的叢集服務,例如監控。
如您所見,執行一項 Hello-App 副本和基本的 kube-system 服務時,需要兩個 E2-medium 節點。此外,儘管您已使用叢集中大部分的 CPU 資源,卻僅使用約三分之一的記憶體配額。
如果這個應用程式的工作負載固定不變,您就能精確掌握需要多少 CPU 和記憶體,建立完全符合需求的自訂機型。如此一來,整個叢集基礎架構都能節省費用。
不過,GKE 叢集通常會執行多個工作負載,這些工作負載一般需要配合需求擴充或縮減。
如果擴充 Hello 應用程式,會發生什麼情況?
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
點按 Google Cloud 控制台頂端的「啟用 Cloud Shell」圖示 。
系統顯示視窗時,請按照下列步驟操作:
連線建立完成即代表已通過驗證,而且專案已設為您的 Project_ID:
gcloud 是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
輸出內容:
輸出內容:
gcloud 的完整說明,請前往 Google Cloud 參閱 gcloud CLI 總覽指南。
Hello-Server:點選「Check my progress」,確認上述工作已完成。
您應會看到 hello-server 顯示「Does not have minimum availability」錯誤狀態。
Insufficient cpu。這在預期之內。如前所述,叢集中幾乎沒有多餘的 CPU 資源,而另外增加的 hello-server 副本需要額外的 400 mCPU。
系統詢問是否繼續時,請輸入 y 並按下 Enter 鍵。
在控制台中重新整理「工作負載」頁面,直到 hello-server 工作負載的狀態變成「正常」:
成功擴充工作負載後,請返回叢集的「節點」分頁。
節點集區越大,能處理的工作負載越重,但請注意基礎架構資源的使用情形。
GKE 會盡量充分利用叢集資源,不過這個範例中的資源使用情形仍有改進空間。您可看到有一個節點使用了大部分記憶體,另外兩個節點則有大量未使用的記憶體。
這時若繼續擴充應用程式,就會開始看到類似的模式:每次部署新 hello-server 副本時,Kubernetes 會嘗試尋找節點來因應新副本的需求,但由於找不到可用節點,於是建立有大約 600 mCPU 的新節點。
所謂裝箱問題,是指必須將一些體積或形狀不同的物品,裝入一定數量、有規則形狀的「箱子」或容器。解題目標是以最有效率的方式,將這些物品「裝箱」至最少數量的箱子中。
當我們調整 Kubernetes 叢集,尋找最經濟實惠的應用程式執行方式時,實際上就是在解決類似的問題。假設您有多個應用程式,各有不同的資源需求 (例如記憶體和 CPU),就必須確保這些應用程式盡可能有效利用 Kubernetes 管理的基礎架構資源 (可能占叢集成本的大部分)。
您的 Hello 示範叢集未採用高效率的裝箱方式。若能將 Kubernetes 設為使用更適合此工作負載的機型,便可提高成本效益。
點選「Check my progress」,確認上述工作已完成。
現在,您可以依照下列步驟,將 Pod 遷移至新的節點集區:
node) 中的節點標示為「無法排程」。這樣一來,Kubernetes 就會停止將新 Pod 安排至這些節點。node) 的節點上執行的工作負載。這時,您應會看到 Pod 在新節點集區 larger-pool 運作:
y 並按下 Enter 鍵。刪除作業大約需要 2 分鐘。等待時,您可以先閱讀下一部分內容。
您已將原本需要三部 e2-medium 機器處理的工作負載,改成用一部 e2-standard-2 機器處理。
我們來看看使用 e2 標準和共用核心機型的每小時費用:
標準:
共用核心:
三部 e2-medium 機器每小時的費用約 $0.1 美元,一部 e2-standard-2 機器每小時的費用約 $0.067 美元。
每小時省下 $.04 美元看似微不足道,但在應用程式的整個生命週期中,這筆成本可能持續增加,逐漸累積成可觀費用。如果使用更多資源,差異將更為明顯。由於 e2-standard-2 機器較符合工作負載的資源需求,且空間利用率更高,因此擴充成本增長速度較慢。
有趣的是,E2-medium 這種共用核心機型,是為不需要大量資源的小型應用程式設計,在這類應用程式上具經濟效益。然而,對於 Hello-App 目前的工作負載來說,使用機型較大的節點集區,卻是更符合成本效益的策略。
在 Cloud 控制台中,您應該仍在 hello-demo 叢集的「節點」分頁。請重新整理此分頁,檢視 larger-pool 節點的「所要求的 CPU」和「可分配的 CPU」欄位。
您會發現還有改進空間。新節點可以容納工作負載的另一項副本,不必佈建其他節點。另外,您或許能根據應用程式所需的 CPU 和記憶體,選擇適合的自訂大小機型,進一步節省資源。
值得注意的是,這些價格會依叢集位置而異。在下一部分,您將瞭解如何選擇最佳區域與管理區域叢集。
叢集節點使用的 Compute Engine 資源託管於全球多個據點,這些據點是由眾多區域和可用區構成。區域是您可以託管資源的特定地理位置,具有三個以上的可用區。
可用區中的資源,比如虛擬機器執行個體或可用區永久磁碟,都稱為可用區資源。靜態外部 IP 位址等其他資源,則為區域性資源。區域性資源可供所屬區域內的任何資源使用,不受可用區限制;可用區資源則只能由所屬可用區內的其他資源使用。
選擇區域或可用區時,請務必考慮下列事項:
區域成本差異取決於多種因素。比如,us-west2 區域的資源,通常比 us-central1 的資源昂貴。
選擇叢集的區域或可用區時,請考慮應用程式的實際運作情形。對於易受延遲影響的正式環境,將應用程式置於網路延遲時間較短、效率較高的區域/可用區,通常是最符合成本效益的做法。
另一方面,對於不太受延遲影響的開發環境,則可選擇成本較低的區域。
GKE 提供可用區叢集 (單一可用區或多可用區) 和區域叢集。從表面上看,單一可用區叢集是最便宜的選擇,但為了確保應用程式具備高可用性,最好將叢集的基礎架構資源分配到多個可用區。
很多時候,採用多可用區叢集或區域叢集,優先確保叢集可用性,這種架構的成本效益最佳。
跨可用區管理叢集資源會稍微複雜一些。一不小心,就可能因為 Pod 之間出現不必要的跨可用區通訊,累積額外成本。
在這個部分,您將觀察叢集的網路流量,並將兩個帶給彼此大量流量的高流量 Pod 移至同一可用區。
為了觀察 Pod 和節點之間的流量,您將在區域叢集中的兩個節點上分別建立一個 Pod。我們將使用 ping,從其中一個 Pod 產生流量到另一個 Pod,並加以監控。
點選「Check my progress」,確認上述工作已完成。
您建立的 Pod 會使用 node-hello 容器,並在收到要求時輸出 Hello Kubernetes 訊息。
如果回顧您建立的 pod-2.yaml 檔案,就會看到「Pod 反相依性」定義規則。這可以確保此 Pod「不會」安排至與 pod-1 相同的節點,因為規則會比對以 pod-1 的 security: demo 標籤為基礎的運算式。「Pod 相依性」規則可確保 Pod「會」安排至同一節點,「Pod 反相依性」規則則可確保 Pod「不會」安排到相同節點。
這裡使用「Pod 反相依性」規則,是為了呈現節點之間的流量,而您可以靈活運用「Pod 反相依性」和「Pod 相依性」,更有效利用區域叢集資源。
您會看到兩個傳回的 Pod 都顯示 Running 狀態,以及各自的內部 IP。
輸出內容範例:
請記下 pod-2 的 IP 位址,以備在後續指令中使用。
pod-1 容器的殼層:pod-2,並將以下指令中的 [POD-2-IP] 換成 pod-2 的內部 IP 位址:請記下從 pod-1 對 pod-2 執行連線偵測 (ping) 的平均延遲時間。
從 pod-1 對 pod-2 執行連線偵測 (ping) 時,您可以在建立叢集的虛擬私有雲子網路上,啟用流量記錄功能,以便觀察流量。
按一下「新增虛擬私有雲流量記錄設定」按鈕,然後在「子網路」下方點選「子網路新增設定」。
前往「目前專案中的子網路」分頁,在「虛擬私有雲網路」下拉式選單勾選「預設」,然後按一下「確定」。
接著,選取
按一下「設定 - 子網路 (Compute Engine API)」下方的「新增設定」,然後點選「完成」。
按一下「儲存」。
接下來,前往 Google Cloud 的「Logs Explorer」。按一下「所有記錄名稱」,接著選取「vpc_flows」,然後點選「套用」。
您將看到一份記錄檔清單,列出執行個體每次收發內容時產生的大量資訊。
如未產生記錄檔,請將 vpc_flows 前面的 / 替換成 %2F,如上方螢幕截圖所示。
這些記錄檔可能不太好讀。接著,請將記錄檔匯出成 BigQuery 資料表,以便查詢相關資訊。
將接收器命名為 FlowLogsSample。
點選「下一步」。
其他設定可以保持不變。
按一下「建立接收器」。
接著檢查新建立的資料集。在 Cloud 控制台中點選「導覽選單」,然後在「數據分析」部分點選「BigQuery」。
按一下「完成」。
點選專案名稱下拉式選單,然後選取「us_flow_logs」資料集,查看新建立的資料表。如果看不到任何資料表,可能需要重新整理幾次。
在 us_flow_logs 資料集底下,點選 compute_googleapis_com_vpc_flows_xxx 資料表。
按一下「查詢」。
在 BigQuery 編輯器中,將以下內容貼到 SELECT 和 FROM 之間:
先前的流量記錄檔將根據 source zone、source vm、destination zone 和 destination vm 篩選列出。
在 regional-demo 叢集中,找出在兩個可用區之間發出呼叫的數個資料列。
觀察流量記錄檔時,可以看到不同可用區之間經常有流量轉移。
接下來,您要將 Pod 移至同一可用區,觀察這有什麼好處。
返回「Cloud Shell」,按下 Ctrl + C 鍵取消 ping 指令。
輸入 exit 指令,退出 pod-1 的殼層:
pod-2 的資訊清單:這會將 Pod Anti Affinity 規則改成 Pod Affinity 規則,但保留相同邏輯。也就是說,pod-2 將被安排在 pod-1 所用的節點上。
pod-2:pod-2 刪除後,使用新編輯的資訊清單重新建立此 Pod:點選「Check my progress」,確認上述工作已完成。
Running:在輸出內容中,現可看到 Pod-1 和 Pod-2 在同一節點上執行。
請記下 pod-2 的 IP 位址,以備在後續指令中使用。
pod-1 容器的殼層:pod-2,並將以下指令的 [POD-2-IP],換成先前指令中 pod-2 的內部 IP。您會發現,這些 Pod 之間的平均連線偵測 (ping) 時間比之前更短。
這時,您可以返回流量記錄檔的 BigQuery 資料集,檢查最近的記錄檔是否已經沒有不必要的跨可用區通訊。
我們來看看 Google Cloud 內部 VM 之間的輸出流量定價:
當不同可用區的 Pod 互相連線偵測 (ping) 時,每 GB 費用為 $0.01 美元。這筆費用看似微小,但在多個服務經常跨可用區通訊的大規模叢集中,這些成本會迅速累積。
當您將 Pod 移至相同可用區後,執行連線偵測 (ping) 就不會再產生費用。
您已瞭解如何確保 GKE 叢集中的虛擬機器發揮最佳成本效益:首先是將工作負載遷移至設有合適機型的節點集區,接著是瞭解不同區域的優缺點,最後則是遷移區域叢集中的高流量 Pod,一律與相互通訊的 Pod 放在同一可用區。
在本實驗室中,我們已介紹過運用哪些工具和策略來設定 GKE 虛擬機器,會更符合成本效益。不過,您仍需瞭解自己的應用程式與相關需求,才能選擇最合適的虛擬機器。只要知道您將執行的工作負載類型,並估算應用程式的需求,即可在決定 GKE 叢集虛擬機器的位置與機型時,做出最經濟實惠的選擇。
有效利用叢集的基礎架構,將大大有助於實現最佳成本效益。
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2026 年 2 月 18 日
實驗室上次測試日期:2026 年 2 月 18 日
Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one