Skip to main content

87 posts tagged with "Reading"

View All Tags

· 2 min read

連結: https://erickhun.com/posts/kubernetes-faster-services-no-cpu-limits/

想必大家一定都有使用過 CPU Limit 的經驗,透過這個機制能夠確保每個 Container 使用的 CPU 資源量,也可以保證每個節點上面會有足夠 CPU 供 Kubernetes 原生服務 (kubelet) 使用。 然而本篇文章就要來跟大家分享一個設定 CPU Limit 反而造成效能更差的故事,故事中當 CPU 設定為 800ms 的時候,卻發現實際運行的 Container 最高大概就只有 200ms 左右,這一切的一切都是因為 Liniux Kernel 的臭蟲導致! 一個直接的做法就是針對那些本來就沒有過高 CPU 使用量服務取消其 CPU Limit,作者於文章中也探討了一些機制要如何保護與應對這些被移除 CPU 限制的服務。 這個臭蟲於 Linux Kernel 4.19 後已經修復,但是要注意你使用的發行版本是否有有包含這個修復,作者列出一些已知的發行版本修復狀況 Debian: The latest version buster has the fix, it looks quite recent (august 2020). Some previous version might have get patched. Ubuntu: The latest version Ubuntu Focal Fosa 20.04 has the fix. EKS has the fix since December 2019, Upgrade your AMI if necessary. kops: Since June 2020, kops 1.18+ will start using Ubuntu 20.04 as the default host image. GKE: THe kernel fix was merged in January 2020. But it does looks like throttling are still happening.

· 2 min read

連結: https://www.hwchiu.com/docs/2020/cni-performance-2020

  1. Kube-OVN 不但資源吃很多,效能還很不好
  2. Canal/Calico/Flannel 三者的運算資源使用量都不多,且效能都很好
  3. Kube-Router 的效能都很差,資源使用方便也不是特別出色
  4. WeaveNet 與 Cilium 效能都不差,但是 Cilium 吃的效能很高,可說跟 Kube-OVN 同等級,而 WeaveNet 用到的資源少
  5. 這次的實驗評比我認為其實能看到的東西有限,主要是不同的 CNI 所搭配的解決方案不同,目標要配合的情境也不同,雖然從圖表中可以看到 Kube-OVN 的綜合評比最差,但是其要用的場景本>身就不太一樣,單純用最原始的流量互打來判別優劣其實不太對
  6. 如果今天要選擇網路 CNI 的時候,可以看到效能跟資源方面, Flannel/Calico/Canal 幾乎等級都差不多,而且 Calico 還支援加密與 Network Policy 等功能。
  7. 此外,目前 Flannel 也從 Kubeadm 的官方教學頁面中移除,因為太多問題且維護者沒有要修復。所以我認為如果沒有特別使用情境需求的話,可以考慮使用 Calico.
  8. Cilium 對於安全性以及 load-balancing 方面也有別的功能,就如同(5)點所提到,不同的場景有不同的需求,有些功能是獨占的。

· 3 min read

連結: https://www.facebook.com/technologynoteniu/posts/125741595926648

本篇文章列出了七個企業想要踏入 Cloud Native 之路上最常遇到的問題 以下幫大家總結並節錄一點小內文

  1. 過於緩慢的發布週期 創新需要有能力很快速地針對每次的修改去快速發布。
  2. 使用過時的技術 作者認為時時關注當前這個迅速發展的世界是非常重要的,特別是的相關開源專案。
  3. 綁定特定服務供應商且成長方面缺乏彈性 當服務與特定廠商的解決方案綁定太深時,很容易遇到所有功能都由該廠商綁定,想要做什麼都會綁手綁腳。
  4. 缺乏專業性人才 根據 2019 一篇調查,只有 7% 的 IT 主管再招聘與慰留人才方面沒有遇到困難
  5. 安全性 人們總是當問題發生的時候才會開始注意安全性的問題,但是往往這些問題的代價都很高。儘管安全防護是一個複雜且困難的領域,但是擁有一個資安的實踐守則還是非常重要。
  6. 過高的運營與技術成本 滿多企業都會使用雲端服務來減少自行維護伺服器所需的成本,然而 Cloud Native 的環境常常會用到各式各樣的元件,這些元件所消耗的成本都會隨者規模放大而有所影響,如何去最佳化你的雲端資源使用量來盡可能的減少你的花費也是一大挑戰
  7. Cloud Native 的概念難以溝通 Cloud Native 的觀念難以溝通與理解,對於任何想要導入 Cloud Native 到團隊中的企業來說,領導團隊必須要先理解到底這些解決方案的重要性與複雜性。 甚至可能還會因為微服務,容器等其他概念的認知不同而花時間理解。

· 3 min read

連結: https://buoyant.io/service-mesh-manifesto/

一篇關於 Service Mesh 的好文,發布已經有段時間了不過還是值得一讀, 文章作者是非常早期 Service Mesh 項目: Linkerd 的核心開發成員之一也是新創公司 Buoyant 公司的 CEO 相信大家應該對於 Service Mesh 一詞已經不陌生,可能對於這個名詞比較熟悉的朋友大多是從另一個 Service Mesh 項目: Istio 去了解 Service Mesh 的面貌,從這篇文章你可以從不同觀點認識 Service Mesh , 全文非常長內容涵蓋:

  • Service Mesh 詳盡介紹
  • 為什麼 Service Mesh 可以被施行?
  • 為什麼 Service Mesh 是個好的 idea (比起其他方法)?
  • Service Mesh 幫助了什麼?
  • Service Mesh 有解決掉所有問題嗎?
  • 為什麼在現今 Service Mesh 可以被施行?
  • 為什麼人們那麼愛談論 Service Mesh?
  • 身為一個謙虛的開發者需要關注 Service Mesh 嗎?
  • 一系列F&Q 這裡對 Service Mesh 的需求做個小結,Service Mesh 帶來了三大好處:
  1. Reliability: 包含提供請求重試、超時、金絲雀部署(Traffic shifting/splitting) 等功能
  2. Observability: 包含提供請求成功率、延時、粒度到個別服
  3. Security: ACL 及 Mutual TLS (客戶端及服務端互信) 值得一提的是,本篇作者 William Morgan 對於 istio 持負面的態度,並不是因為 istio 與 linkerd 處於競爭關係的兩個產品,而是對於 istio 在 service mesh 做了太多的商業性 marketing 操作(大部分來自Go ogle的操作) 有興趣的朋友也可以在 Podcast 上聽到作者在 Podcast 上的訪談: https://reurl.cc/N6GbW9

· One min read

連結: https://www.cncf.io/blog/2020/09/09/how-to-enforce-kubernetes-network-security-policies-using-opa

不知道大家是否都有使用 Network Policy 來設定 Kubernetes 內部的 ACL? 這邊有個叫做 OPA 的工具可以用幫你驗證你的 Network Policy 是否運作良好,甚至當有新的應用服務要部署的時候,也會確定是否有跟 Network Policy 衝突 有興趣的人可以研究看看

· 2 min read

連結: https://medium.com/swlh/amazon-eks-upgrade-journey-from-1-17-to-1-18-e35e134ca898

這邊跟大家分享一篇 EKS 升級的心得文章,該文章記錄了 EKS 從 k8s 1.17 到 1.18 的過程,並且先分享了幾個 1.18 主要新功能,包含了

  1. Topology Manager (Beta)
  2. Service Side Apply (Beta)
  3. Pod Topology Spread (Beta) ... 等 詳細升級過程看起來無痛輕鬆,有興趣的可以參考全文 當然升級 K8S 最重要的還是要注意 Resource 的 API 版本是否有變,譬如 1.16 就讓很多人採到 Deployment 使用 extensions/v1beta1 的錯誤,所以每次升級請先檢查有沒有哪些過舊的 API 版本被丟棄,以免升> 級後現有的服務部屬不上去 題外話: ingress 如果還是使用 extensions/v1beta1 的話,建議都換成 networking.k8s.io/v1beta1 (k8s 1.14+), 到了 1.22 後本來的 extensions/v1beta1 就不能用囉