iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Kubernetes

Think Again Kubernetes系列 第 23

Node Pressure Eviction

  • 分享至 

  • xImage
  •  

這篇文章會解釋

  • Node Pressure Eviction 是什麼
  • 什麼時候觸發 Node Pressure Eviction

kubelet 是 Kubernetes 中 Node 的代理,它的主要角色是向 CRI 溝通,所以它有兩個特性,作為最靠近 Node,以及最靠近 Container 的元件。

瞭解 kubelet 的責任時,經常會把它作為 Data Plane Components 跟 Control Plane Components 區隔,但這樣的敘事容易會有一個誤解,就是 kubelet 的責任是維護 Data Plane Node,kubelet 跟 Control Plane Node 的運行是無關的,但實際上 kubelet 也可能運行在 Control Plane Node,因此我們可以從這個深度理解這個情境,來理解 Node-Pressure Eviction。

Static Pod 是一種全然由 kubelet 管理,不需要與 Control Plane 溝通的 Pod,常見於 kubeadm 建立 kubenetes control plane components。

kubeadm 會藉由 Static Pod 的方式,讓 kubelet 以 Pod 作為單位運行 Control Plane Components,例如 api-server, kube-scheduler 以及 kube-controller-manager

由此我們得知一個問題,由於 kubelet 也負責運行 Control Plane components,因此,kubelet 需要在沒有 Control Plane 的狀態管理 Pod。

所以 kubelet 為了保護 Pod 的可靠性,發動驅逐的行為,只能依賴三個:Node CRI、手上 Pod API Object 以及 Node 本身。

不依賴 Control Plane 的行動,是 Hub and Spoke Pattern 以及 choreography 的重要特性

Eviction Signals

kubelet 會每十秒監控 Node 的資源使用情況,以此分析壓力,比如說 memory.available nodefs.available。

Eviction Signals 達到閥值,就會觸發回收行為,而這邊的閥值有兩個,分別為 Soft Eviction thresholds 以及 Hard Eviction thresholds

Eviction thresholds

Eviction thresholds 是由 kubelet 用於決定何時從 Node 中驅逐 Pod 的指標。 我們可以設定Soft Eviction thresholdsHard Eviction thresholds

Soft Eviction thresholds

Soft Eviction thresholds 會遵循 Grace period。 在超過period之前,kubelet 不會驅逐 Pod。 如果您沒有指定 Grace period,kubelet 會在啟動時傳回錯誤。

舉例來說,如果設定 eviction-soft: memory.available<1.5Gi 作為 ,並設定 **eviction-soft-grace-period: memory.available=1m30s,那麼當 Node 上的可用記憶體低於 1.5GiB 時,Kubelet 會先等待 1 分 30 秒。如果在這段時間內,可用記憶體仍然低於閾值,Kubelet 才會開始驅逐 Pod。

可以設定 eviction-max-pod-grace-period 參數來限制 Pod 終止時的最大寬限期。當滿足軟性逐出閾值時,Kubelet 會比較 eviction-max-pod-grace-periodeviction-soft-grace-period,並使用較短的時間作為 Grace Period。

Hard Eviction thresholds

Hard Eviction thresholds 沒有Grace period。 當滿足 Hard Eviction thresholds 時,kubelet 會立即終止 Pod,而不會進行優雅終止,以回收缺乏的資源。


這篇文章先介紹什麼是 Node-Pressure Eviction 以及 Eviction thresholds,下一篇會提到 碰到 Eviction thresholds 之後 kubelet 的行為。


上一篇
初探 Eviction 以及深入 API-initiated Eviction
下一篇
Node Pressure Eviction 自我修復以及驅逐順序
系列文
Think Again Kubernetes31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言