iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0
DevOps

Kubernetes X DevOps X 從零開始導入工具 X 需求分析*從底層開始研究到懷疑人生的體悟*系列 第 13

Day 13 - 先占節點 Preemptible Instance 實戰分享,配合 Kubernetes 自動化調度,使用先占虛擬機下篇

本文同步刊登於個人技術部落格,有興趣關注更多 Kubernetes、DevOps 相關資源的讀者,請務必追蹤從零開始的軟體工程師之旅,喜歡的話幫我按讚分享、歡迎留言、或是許願想要看的文章。

如果有技術問題也可透過粉絲專頁 討論,技術方面諮詢免錢、需要動手做另計 XD。

曬貓


Allocatable Resource

在網路上看到這篇好文 GKE 上的可使用的資源 Allocatable Resource。啥意思呢?難道還有不能使用的資源嗎?

沒錯,GKE 會保留一定的機器資源 (e.g. cpu, memory, disk),來維持節點的管理元件,例如 container runtime (e.g. Docker)、kubelet、cAdvisor。

也就是說,就算我們跟 GCP 購買了算力,有一個比例的資源我們是使用不到的。細節請見 理解 GKE 集群架構。這會影響我們>單一節點的規格,我們也需要一並計算,能實際使用的資源 (allocatable resource)。

Allocatable = Capacity - Reserved - Eviction Threshold

  • Capacity,是機器上實際裝載的資源,例如 n1-standard-4 提供 4 cpu 15 Gb memory
  • Reserved,公有雲代管集群,預保留的資源
  • Eviction Threshold:Kubernetes 設定的 kubelet 驅逐門檻

驅逐門檻 (Eviction threshold)

Kubelet 會主動監測節點上的資源使用狀況,當節點發生資源不足的狀況時,kubelet 會主動終止某些 Pod 的運行,並回收節點的資源,來避免整個節點資源不足導致的系統不穩定。被終止的 Pod 可以再次排程到其他資源足夠的節
點上。細節請見 官方文件 Scheduling and Eviction

在 Kubernetes 上,我們可以進一步設定驅逐門檻,當節點的可用資源低於驅逐的門檻,kubelet 會觸發 Pod 驅逐機制

GKE 上每個節點會額外保留 100 MiB 的記憶體,作為驅逐門檻,意思是當節點耗盡資源,導致剩餘記憶體低於 100 MiB 的時候,會直接觸發 GKE 的 Pod Eviction,終止並回收部分的 Pod。換句話說,這 100 MiB 是不能被使用的>資源。細節請見官方文件

集群保留資源精算

資源的定義,使用雲平台的一般費用大多來自此

  • cpu
  • memory
  • storage

然後是這個表,注意保留的資源是累進級距

255 MiB of memory for machines with less than 1 GB of memory
25% of the first 4GB of memory
20% of the next 4GB of memory (up to 8GB)
10% of the next 8GB of memory (up to 16GB)
6% of the next 112GB of memory (up to 128GB)
2% of any memory above 128GB

值計上能夠用到的資源,底下 GCP 也整理好了,例如 n1-standard-4 實際使用的是 memory 12.3/15,cpu 3.92/4。

在維持合理的使用率下,開啟大的機器,可以降低被保留的資源比例,依照筆者公司過去經驗,GKE 起跳就是 n1-standard-4 或是以上規格,如果低於這個規格,可調度的資源比例真的太低,應該重新考慮一下這個解決方案是否合乎>成本。

但究竟什麼規格的機器適合我們的需求,說實在完全要看執行的應用而定。


有寫過鐵人賽的都知道 30 篇真的很漫長,一篇文章幾千字,都要花好幾個小時。我去年後半,真的都會看讀者的留言跟按讚,取暖一波,才有動力繼續寫。留言的人多就會多寫,留言的人少就會少寫,各位覺得文章還看得下去,請務必來我粉專按讚留個言,不管是推推、鞭鞭、或是有想看的文章來許願,都十分歡迎。有你們的支持,我才有動力繼續寫。

請大家務必以實際行動支持好文章,不要讓劣幣驅逐良幣。不然 iThome 上面之後只剩洗觀看數的熱門文章了 XD

當然,沒人留言我就會當作自己才是垃圾文 (自知之明XD),就會收一收回家嚕貓睡覺,掰掰~

我的粉專,等你來留言


上一篇
Day 12 - 先占節點 Preemptible Instance 實戰分享,配合 Kubernetes 自動化調度,使用先占虛擬機上篇
下一篇
Day 14 - 先占節點 Preemptible Instance 實戰分享,虛擬機資源評估,機器應該開多大台
系列文
Kubernetes X DevOps X 從零開始導入工具 X 需求分析*從底層開始研究到懷疑人生的體悟*30

尚未有邦友留言

立即登入留言