ref: https://loft.sh/blog/the-cost-of-managed-kubernetes-a-comparison/
本篇文章探討不同 Cloud Provider kubernetes 服務的差異,作者列舉了四個常見的 kubernetes 服務,包含 GKE, EKS, AKS 以及 DOKS。
這四個 kubernetes 服務所部署的 Kubernetes 叢集都有獲得 CNCF Kubernetes Certification 的認證,不同 Cloud Provider 都有自己的優缺點。
使用 Kubernetes 服務帶來的好處就是使用者通常不太需要去擔心如何處理
1. Kubernetes 核心元件之間的 Certificate (API Server, Controller, Scheduler, Kubelet ...etc)
2. 動態調整 Kubernetes 節點
3. 相較於單純靠社群, Cloud Provider 可以提供更快速且更好的支援(畢竟有付錢給對方)
因此該文章接下來就會針對這四個 Kubernetes 服務來探討一下彼此的差異。
註: 有興趣的話都可以用 Sonobuoy 這個開源專案來檢測自己維護的 Kubernetes 叢集,通過測試就可以把測試報告送到 GitHub 開 Issue 申請認證
GKE
1. Kubernetes 正式公開後一個月就 GKE 就出現了 (08/2015), 是最早的 Kubernetes 服務
2. GKE 會使用 gVisor 專注於安全層級的容器隔離技術來部署服務。
3. 有機會使用針對 Container 最佳化的 OS,有些 cloud provider 只能使用 Ubuntu image 之類的。
4. 服務出現問題時,可以啟動 auto-repair 來修復叢集,一種典型作法就是將一直回報為 NotReady 的 k8s 節點給重建
5. GKE 提供自動升級 Kubernetes 版本的功能,如果不想要的話記得要去關閉這個功能,否則自動升級是有可能讓某些應用程式無法正常運作的。
6. 使用 GKE 的話,要付每小時 $0.1 美元的管理費。如果使用 on-prem 的解決方案 (Anthos) 的話就可以免去這些管理費。
EKS
1. 06/2018 創立
2. 可以使用 Ubuntu Image 或是 AWS 針對 EKS 最佳化的 EKS AMI 來獲得更好的效能。
3. EKS 沒有提供自動升級 Kubernetes 版本的功能,官方有提供大量詳細的文件介紹如何手動升級 Kubernetes 版本
4. 沒有類似 auto-repair 的機制去幫忙監控與修復出問題的 k8s node,因此 EKS 使用者需要自己去監控與維護這些節點。
5. EKS 也是每小時 $0.10 的管理費用。 AWS Outposts/EKS Anywhere 這些 2021 啟動的專案讓你有機會將 EKS 部署到 on-prem 的環境中。
AKS
1. 06/2018 創立
2. AKS 沒有提供任何最佳化的 OS,你只能使用常見的那些 OS image 作為你的 k8s 節點
3. 預設情況不會自動升級 kubernetes 版本,不過 AKS 提供選項去開啟自動升級。Cluster 有四種不同策略(none,patch,stable,rapid)來自動更新你的 k8s 叢集。
4. AKS 預設不會啟動 auto-repair 功能。對於一直持續回報 NotReady 的節點, AKS 會先重起該節點,如果問題無法解決就會砍掉重建節點。
5. AKS 不收管理費
6. Azure 沒有特別提供一個供 on-prem 的 AKS 解決方案,不過透過 ARC 是有機會於 on-prem 的環境運行 AKS.
DOKS(DigitalOcean)
1. 05/2019 創立
2. 有提供 kubernetes 版本自動更新功能,但是只有針對 patch 版本的變化
3. 沒有 auto-repair 的功能
4. 文章撰寫的當下, DOKS 沒有任何文件說明如何於 on-prem 的環境運行 DOKS
5. 不收管理費
6. 相對其他三家來說,底層架構相對便宜,一個 DOKS 最低可以低到每個月 $10 美元。
價錢比較:
1. 假設需要創建一個擁有 20 節點並且有 80vCPU, 320GB RAM 的叢集 (GKE 因為每個節點都是 15GB,所以最後只能湊到 300GB)
2. 每個月為單位去計算價格,AKS/EKS/GKE 都使用其提供的價格計算機來粗估, DOKS 需要手動計算。
3. 價錢評比
a. AKS: $3416
b. EKS: $2928
c. DOKS: $2400
d. GKE: $1747
對文章有興趣的別忘了參閱全文
「kubelet介紹」的推薦目錄:
- 關於kubelet介紹 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於kubelet介紹 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於kubelet介紹 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於kubelet介紹 在 Day 5 - Kubernetes kubelet, kubeadm, kubectl 介紹- iT 邦幫忙 的評價
- 關於kubelet介紹 在 鐵人賽系列文章- Day26 - kubelet Plugin 介紹 的評價
- 關於kubelet介紹 在 CY-Gu/Pod: Pod 觀念解說 - GitHub 的評價
- 關於kubelet介紹 在 kubernetes基于virtual-kubelet实现弹性Pod | luanlengli's Blog 的評價
- 關於kubelet介紹 在 Kubernetes1.6新特性-不回收靜態POD | 程式前沿 的評價
- 關於kubelet介紹 在 [好文介紹]Scaling Kubernetes to 2,500 Nodes - kkdai.github.io 的評價
- 關於kubelet介紹 在 【Docker圖解教學】Kubernetes & Docker的分手肥皂劇入門|介紹 的評價
kubelet介紹 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本篇是一個 Kubernetes 的入門介紹文,探討 Kubernetes 內要如何透過 SSL/TLS 憑證來加強應用程式之間的連線。
本篇文章不使用任何第三方套件,反而是從 Kubernetes 內建的資源功能出發去探討,理解 Kubernetes 的能力與極限其實長久下來對於評估各種專案都滿有幫助的。
Kubernetes 的 Secret 除了使用 base64 作為編碼技術外,其實本身也提供不少類型方便管理人員使用,譬如本文提到的 tls 類型, container registry credential 以及最廣泛使用的 generic 等。
Secret(tls類型)本身創建時會吃兩個參數,分別是 tls.crt 與 tls.key,接者這類型的 secret 可以與 ingress 進行整合,將 TLS 給掛載到 Ingress 物件中並且同時執行 TLS Termination,讓 Ingres 與外部連線使用 HTTPS 而內部服務則使用 HTTP 來溝通。
文章中提到如何透過 openssl 創建一個 self-signed 的憑證,並且針對 self-signed 的特性進行討論,其列出了四個 self-signed 的缺點
1. 瀏覽器連接到這些 self-signed 憑證的網站時都會露出警告告知使用者,因此這類型的憑證不適合任何正式生產環境使用
2. 因為 self-signed 就是開發者自行創造,缺少第三方可信任機關的認證,因此惡意攻擊者可以輕鬆換掉服務上的簽證,畢竟瀏覽器本來就覺得簽證有問題,無法分辨到底是先前的自簽憑證還是被替換的憑證。
3. 第三方CA都會針對發行的憑證給予一些保固與服務,這部分是自簽沒有辦法擁有的
4. 愈來愈多的使用者會不太願意瀏覽與使用沒有合法且信任憑證的網站
作者提到 Kubernetes 內部雖然有一個 CA,但是不推薦把任何服務相關的憑證都跟其扯上關係,
因為該 CA 是給 Kubernetes 內部控制平面使用的,譬如 kubelet, API Server, Controller, Scheduler 等元件彼此溝通中間使用的。
文章最後作者示範透過 cfssl 的該指令幫一個內部服務創建一個憑證,由於內部服務會透過 Kubernetes Service 提供的 DNS 來存取,因此創建憑證時會於 CN 欄位補上 alternative 的名稱,把 service.svc.... 之類的全部都補上。
https://medium.com/avmconsulting-blog/how-to-secure-applications-on-kubernetes-ssl-tls-certificates-8f7f5751d788
kubelet介紹 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
關鍵字: GKE, CPU Limit, CPU throttling
影響: 服務出現高延遲性,甚至出現錯誤
總結: 作者推薦關閉 Kubernetes 內任何 CPU Limit 的功能(或是從 kubelet 關閉 CFS quota)直到節點上的系統都已經修復 CFS 的相關問題,這個問題會導致不必要的 CPU throttling 並可能導致應用程式短暫時間卡住不回應。
這篇文章內容非常豐富,開頭介紹 container & kubernetes 的基本概念,接下來探討到底 CPU request/limit 是如何實作的,並且透過一個範例來介紹為什麼 kernel bug 會導致整個應用程式卡住
原文下方還有列出各種相關連結,包含 kernel 內的相關文件以及 kubernetes 內探討這個問題的 issue。
https://medium.com/omio-engineering/cpu-limits-and-aggressive-throttling-in-kubernetes-c5b20bd8a718
kubelet介紹 在 鐵人賽系列文章- Day26 - kubelet Plugin 介紹 的解答
鐵人賽系列文章- Day26 - kubelet Plugin 介紹. Posted on 2021-02-03 Views: ITHOME-2020 系列文章. 最後幾天,我們就來介紹一些操作Kubernetes 上可能會使用到的 ... ... <看更多>
kubelet介紹 在 CY-Gu/Pod: Pod 觀念解說 - GitHub 的解答
本篇介紹一些Pod的進階概念,首先要了解Pod的創建過程為何。 ... 那麼,這個叢集即無法透過kube-apiserver通知kubelet創建Pod(因為沒有Master)。所以有另一種創建Pod的 ... ... <看更多>
kubelet介紹 在 Day 5 - Kubernetes kubelet, kubeadm, kubectl 介紹- iT 邦幫忙 的解答
前言前面安裝好了kubelet, kubeadm, kubectl,再來就是介紹它們之間的用途為何kubelet pod 管理在kubernetes 的設計中,最基本的管理單位是pod,而不. ... <看更多>