Loading...

上一篇介紹了為什麼我們要採用微服務架構,以及 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,例如:

重要指令

創建

  • 範例: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 GCP

comments powered by Disqus