上一篇介紹了為什麼我們要採用微服務架構,以及 kubernetes 介紹與帶來的好處。這次要來介紹 GCP 平台上的服務 - Google Kubernetes Engine (GKE)。
Google Kubernetes Engine (GKE) 介紹
Google Kubernetes Engine (GKE) 為全託管系統,主要是管理 Control Plane 所有的功能,與原生的 kubernetes 不同的是,GKE 可以幫你自動配置節點 (Node)。並且 GKE 包含以下功能:
- 自動元件修復、自動版本升級
- 叢集擴展
- 擁有容器優化的作業系統 (Container-optimized OS) 等
重要架構
Pod
在 kubernetes 裡的基本最小單位,不是 Container,而是 Pod。一個pod可以多個容器,但大部分情境下一個pod只會有一個容器,而同個pod可以共享網路、共享儲存。
Node Pool
Workload 有不同形式,可以依據不同需求新增資源不同的 Node Pool
例如你可以建立兩個不同大小的 Node Pool,依據服務的大小來配置到不同的 Node Pool
或是依據不同架構需求來配置不同的Node Pool,例如:
- 需要 AI 計算的服務,就放置在 High GPU 的 Node Pool
- 可以接受中斷的服務,就放置在支援先占 VM (Preemptible VM) 的 Node Pool
重要指令
創建
- 範例:
gcloud container clusters create —machine-type=e2-small —zone=asia-east1 k1
你可以自定義包含:
- 主機的類型(包含CPU大小、記憶體容量)
- Node節點數量
- k8s版本
- 節點運行區域
- 網路自動擴展設定 等
刪除
- 範例:
glocud conatiner clusters delete k1
你可以用一行指令,輕鬆刪除你所建置 k8s 叢集或工作負載服務
擴展
- 範例:
glcoud conatiner clusters resize k1 —num-node=5
如果需要擴展節點,可以用指令方式 cluster 的節點大小
調整
- 範例:
glcoud conatiner clusters update k1 —enable-autoscaling
當你想要設定自動擴展時,不需要整個叢集都重建,只需用指令的方式調整設定
自動擴展
水平擴展(cluster auto-scalling)
自動新減節點數量,例如原本 Node Pool 內只有三個 Node,可以自動提升到五個 Node。
垂直擴展(node auto-provisioning)
自動增減節點資源,例如原本 Node Pool 主機配置是 n1-standard-1 (1 vCPU, 3.75GB RAM),可以自動提升到 e2-standard-2 (2 vCPU, 8GB RAM)。
GKE 版本升級
一般來說,Control plane 與 Node pool 版本可以有所不同,但是不得超過2個版本差距。Control plane 可以開啟自動更新,但是一旦開啟就無法暫停自動更新。
我們有兩個更新策略可以進行調整:
- max-surge-upgrade:一次要先創建的新的節點數量
- max-unavailable-upgrade:一次要淘汰掉的節點數量
系統維護更新
Google 有時會進行硬體維護或是作業系統的更新,預設為自動啟用自動維護更新,但我們可以透過以下兩個設定來自定義維護更新的時間:
- Maintenance Window:維護窗口。允許自動維護更新的重複性時間段,一個集群只能配置一個窗口。
- Maintenance Exclusion:維護排除項。禁止自動維護更新的非重複性時間段,,一個集群最多可以配置20個排除項。
有三種藥排除的維護範圍可以選擇:
- 不升級(默認):希望在特定的時間內,集群不要有任何的更新維護。
- 無次要升級:希望集群暫時維護目前的 kubernetes 次要版本,避免 API 被棄用或是要驗證下一個次要版本。
- 無次要或節點升級:當節點升級時,希望暫時避免逐出或重新安排 workload,避免 Node Pool 中斷。
你最多可以使用3個維護排除項,來排除所有升級,但是你的維護窗口不得超過 48 小時;維護排除項不得超過 32 天。
GKE Autopilot
雖然 GKE 已經降低很多包含機器的配置、作業系統的安裝等維運成本,但是還需要對於 cluster 與 Node Pool 進行架構設定與配置。所以Google 近期推出了 GKE 全託管版本 - GKE Autopilot。
GKE Autopilot 可以讓用戶只關注在 Pod 本身如何配置與部署就好,且具有高可用性 (High Availability, HA) 的 Control Plane,降低 kubernetes 的維運成本。在費用方面,是以 pod 與 CPU 用量來進行收費。
Tags
GKE GCPcomments powered by Disqus