這邊跟大家分享一個有趣的入門文章,介紹各種不同部署方式的差異,譬如Ramped, A/B, Green/Blue, Shadow, Canary 等等

每個更新方式帶來的效果不同,同時需要的環境建置也不同,這部分還會影響到整體的預算成本,最後還有一張簡易的表來快速介紹其差異性,有興趣的可以看看

https://thenewstack.io/deployment-strategies/
由 Cloud Native Taiwan User Group 所持續推動的每月線下活動又來囉,本次內容包含了近幾年與底層非常熱門的 eBPF 以及透過講者所開發的開源專案,KubeFire, 其透過 Firecracker 這個方式來創建並管理一個 Kubernetes 叢集

該次議程地點為台北天瓏書局,同時當天也會開放線上直播,讓不克前來的社群朋友一起參與,會後也會有相關錄影。

請點選下方連結來瞭解更多
https://www.meetup.com/CloudNative-Taiwan/events/273340386/
想必大家一定都有使用過 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.

有興趣的歡迎點選原文閱讀更多

https://erickhun.com/posts/kubernetes-faster-services-no-cpu-limits/
一篇關於 Kubernetes 入門的影片,100 秒快速介紹 Kubernetes, 整個流程非常的快
有興趣的可以看看別人是如何介紹 Kubernetes,同時也可以想想如果今天要跟別人介紹
Kubernetes ,自己有沒有辦法講出連你阿嬤都聽得懂的 Kubernetes

https://youtu.be/PziYflu8cB8
這邊跟大家分享一下牛自己於矽谷遠端六個月的心得與觀察,從不同面向去探討遠端工作帶來的好處與壞處,同時分享一下美國這邊對於遠端工作的看法與大公司的政策,最後則是根據自己過往台灣的工作經驗來試想一下導入全面遠端工作於台灣企業的困難性


https://www.hwchiu.com/covid-wfh.html
Terraform 這個工具想必大家都玩過也聽過,這邊非常推薦大家升級到 0.13 版本,這個版本中解決了關於 Module 之間依賴性的問題,能夠使用原先就有的 depends_on 的語法來直接描述,而不需要按照過往以前用各種 fake resource 等機制來完成,整個 Terraform 程式碼會更佳清晰與簡單!

https://medium.com/hashicorp-engineering/creating-module-dependencies-in-terraform-0-13-4322702dac4a?utm_content=buffer50deb&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer&fbclid=IwAR2ksR64Vmu_3Zy6FAZ4ObbemFsaSMiKy3gabDgwq4bbl3SUc7gBlxIUAzk
#小編

有沒有遇過gRPC 在Kubernetes 上的 Load Balance 效果不佳的問題?這篇文章將分析幾種常見gRPC LB的作法也提出一個開箱即用的方案,引入的成本低非常適合想立即在 Kubernetes 上使用 gRPC LB的團隊。

註:第一次使用Telegram 的 telegraph 寫技術文章,在Telegram上閱讀體驗還算不錯。未來會陸續把技術長文放進去 telegraph

https://telegra.ph/In-cluster-gRPC-Load-Balancing-09-28
想必大家應該都聽過 Operator 的概念,透過 CRD 自定義資源格式並且配上程式化的運作邏輯來控管相關資源的操作。甚至有廠商針對 Operator 的概念來設計一個 Framework 讓大家能夠更輕鬆或是有效率的撰寫屬於自己的 Operator。
然而 Operator 真的一定好嗎? 底下這則推文則是來自於 Darren Shepherd(CTO/Co-founder Rancher Lab ) 對於一篇由 RedHat 所發表關於 Operator 好處文章的反面看法。
其推文最後表示:「Right now invest your IT teams time in GitOps, not operators.」

快來看看 Darren 與其他網友針對這些議題的討論,並且分享看看你的想法

https://twitter.com/ibuildthecloud/status/1295810776179961856
如果有在 Kubernetes 內部署 Java 應用程式的人,千萬不要錯過這篇文章,此文章中分享 Java 應用程式關於 Thread Pool Size 的問題,同時當 Java 應用程式容器化並且部署到 Kubernettes 內之後,該怎麼設定 JVM 來讓其能夠更高效率的於容器化環境下工作
https://mucahit.io/2020/01/27/finding-ideal-jvm-thread-pool-size-with-kubernetes-and-docker/
Rancher v2.5 釋出!

這幾天 Rancher 正式釋出 v2.5 版本,這邊就來重點節錄一些改變
1. 強化與雲端環境 EKS 與 輕量級 K3s 環境的整合,此外宣稱所有 Kubernetes 服務上面都可以安裝 Rancher 用其來幫忙管理
![](https://i.imgur.com/tZwbaXI.png)
2. 針對美國環境要求而開發更具安全性的發行版,符合 FIPS(Federal Information Processing Standars)
3. 整合 GitOps 部署,針對大規模 Edge 叢集的自動部署解決方案 fleet
4. Monitoring 強化,減少與 Rancher 本身的連接性,反而更加使用 Prometheus operator 來提供服務。管理人員可以直接創建相關的 CRD 提供服務,而這些資訊也都會被 Rancher UI 給一併呈現

其中 (4) 裡面還提供的 cluster-level 的客製化設定,就不需要向過往一樣要開很多個 project-level 的 prometheus 來處理,這方面輕鬆不少


資料來源:
- https://rancher.com/blog/2020/rancher-2-5-delivers-computing-everwhere-strategy
- https://github.com/rancher/fleet
- https://fleet.rancher.io/
- https://github.com/rancher/rancher/issues/23239
如果你機會跑過 kubernetes 1.18 版本,一定要試試看最基本的 kubectl get pods -o yaml,看看是不是內容裡面多出了非常多 f:{} 系列的檔案,導致整個 Yaml 變得非常冗長,閱讀不易,甚至想要抓取到最原始的內容都非常麻煩。

Kubernetes 官方 Github 上還有相關的 issue 再討論這個欄位,詢問是否有辦法能夠清除。不少人都提出了一些希望的用法來處理
Issue: https://github.com/kubernetes/kubernetes/issues/90066

目前看下來最簡單的做法還是透過 kubectl plugin, kubectl-neat 來幫忙完成,可以透過 krew 這個 kubectl 管理工具來安裝管理
https://github.com/itaysk/kubectl-neat
此工具可以將 Server 上得到 Yaml 的內容給整理最後得到最初的檔案

至於到底什麼是 managedFiles? 這個由欄位的出現是因為 1.18 以後,已經將 Server Side Apply 更新策略預設啟用而導致的,而 Server Side Apply 則是一種用來管理 Declarative 設定檔案的方式,對使用者來說基本上完全無感,因為一切都還是透過 kubectl apply 來使用,只是到底如何判斷 當前檔案內容與系統上內容誰先誰後,誰對誰錯,甚至當有人透過 kubectl edit 去編輯內容的時候,到底該怎麼更新。

之後有時間可以再寫一篇來詳細介紹 Kubernetes 內的 Declarative 更新策略
這邊跟大家分享關於 CNCF Radar 9月份的報告,這篇報告主要是針對 Observability 來探討 CNCF 會員會使用哪些工具,以及對這些工具的推薦程度
Observability 通常會被分成三大領域,分別是 Monitoring, Logging, Tracing. 常見的代表解決方案就是 Prometheus+Grafana/EFK/Jaeger, OpenTracking
更多報告內容歡迎點擊下列文章觀看更多
https://www.hwchiu.com/cncf-tech-radar-observability.html
HashiCrop 今天釋出的新工具 Waypoint,一款用來讓開發者也能夠輕鬆部屬測試的工具

Waypoint 提供開發者一個友善的方式,能夠順利的完成 build/deploy/release 這一系列的操作,讓開發者可以直接將開發結果部屬上去,並且觀看相關結果

目前部屬的對象支持 Kubernetes, Nomand, EC2, Google Cloud Run ,文件中也有提到這工具可以與 GitHub Action, CircleCI, Jenkins等整合來完成各種自動化部屬
有興趣的人可以趕快來玩看看,嘗鮮一下
https://www.hashicorp.com/blog/announcing-waypoint
GitOps 的概念我認為還是目前還是相當新穎,但是有觀察到愈來愈多的工具在往這一塊發展,包含最近 Rancher 2.5 就推出自己的 GitOps 工具來滿足大規模邊緣環境部署。

這邊跟大家分享我最近看的一本關於 GitOps 的電子書,整本書篇幅不多,主要分成下列章節

What GitOps isWhy it was inventedWhat problems it solvesThe differences between the principal GitOps toolsImplementation challengesAlternatives to GitOpsThe future of the GitOps movement

我閱讀的同時也隨手記錄其重點,全部分成六篇短文並且記錄下來,接下來則會每天分享一篇跟大家一起學習 GitOps 的概念與玩法

https://www.hwchiu.com/gitops-book-ch1.html