Kubernetes Weekly News 2019 W30
Published in
20 min readJul 25, 2019
重點整理
由於小編六月一個偷懶,之前又先跑去寫的 K8S 1.15 的功能介紹,導致此次週報內容涵蓋的時間範圍有點寬廣,差不多從六月中到七月中一整個月的新聞跟技術文章 (等等…這不叫週刊,這應該要叫做月刊吧XD) 涉及的內容範圍也相當地廣泛…從基本的概念,好用的工具,Service Mesh, CI/CD ,資安領域以及各種應用…等都有提及,希望大家會喜歡XD
概念介紹
- 相信還有一些朋友們對於 K8S 處於正在研究的階段,此篇文章詳盡的介紹在 K8S 內的應用服務如何跟外界進行溝通,利用很文青的手繪風從 Service 的不同種類型,例如:NodePort, ClusterIP 和 LoadBalancer 開始介紹起,接著提到在真實世界中如何使用 Ingress 去滿足各種不同的需求…詳全文 (Internal and external connectivity in Kubernetes space)
- 在 K8S 的 Pod 當中可以設定資源的請求和上限,CPU 相較於 Memory 來說更為抽象,此篇文章從介紹 CPU 在 K8S 內代表的意義開始,慢慢帶入要如何妥當的設定 CPU 的請求和上限值,最後提到 K8S 內對於資源的 QoS 設定…詳全文 (Kubernetes Container Resource Requirements — Part 2: CPU)
- K8S 大體來說分成了 Master 和 Worker,但其實內部由許多的元間構築而成,此篇文章主要是撰寫給需要自己完整安裝一套 K8S 叢集或是想要詳細了解 K8S 是如何運行的人…詳全文 (Kubernetes Journey — Up and running out of the cloud — Master and Worker)
好用工具
- K3V 會運行一個虛擬的 K8S Control Plane,但是當使用者用它來開啟 Pod 的時候,他會使用另外一個實體的 K8S 來運行這個 Pod,換句話說 K3V 使用的運算能力,儲存空間和網路資源都是來自於另外一個真實的 K8S 叢集,此專案目前處於 POC 階段…詳全文 (k3v — Virtual Kubernetes)
- Logbook 是一個即時的 K8S 日誌檢視器,其實它的功能看一眼上面的 Gif 圖檔就可以一目了然,有興趣的人可以安裝來試試看…. 詳全文 (logbook)
- kube-rclone 是 rclone 掛載 的 K8S 解決方案,它允許使用者從網路儲存服務,例如 Google Drive 雙向地同步資料夾和檔案…詳全文 (kube-rclone)
- 一般來說 K8S Operator 是使用 Go 來進行開發,但是假如對於這個語言不熟悉的開發者要怎麼辦呢?Zalando 發佈了 Kopf 開發框架,讓使用者可以選擇使用 Python 來開發 K8S Operator … 詳全文 (Building a Kubernetes Operator In Python With Zalando’s Kopf)
- Ingress Controller 其實就是運行在 K8S 內應用服務的入口處,Traefik 是其中一種 Ingress Controller,雖然有很多的教學文章提到要如何部署單一的 Traefik Ingress Controller,但卻比較少有詳細的文章提到如何部署一個高可用的 Traefik 叢集,所以作者把自己經驗寫成此篇文章 … 詳全文 (Traefik cluster as Ingress Controller for Kubernetes)
- 假如需要一個密碼管理工具,而它必須具備高可用,建置在自己的架構內,為 Cloud-Native,不會耗費太多的資源,那該如何達到呢?此篇文章介紹如何利用 BanzaiCloud 推出的 HashiCorp Vault Operato 來達成此一任務…詳全文 (Deploying Vault with etcd backend in Kubernetes)
- Kubernetes Opex Analytics 可以用來提供短期,中期甚至是長期的 K8S 資源使用量 Dashborad,從而讓組織獲知運行在目前 K8S 內的不同專案成本分別是多少,最終目標是希望可以幫助組織去做成本的預估和容量規劃的決定…詳全文 (Bringing Prometheus Metrics and Grafana Dashboard for Cost Allocation on Kubernetes Clusters)
CI/CD
- Jenkins 是目前被廣泛使用的 CI/CD 框架之一,雖然要將 Jenkins 運行在 GKE 當中已經不是什麼問題,不過要使用 Jenkins 管理運行於 K8S 中的應用服務並且使用更強大的佈署策略,其實是不太容易做到的,因此 GKE 這邊為 Jenkins 推出了Jenkins GKE Plugin,讓 Jenkins 可以無縫的將應用服務部署至 GKE 的叢集中… 詳全文 (Introducing the Jenkins GKE Plugin — deploy software to your Kubernetes clusters)
- 除了 Jenkins 之外,還有另外一套由 Google, Netflix 等大咖公司在其背後撐腰的 CI/CD Framework 叫做 Spinnaker,這篇改由 AWS 官方來演示如何安裝 Spinnaker,並透過其建立好 CD Pipeline 將開發者的應用程式跑在 K8S 中… 詳全文 (Build a Deployment Pipeline with Spinnaker on Kubernetes)
- 作者介紹如何在 GCP 中使用 GKE, Cloud Build 服務,並且結合一些 Infrastructure as Code 的工具,例如 Terraform 跟 Packer 來將 CI/CD 的 Workflow 建置出來,文章中是以一個使用 Go 開發的網站應用來當作演示範例,一步一步帶著讀者實地操作演練… 詳全文 (Building a CI/CD on GCP with Kubernetes)
- 最後為大家帶來一個比較沒聽過的 CI/CD 工具 Prow,作者說假如不是使用原生的 K8S CD,那麼你的 CI/CD 便可能走錯了方向,而他認為 Prow 是最佳展示如何讓 K8S 的 CD 達成規模化的 K8S 原生 CD 工具,除此之外,Prow 同時也在另外一個 CI/CD 框架 Tekton 中,接下來的文章內容開始介紹 Prow 的起源,以及其內部的架構跟使用方法… 詳全文 (Prow: Keeping Kubernetes CI/CD Above Water)
應用服務
- Airflow 是一套由 Airbnb 開源的工作管理流程系統,而其中有一個稱作 Kubernetes Executor 的功能,知道它的功能然後看到這個名字後,應該可以猜測出他可以動態的將使用者定義好的工作丟到 K8S 裡面去運行,而此篇文章便是要如何使用 Kubernetes Executor 的教學文章… 詳全文 (Apache Airflow with Kubernetes Executor and MiniKube)
- MongoDB 企業版的 Operator 來嘍~ 為了因應越來越多的使用者都在使用 K8S,所以 MongoDB 企業版乾脆自己做了 Operator,而因為是企業版的,所以有滿漂亮的 UI 管理介面可以使用,文章裡面還附有簡易的部署跟使用範例… 詳全文 (Introducing the MongoDB Enterprise Operator for Kubernetes)
- 接著是有關資料庫的應用,不過是關聯是資料庫 PostgreSQL,此篇文章介紹如何使用 PostgreSQL Operator 加上 Rook Ceph Storage 將其架設在 Kubernetes 中,讓我想起了最近有一篇該不該把資料庫放到 Kubernetes 內的文章… 詳全文 (Using the PostgreSQL Operator with Rook Ceph Storage)
- 竟然又是資料庫XD 這篇介紹的是最近比較火紅的蟑螂資料庫 (CockroachDB),Cockroach Labs 內部 SRE 團隊開始評估要不要將 CockroachDB 部署到 K8S 中,而因為成員有前 Google 員工,因此 Borg 被拿來當作比較的基準,後來答案當然是肯定的,因為他們希望借助 K8S 將許多維運都已經自動化的優勢讓團隊將更多時間花在 CockroachDB 的應用本身… 詳全文 (Why We Run Managed CockroachDB on Kubernetes)
- 接下來的兩篇文章都跟 Kafka 有點相關,第一篇提到如何自動擴展 Kafka Stream 應用程式,另外一篇則是介紹如何利用 Prometheus 監控 AKKA Stream Kafka 應用程式,兩篇都附有詳細的操作說明,推薦給有在使用 Kafka 的維運人員
- Banzai Cloud 因為需要將應用運行在許多混合雲的容器管理平台上,因此常常需要撰寫 K8S Operator,而在一些比較複雜的 Operator 開發上,例如 Istio, Vault 和 Kafka,他們面臨了 K8S 資源在創建的時候去跟 K8S API 進行太多不必要的物件更新,為了這個問題,他們開源了objectmatcher 函式庫來解決問題… 詳全文 (Kubernetes object matcher library)
Service Mesh
- Kiali 第一個主要版本 1.0 在這個月發佈啦~不過先談談 Kiali是什麼先,它可以將 Service Mesh 的拓樸圖給視覺化出來,並且將 Request Routing, Circuit Breakers, Request Rates 和 Latency 等方面都給呈現出來,而在此版本中做了相當多的改善…詳全文 (Kiali Sprint #24 — the first major version is out!)
- Service Mesh 的聲量越來越大,就算沒有在用應該也常常聽到XD 此篇文章先從 Microservice 的優點講起,接著提到其可能遭遇到的痛點,然後點出 Istio 的出現對於 Microservice 的生態系的影響,到這邊大約只有兩成的篇幅,剩下的八成就是使用範例來詳細演示該如何使用 Istio…詳全文 (Easy microservices with Kubernetes and Istio)
維運相關
- 接下來提到的都會是跟維運相關主題,首先介紹這篇適合想要在雲端平台上自架 Kubernetes 的人來參考,文章詳述如何使用 Terraform 把一個高可用的 K8S 叢集給建設出來,比較特別的在於…文章有特地把如何架設 Etcd 叢集的部分拉出來說明… 詳全文 (Automating Highly Available Kubernetes and external ETCD cluster setup with terraform and kubeadm on AWS.)
- 上面講完在雲端建立 K8S 叢集,接著換來講如何在地端做類似的事情,作者閱讀完 Kubernetes The Hard Way 後受到其激勵,因此決定也做類似的事情,不過是使用 K3S 將 K8S 叢集建立在 Pine64 Clusterboard,希望給予想要在 Bare-Metal 架設的人了解可能遇到的挑戰…詳全文 (Kubernetes The Fun Way)
- 阿里巴巴的 K8S 團隊如何利用一個叫做 Virtual Cluster 的 Plugin 在 K8S 上建立一個讓大家共用的叢集,使得每個事業部門都像是一個單獨使用者去租用這個 K8S 叢集,… 詳全文 (Virtual Cluster — Extending Namespace Based Multi-tenancy with a Cluster View)
- 有嘗試自己安裝過 K8S 的人應該都有聽過 Kubeadm,他於 2018 年底 GA ,而這篇文章則是在介紹其在 K8S 1.15 做了哪些變更,比較大的更新包含 High Availability 進入 Beta 階段,Certificate Management,改善組態的檔案格式,並且講了一些 2019 年的目標… 詳全文 (Automated High Availability in kubeadm v1.15: Batteries Included But Swappable)
- 當 K8S 內有大量的 Service 時,大家應該都會透過 Ingress 來幫忙充當跟外界溝通的橋樑,因此當然要監控它是不是活得好好地活著,而此篇文章介紹假如用 Ambassador API gateway 時,該如何整合 Prometheus 來監控它… 詳全文 (Monitoring Your Kubernetes Ingress with Ambassador, Prometheus, and Grafana)
- 以往在實作 K8S Horizontal Pod Autoscaler 的時候,預設作法可能都是透過 K8S Metrics Server,而在 AWS 陣營這邊目前發佈了可以透過其平台內的 Cloudwatch Metrics 來當成另外一個選擇,文章內有詳述實際作法 … 詳全文 (Scaling Kubernetes deployments with Amazon CloudWatch metrics)
- RedHat 這邊應該是對 K8S Federation 近最多心力的商業代表之一了,而為了解決舊版 Federation 所遭遇到的問題,而推出的 V2 也正式正名為 KubeFed,此篇文章使用了 MongoDB ReplicaSet 來進行 Demo… 詳全文 (Federation V2 is now KubeFed)
- 研究 K8S 久一點的人應該都對於 CoreOS 不陌生才對,在被 RedHat 買下之後,其在社群的開發力道減弱滿多的,不過在去年中宣部的 Fedora CoreOS 總算發布預覽版啦,有興趣想要踩雷的人可以… 詳全文 (Introducing Fedora CoreOS)
- AWS 推出 ElasticSearch 開源版本也已經過一段時間了,最近跟同事在研究時發現 AWS 這邊追官方的追得滿緊的,目前已經跟到 7.0.1,而這篇文章則是分享如何把它安裝在 K8S 中,而且是用更安全的方式,有興趣的人 … 詳全文 (Secure Logging for Kubernetes)
- Elastic 這邊之前跟 AWS 吵完之後,最近功能大爆發,發布了許多好用的功能,像這篇文章便是針對如何收集 K8S 的 Log 以及 Metric 來做介紹… 詳全文 (Kubernetes monitoring)
- 當存在於 K8S 內的應用服務越來越多後,要偵錯就會變得越來越困難或是麻煩,因此這篇文章介紹要如何透過 ingress-nginx kubectl plugin 來幫忙進行應用服務的除錯… 詳全文 (Kubernetes Ingress-Nginx Troubleshooting made Easy with kubectl plugins)
- 使用 K8S 的人應該都逃不掉需要使用 Terminal 的命運吧,此篇文章的作者分享自己用了哪些工具來增進自己在 Terminal 下跟 K8S 互動的效率,包含了 ZSH, K9S, Kubectx & Kubens, Kubeps1, Kubetail 以及 Popeye… 詳全文 (Why So Serious : Setting up a Serious Kubernetes Terminal)
- 對使用 K8S 來運行計算任務的 Machine Learning 科學家和工程師來說
,有一個穩定的底層架構是很重要的,而一般的監控通常都是針對一直不斷運行的服務居多,對於一次性的運算任務來說比較少見一些,所以這篇文章分享在 PathAI 內如何整合目前市面上已有的工具來監控一次性任務的訓練時間,記憶體使用情況,資料流量大小 … 詳全文 (Prometheus Metrics for Batch Jobs on Kubernetes)
Security
- 最近兩個月感覺 K8S PSP (Pod Security Policy)被提到的頻率突然大幅上升,最近在 AWS EKS 1.13 版本也已經有支援了,這個功能用來定義一些 Pod 的安全性規則,譬如跑在裡面的 Container 不能夠使用 Root 使用者,只允許開啟哪些 Port… 詳全文 (Using Pod Security Policies with Amazon EKS Clusters)
- Kubolt 是一個可以用來掃描可以被公開存取的 K8S 叢集,記得去年自己分享 K8S 的維運經驗時也有提到千萬不要把不該放的東西放到 Internet,讓不法人士可以公開存取到,所以轉貼這篇一樣是用來提醒大家要保護好自己的 K8S 叢集… 詳全文 (Kubolt: scanning public kubernetes clusters)
- K8S 各種資安謠言破除者,這篇文章滿有趣的,譬如有人說 K8S Dashborad 是 Security Risk,作者就跳出來說這是錯誤的觀念,Dashboard 本身並不會不安全,而是端看使用者的部署方式,或是 Security Account 可不可以拿來給使用者使用… 詳全文 (Kubernetes Security Myths Debunked)
- kube-owasp-zap 這個專案是 owasp-zap 的 K8S 版本,他會部署相關的資源到 K8S 內,然後進行 Vulnerability 掃描跟分析,不過目前此專案還在滿早期的,所以仍然有很多東西需要完成… 詳全文 (kube-owasp-zap)