目標
瞭解設定試驗和測試用叢集的一些基本工作:限制叢集的管理服務存取權,也就是「control plane」(控制層)。這能防止未經授權的使用者查看或變更叢集和工作負載設定。
指明應用程式需要運算資源,才能有效向上擴充及向下縮減,因應實際需求。
測試自動調度資源功能。當需求增加,超過您指定的門檻時,這項功能會自動複製 Pod。
調整記錄檔保留設定,只保留所需的記錄檔。
啟用「GKE security posture」(GKE 安全防護機制) 資訊主頁。
以上只是將叢集從開發升級到測試階段的某些工作。如需應注意的完整工作清單,請參閱 GKE 說明文件。
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
建立 Kubernetes 叢集並部署工作負載。 請參閱「建立叢集及部署工作負載」一文。
限制控制層存取權
為提升安全防護機制,請僅允許已授權網路和Google Cloud 控制台與 Cloud Shell 存取叢集的控制層。
設定授權網路
在 Google Cloud 控制台中,前往 GKE「Clusters」(叢集) 頁面。
在「Name」(名稱) 欄中,點按叢集名稱「hello-world-cluster」。
在「Networking」(網路) 資料表的
「Control plane authorized networks」(控制層授權網路) 資料列中,點按「 」(編輯)。在「Edit control plane authorized networks」(編輯控制層授權網路) 對話方塊中,選取「Enable control plane authorized networks」(啟用控制層授權網路)。
選取「Allow access through Google Cloud public IP addresses」(允許透過 Google Cloud 公開 IP 位址存取)。
這樣一來,您就能透過 Google Cloud 控制台和 Cloud Shell 管理叢集。
點選「Add authorized network」(新增授權網路)。
輸入名稱,例如「My example on-prem network」(我的範例地端部署網路)。
在「Network」(網路)中,輸入要授予叢集控制層存取權的 IP 位址範圍。請使用 CIDR 標示法。
例如輸入以下範圍:
198.51.100.0/24
按一下「Done」(完成)。
按一下「儲存變更」。
此作業需要幾分鐘才能完成。
按一下
「Notifications」(通知) 按鈕,然後等待「Update control plane authorized networks setting in Kubernetes Engine cluster "hello-world-cluster"」(更新 Kubernetes Engine 叢集「hello-world-cluster」中的控制層授權網路設定) 旁顯示綠色勾號。
您設定了只可從已授權網路和 Google Cloud 公開 IP 位址存取的叢集控制層,您可以透過Google Cloud 控制台和 Cloud Shell 管理叢集。
如要查看叢集的控制層 IP 位址並確認已授權網路的位址,請按「Next」(下一步)。
查看 IP 位址
前往 GKE「Clusters」(叢集) 頁面。
在「Name」(名稱) 欄中,按一下叢集名稱「hello-world-cluster」。
在「Cluster basics」(叢集基本資訊) 資料表中,「External endpoint」(外部端點) 資料列會顯示叢集控制層的 IP 位址。
在「Networking」(網路) 資料表中,「Control plane authorized networks」(控制層授權網路) 資料列會顯示已授權網路的 IP 位址。
您現在只能透過已授權網路、Google Cloud 控制台和 Cloud Shell 存取叢集的控制層。
指定運算類別
根據預設,GKE Autopilot Pod 會使用一般用途工作負載適用的運算資源。對於需要妥善調度資源或有其他獨特需求的工作負載,您可以指定不同的運算類別。
更新 Deployment 規格
前往 Google Cloud 控制台的 GKE「Workloads」(工作負載) 頁面。
在「Name」(名稱) 欄中,按一下您部署的應用程式名稱 (hello-world-app)。
按一下
「Edit」(編輯) 來編輯 Deployment 規格。在「YAML」分頁中,找出開頭為
containers:
的資料行在這一行上方新增下列行:
nodeSelector: cloud.google.com/compute-class: "Scale-Out"
請確認您的檔案與以下範例中的縮排方式一致:
apiVersion: apps/v1 kind: Deployment ... spec: ... template: ... spec: nodeSelector: cloud.google.com/compute-class: "Scale-Out" containers: - name: hello-app image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
按一下
「Download」(下載) ,即可下載這個檔案並做為其他工作負載設定的基礎。按一下「Save」(儲存)。
為執行工作負載而建立的所有 Pod 備用資源都會使用您指定的運算類別。
測試自動調度資源機制
現在您已擁有可有效調度資源的工作負載,請更新自動調度資源設定,讓工作負載輕鬆向上擴充。接著產生負載,觸發自動調度資源功能。
更新 Pod 自動調度資源設定
前往 GKE「Workloads」(工作負載) 頁面。
在「Name」(名稱) 欄中,按一下部署作業的名稱「hello-world-app」。
按一下 [動作]
。 選取「Autoscale」(自動調度資源),然後按一下「Horizontal pod autoscaling」(水平自動調度 Pod 資源)。
在「Configure Horizontal Pod Autoscaler」(設定水平 Pod 自動配置器) 對話方塊中,按一下「Autoscaling metrics」(自動調度資源指標) 下方的「CPU」。
將「Target」(目標) 的值變更為 2,這樣當 Pod 使用至少 2% 的已設定 CPU 資源時,系統就會自動調整 Pod 的資源配置。這個低目標值可確保在下一個步驟中輕鬆觸發自動調度資源。
按一下「Save」(儲存)。
如要觸發自動調度資源,請點按「Next」(下一步)。
產生負載來觸發自動調度資源功能
按一下
「Cloud Shell」 開啟 Cloud Shell。將以下指令貼入 Cloud Shell:
for i in $(seq -s' ' 1 10000); do wget -q -O- <var>external-IP-address</var>; done
將 external-IP-address 替換為
「Endpoints」(端點) 欄中顯示的 IP 位址。按下 Enter 鍵即可執行指令,並將 10,000 個要求傳送至 hello-world-app。
等待
wget
指令執行完畢,然後指令列提示詞會重新顯示。您可以在
wget
指令執行完畢後關閉 Cloud Shell。
如要觀察工作負載為因應增加的流量調度資源,請點按「Next」(下一步)。
監控工作負載規模
在工作負載的「Deployment details」(部署作業詳細資料) 頁面中,查看
CPU 圖表顯示的 CPU 用量高峰。您最多可能要等待 5 分鐘,才能看見用量高峰。
按一下
「Refresh」(重新整理) ,以確保「Deployment details」(部署作業詳細資料) 頁面會顯示最新資料。查看「Managed Pods」(代管的 Pod) 表格,確認工作負載的三個備用資源正在執行。
一開始可能會看到無法排程的 Pod 相關錯誤,但這些是備用資源啟動時的暫時性訊息。
等候約 10 分鐘,再按一下
「Refresh」(重新整理),就可以看到 CPU 使用率下降,因此「Managed Pods」(代管的 Pod) 傳回一個 Pod 數量。
您已測試自動調度資源功能,並觀察到工作負載資源調度。
調整記錄檔保留設定
根據預設,Cloud Logging 會從 GKE 叢集擷取所有記錄檔。擷取大量記錄檔資料可能會產生費用。如要確保您只擷取測試環境需要的記錄檔資料,請調整記錄檔保留設定。
建立記錄檔篩選器
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
請注意,
「Query results」(查詢結果) 窗格會顯示專案中所有資源的記錄檔。 在查詢結果上方執行下列操作:
按一下
「Resource」(資源) 。搜尋「Kubernetes cluster」(Kubernetes 叢集),然後按一下。
按一下「us-central-1」。
按一下「hello-world-cluster」。
按一下「Apply」(套用)。
按一下
「Severity」(嚴重性) ,然後選取「Info」(資訊) (將游標懸停時,會變更為「Info and higher」(資訊以上等級))。按一下 [執行查詢]
請注意,「Query results」(查詢結果) 現在只包含來自測試叢集的 INFO 訊息。
從查詢編輯器複製查詢。建立記錄檔接收器的篩選器時,您需要貼上這個查詢。
如要建立記錄檔接收器和儲存空間值區,請點選「Next」(下一步)。
建立記錄檔接收器和儲存空間值區
前往 Logging「Log router」(記錄檔路由器) 頁面。
按一下
「Create Sink」(建立接收器) 。在「Name」(名稱) 中,輸入下列名稱:
hello-world-cluster-sink
按一下「Next」(下一步)。
在「Select sink service」(選取接收器服務) 中,選取「Logging bucket」(記錄檔值區)。
在「Select a log bucket」(選取記錄檔 bucket) 中,選取「Create new log bucket」(建立新的記錄檔 bucket)。
在「Bucket details」(值區詳細資料) 中輸入不重複的名稱,例如:
hello-world-bucket-<var>user-id</var>
點選「Create bucket」(建立值區)。
在「Sink destination」(接收器目的地) 下方,點選「Next」(下一步)。
在「Build inclusion filter」(建立「包含」篩選器) 中,貼上您在 Logs Explorer 中建立的查詢。
按一下「Create Sink」(建立接收器)。
如要查看叢集的記錄 (儲存在您建立的記錄檔 bucket 中),請按一下「Next」。
查看叢集的記錄檔
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
按一下
「Refine scope」(調整範圍) 。選取「Log View」(記錄檢視)。
選取記錄檔 bucket 的「_AllLogs」檢視。
按一下「Apply」(套用)。
「Query results」(查詢結果) 只會顯示儲存在記錄檔 bucket 中的記錄。
您已調整記錄檔保留設定,讓測試叢集不會儲存偵錯訊息。您可以設定權限,限制只有特定使用者才能查看叢集值區中的記錄檔。
啟用安全防護機制資訊主頁
安全防護機制資訊主頁會掃描 GKE 叢集和工作負載,為您提供具體可行的建議,藉此提升安全防護機制。
探索疑慮
前往 GKE「Security posture」(安全防護機制) 頁面。
如果系統要求您啟用 Container Security API,請點按「Enable」(啟用)。
「Dashboards」(資訊主頁) 分頁會概述專案叢集和工作負載的疑慮。
點按「Concerns」(疑慮) 分頁標籤。
如果該分頁顯示任何疑慮,按一下疑慮即可查看更多資訊。
您已完成測試環境叢集設定和測試應用程式的部分基本工作。
後續步驟
清除所用資源,以免產生帳單費用。 如果您打算參加其他教學課程,請先完成這些教學課程,再清除所用資源。大部分 GKE 教學課程都可以使用 Kubernetes 範例叢集。