iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0

今天,我們將深入探討 Kubernetes 的自動擴展功能。自動擴展可以幫助我們靈活的調動資源,確保應用程式在流量激增時有足夠的資源運行,而在需求減少時節省資源。


什麼是自動擴展(Autoscaling)?

自動擴展是 Kubernetes 中的一項強大功能,允許應用程式根據負載自動進行水平擴展 (scale out) 或縮減 (scale in)。Kubernetes 提供了兩種類型的自動擴展:

  1. Pod 水平自動擴展 (Horizontal Pod Autoscaler, HPA):根據 CPU、記憶體或自定義指標,動態調整 Pod 的數量。
  2. 叢集自動擴展 (Cluster Autoscaler):根據叢集中 Pod 資源需求,動態調整節點的數量。

https://ithelp.ithome.com.tw/upload/images/20241003/20169492a8ilxVIFlE.png
圖片來源


Pod 水平自動擴展 (Horizontal Pod Autoscaler, HPA)

HPA 根據 Kubernetes 內部的指標(例如 CPU、記憶體使用率)或自定義指標,動態調整應用的 Pod 數量。當負載增加,Pod 數量也會隨之增加,反之當負載減少,Pod 數量也會隨之減少。

https://ithelp.ithome.com.tw/upload/images/20241003/201694928QrEVxBFkd.jpg
圖片來源

HPA 範例

我們可以通過以下 YAML 文件來定義一個簡單的 HPA 配置,這裡的 HPA 根據 CPU 使用率動態調整 Pod 的數量:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 50  # 當 CPU 使用率達到 50% 時擴展 Pod

此配置會根據 CPU 使用率調整 Pod 數量,最少 2 個,最多 10 個。

啟用 HPA

使用 kubectl 檢查 HPA 是否啟用:

kubectl get apiservices | grep autoscaling

如果需要安裝 HPA,可以參考 Kubernetes 官方文件進行安裝。

將 HPA 配置文件,佈上Kubernetes :

kubectl apply -f hpa.yaml

HPA 適用場景

  • 當應用的流量波動較大時,HPA 可以自動調整 Pod 數量,確保應用能夠穩定運行。
  • 適用於動態擴展的微服務架構,確保每個微服務能夠根據負載靈活調整。

叢集自動擴展 (Cluster Autoscaler)

Cluster Autoscaler 會根據叢集中 Pod 的資源需求自動增加或減少節點數量。當叢集中沒有足夠的資源來運行新的 Pod 時,Cluster Autoscaler 會自動增加節點;反之,當節點上的資源使用率較低時,會縮減節點數量。

https://ithelp.ithome.com.tw/upload/images/20241003/201694921u8lH6rhBn.jpg
圖片來源

Cluster Autoscaler 範例

GKEEKSAKS 等雲端平台上,我們可以通過各自的 CLI 工具來啟用 Cluster Autoscaler。例如,在 AKS 中,我們可以通過 Azure CLI 使用以下命令來啟用叢集自動擴展:

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 5
  • -min-count:最少節點數量。
  • -max-count:最多節點數量。

Cluster Autoscaler 適用場景

  • 當應用的負載快速增長或需要應對突發流量時,Cluster Autoscaler 能夠自動擴展節點數量,確保應用的高可用性。
  • 在負載降低時,自動縮減節點數量以節省成本。

使用情境

  1. 電子商務平台的高峰期流量:在促銷活動中,流量可能瞬間暴增。通過自動擴展,系統可以在流量增加時自動擴展 Pod 和節點,確保所有請求都能被妥善處理。
  2. SaaS 應用的動態資源管理:SaaS 應用的使用者流量波動較大。通過 HPA 和 Cluster Autoscaler,可以根據流量需求自動調整應用的資源,優化成本。
  3. 微服務架構的動態擴展:在微服務架構中,可能某些服務的流量需求較大,HPA 可以針對特定服務進行動態擴展,而 Cluster Autoscaler 則確保整個叢集有足夠的資源來支持這些服務的運行。

結語&預告

今天我們介紹了 Kubernetes 中的自動擴展功能,並且展示了如何啟用 HPACluster Autoscaler。自動擴展不僅能提升應用的穩定性,還能節約資源成本,讓我們的應用能夠靈活應對各種流量需求。

明天,我們將進一步探討如何使用 Helm 來管理 Kubernetes 的應用佈署,敬請期待!


參考文件


上一篇
Day18 - 掌握 Kubernetes 滾動更新與回復:保持應用穩定的自動化佈署策略
下一篇
Day20 - 使用 Helm 管理 Kubernetes 的應用佈署
系列文
DevOps菜鳥的30天實踐挑戰:從 CI/CD Pipeline 到雲端佈署30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言