從冰山一角往下看#
這個系列只是 Kubernetes 世界的入口。整個容器化生態的「冰山」非常深,本系列覆蓋的內容大概只在最上層的兩、三層之間:核心概念、常用資源、部署策略、Volume、資源管理、AutoScaling、安全。再往下還有許多值得深入的主題,本篇用三個方向把後續的學習路線收個尾:
- Templating:用 Helm 管理多環境設定。
- Service Mesh:用 Istio 把服務之間的溝通標準化。
- Monitoring:用 Grafana 與 Prometheus 觀察叢集狀態。
這三條路線都是容器化與微服務時代下的自然延伸。
Helm:Kubernetes 設定的模板引擎#
當服務分為 production、staging、development 等多個環境時,YAML 設定常常只差幾個欄位(例如 label、image tag、replicas),如果每個環境都複製一份完整 YAML,維護成本會指數成長。
Helm 是 Kubernetes 設定檔的模板引擎,把可變欄位抽成變數、其餘共用部分維持一份原始檔,再用 Values 檔分別餵給各環境。
對照一下原本的設定:
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
labels:
environment: production
spec:
containers:
- name: busybox
image: busybox
args:
- sleep
- "1000000"Helm 化之後:
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
labels:
environment: { { .Values.environment } }
spec:
containers:
- name: busybox
image: busybox
args:
- sleep
- "1000000"多個環境共用同一份 template,只需要分別維護各自的 Values 檔。Helm 在實務上也常用來打包第三方服務(例如 Prometheus、Grafana)成「Chart」,再透過幾個指令快速部署。
Istio:把服務之間的溝通拉平#
當應用變成微服務之後,「服務之間怎麼互打」就會變成一個獨立的工程問題:路由、重試、限流、熔斷、TLS、追蹤、授權……如果每個服務各寫各的,很快就會失控。
Service Mesh 的想法是把這些網路層的能力抽出應用之外,由獨立的 sidecar 代理接管。Istio 是其中最具代表性的實作,提供:
- 統一的服務治理介面。
- 細粒度的 L7 流量管理(例如 header-based routing、流量切分)。
- 負載均衡(Load Balancing)。
- 鏈路追蹤與日誌收集。
- 預設整合的可觀測性插件。
Service Mesh 不是只有 Istio,Linkerd、Consul 等也是常見選項。共同特色是「把網路能力下沉到平台」這個思路。
Grafana 與 Prometheus:可觀測性的入口#
當服務數量與互相呼叫的鏈路變複雜,光看單一容器的日誌已經難以排查問題。Logging、Metrics、Tracing 三件事都需要被設計進系統,而 Grafana 與 Prometheus 是市場上最成熟的監控組合:
- Prometheus:拉取式(pull-based)的時序資料庫與指標收集器,適合監控容器化環境的資源用量與自訂業務指標。
- Grafana:通用的可視化儀表板,能把 Prometheus、Loki、Elasticsearch 等多種資料源組合在同一個頁面上。
得益於前面提到的 Istio 已經把流量資訊集中化,Istio 也預設整合了 Grafana 與 Prometheus 插件,可以大幅降低踏進 Monitoring 領域的門檻。
還可以再延伸的方向#
除了上述三條主要路線,這些主題也都是值得進一步研究的:
- Operator 與 Custom Resource Definition(CRD):把領域邏輯包裝成叢集原生資源。
- ArgoCD 與 GitOps:把部署狀態收斂到 Git,靠 controller 持續對齊。
- 安全強化:Pod Security Admission、Network Policy、SealedSecrets、外部 Secret 管理。
- 多叢集治理:Cluster API、Karmada、Service Mesh 跨叢集連線。
每一個方向都足以再寫一個鐵人賽系列。
小結#
本系列只覆蓋了 Kubernetes 的基本面,後續的方向可以歸納成「設定模板化(Helm)、服務溝通標準化(Service Mesh / Istio)、運維可觀測化(Monitoring)」三條主線,再加上 GitOps、Operator、安全強化等延伸主題。挑一條跟自己工作最貼近的路線往下走,比同時鋪開多條更容易累積進度。
原文出處#
- GitHub:https://github.com/MikeHsu0618/2022-ithelp/tree/main/Day30
- iThome:https://ithelp.ithome.com.tw/articles/10300813