iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0

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

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

曬貓


先占虛擬機與 Kubernetes

在 GCP 使用先占虛擬機,會需要面對先占虛擬機的額外限制

  • 資料中心會 (可預期或不可預期地) 終止先占虛擬機
  • 先占虛擬機不能自動重啟,而是會被資料中心終止後回收
  • GCP 不保證有足夠的先占虛擬機

節點的終止會造成額外的維運成本,例如

  • 管理多個節點,容忍先占虛擬機的移除,自動補充新的先占虛擬機
  • 管理多個應用複本,節點終止時,維護整體應用的可用性
  • 將移除節點上的應用,重新排程到其他可用節點
  • 動態維護應用複本的服務發現 (Service Discovery) 與服務端點 (Endpoints)
    • 意思是應用關閉重啟後,換了一個新 IP,還要能持續存取應用。舊的 IP 要主動失效
    • 配合應用的健康檢查 (Health Check) 與可用檢查 (Readiness Check),再分配網路流量

這些需求,必須要有自動化的管理工具,是不可能人工管理的,想像你手上使用 100 個先占節點,平均每天會有 10% - 15% 的先占節點被資料中心回收,維運需要

  • 補足被移除的 15 個節點
  • 計算被移除的應用,補足移除的應用數量
  • 移除失效的應用端點,補上新的應用端點
  • 持續監控應用狀態
  • ...

沒有自動化管理工具,看了心已累 (貓爪掩面)

我們使用 Kubernetes 協助維運自動化,在 GCP 上我們使用 GKE,除了上述提到的容器應用管理自動化外,GKE 還額外整合先占虛擬機的使用

  • 啟用先占虛擬機的節點池 (node-pool),設定節點池的自動拓展,自動補足先占節點的數量
  • GKE 自動維護先占虛擬機的 labels

關於 GKE 的先占虛擬機的完整細節,請見GCP 官方文件。這份文件底下也提供了 GCP 官方建議的先占虛擬機最佳實踐

  • 架構設計需要假設,部分或是全部的先占虛擬機都不可用的情形
  • Pod 不一定有時間能優雅終止 (graceful shutdown)
  • 同時使用隨選虛擬機與先占虛擬機,以維持先占虛擬機不可用時,服務依然可用
  • 注意節點替換時的 IP 變更
  • 避免使用有狀態的 Pod 在先占虛擬機上 (這點稍後的文章,我們會試圖超越)
  • 使用 node taint 來協助排程到先占虛擬機,與非先占虛擬機

總之,由於有容器自動化管理,我們才能輕易的使用先占虛擬機。

GKE

然而,決定使用 GKE 後,就有許多關於成本的事情需要討論

先看 GKE 的計費方式 pricing

  • 每個 GKE 集群管理費用 $0.1/hr = $72/hr

這個費用是固定收費,只要開一個集群,不論集群的節點數量。所以在節點多、算力大的集群裡,這個費用會被稀釋,但在節點少的集群裡比例會被放大。

然後 GKE 還是會有一些自己的毛,俗話說有一好沒兩好,我們使用它的好處同時,也要注意許多眉眉角角。再來爬文件。如同最前面宣導,
用產品就要乖乖把文件看完,不過這裡先針對與先占虛擬機相關的議題


GKE 的細節,明日待續


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

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

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

我的粉專,等你來留言


上一篇
Day 11 - 先占節點 Preemptible Instance 實戰分享,需求分析下篇,在 kubernetes 上跑資料庫,或是分散式資料庫
下一篇
Day 13 - 先占節點 Preemptible Instance 實戰分享,配合 Kubernetes 自動化調度,使用先占虛擬機下篇
系列文
Kubernetes X DevOps X 從零開始導入工具 X 需求分析*從底層開始研究到懷疑人生的體悟*30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言