使Kubernetes變得更好的11種工具
譯文【51CTO.com快譯】很少有計算平臺可以滿足所有需求,哪怕是那些功能強大、規模巨大的計算平臺。雖然Kubernetes一打開就很有用,但還遠遠不夠。總是能找到默認Kubernetes功能集不盡如人意或完全忽視的用例或需求,前者如數據庫支持,后者如持續交付。
這時候更廣泛的Kubernetes社區挺身而出,提供了針對這種容器編排框架的諸多附件、擴展件和第三方產品。以下是我們發現的11款主要的Kubernetes配套工具。一些可以補充任何Kubernetes集群,另一些可以滿足Kubernetes無法滿足的特定需求。
Gravity:易于移植的Kubernetes集群
如果你要將應用程序部署到Kubernetes中,許多應用程序都有Helm圖表來引導和自動化該過程。但是如果你想直接拿來Kubernetes集群并將其部署在某個地方該怎么辦呢?
Gravity可以為Kubernetes集群、容器注冊中心以及運行中應用程序創建快照,名為“應用程序bundle”。bundle只是一個.tar文件而已,可以在Kubernetes運行的任何地方復制集群。
Gravity還確保目標基礎架構可以支持與源基礎架構同樣的行為要求,并確保目標上的Kubernetes運行時環境狀況良好。企業版Gravity添加了安全功能,包括基于角色的訪問控制以及跨多個集群部署同步安全配置的功能。
Kaniko:在Kubernetes集群中構建容器
大多數容器映像是在容器堆棧外面的系統上構建。不過有時候,你想要在容器堆棧里面執行構建過程,比如在運行中容器里面或在Kubernetes集群上的某個位置。
Kaniko在容器環境中執行容器構建,但不依賴Docker之類的容器守護進程完成其工作。 Kaniko拿來基本映像后提取文件系統,然后在所提取文件系統上面的用戶空間中執行所有構建命令,并在每個命令后獲取文件系統的快照。
請注意,Kaniko目前無法構建Windows容器。
Kedge:簡潔的Kubernetes部署定義
Kubernetes最飽受詬病的地方是其清單或應用程序定義有多重疊復雜而冗長。它們編寫和維護起來很痛苦,于是難怪人們求助于第三方工具以減少痛苦。
Kedge提供了一種更簡單更簡潔的語法。你可以為Kedge提供Kubernetes定義文件的簡單版本,Kedge可以將該簡單定義擴展為完整的Kubernetes定義。與下面介紹的Koki Short不同,Kedge并不為聲明文件使用模塊化語法。它只是將應用程序定義簡化為常見快捷方式。
請注意,Kedge的上一個版本是2018年4月發布的。
Koki Short:易于管理的Kubernetes清單
與上面的Kedge一樣,Koki Short這個項目旨在改善應用程序定義或清單在Kubernetes中的工作方式。與Kedge定義一樣,Short定義使用一種簡短的語法來描述Kubernetes容器,可以轉換成完整的語法并再次轉換回去。與Kedge定義不同,Short定義還是模塊化的,這意味著來自一個Short聲明的詳細信息可以在其他聲明中重復使用,那樣就可以簡明地定義擁有通用元素的許多pod。
Kubecost:運行中Kubernetes的成本度量指標
大多數Kubernetes管理工具專注于易用性、監視和了解pod行為等方面。但如何監視與運行中Kubernetes有關的成本(用美元和美分來度量)呢?
Kubecost使用實時Kubernetes度量指標以及從幾大云提供商上運行的集群獲得的實際成本信息,提供顯示每個集群部署每月成本的儀表板視圖。內存、CPU、GPU和存儲的成本全部按Kubernetes組件(容器、pod、服務和部署等)加以細分。
Kubecost還可以跟蹤“集群外”資源(比如Amazon S3存儲桶)的成本,不過這目前僅限于AWS。成本方面的數據甚至可以發回Prometheus以共享,那樣你可以使用該數據以編程方式更改集群行為。
KubeDB:在Kubernetes中運行生產數據庫
數據庫在Kubernetes中一直很難優雅地運行,而原生的Kubernetes功能集無法直接解決數據庫的許多特定問題。
KubeDB讓管理員可以創建Kubernetes operator以管理數據庫。運行備份、克隆、監視、快照和聲明式創建數據庫都是其功能的一部分。還支持集群,但僅針對某些數據庫——比如它適用于PostgreSQL,但還不適用于MySQL。
Kube-monkey:面向Kubernetes的混沌猴子
對系統進行壓力測試的一種有效方法是隨機破壞系統,這就是Netflix的Chaos Monkey(混沌猴子)背后的理論。Chaos Monkey是一種混沌工程工具,可隨機終止生產環境中運行的虛擬機和容器,以“鼓勵”開發人員構建更具彈性的系統。Kube-monkey實施了同樣的基本理念,對Kubernetes集群進行壓力測試。其工作原理是,隨機終止你專門指定的一個集群中的pod,還可以進行微調以便在特定的時間窗口內運行。
Kubernetes Ingress Controller for AWS
Kubernetes通過一項名為Ingress的服務為集群提供外部負載均衡和網絡服務。AWS提供負載均衡功能,但并不自動將這些服務耦合到Kubernetes的工具。Kubernetes Ingress Controller for AWS填補了這個空白。
Kubernetes Ingress Controller for AWS自動管理集群中每個Ingress對象的AWS資源,為新的Ingress資源創建負載均衡系統,并為已刪除的Ingress資源刪除負載均衡系統,利用AWS CloudFormation來確保集群的一致狀態。它還自動管理集群中使用的其他元素,比如SSL證書和EC2自動擴展組。
Skaffold:Kubernetes的迭代開發
Skaffold是谷歌自己的Kubernetes工具之一,可以對Kubernetes應用程序執行持續部署。你對源代碼進行更改時,Skaffold可自動檢測到更改,觸發構建和部署過程,并在出現任何錯誤時發出警告。Skaffold完全在客戶端運行。它可以在現有的CI/CD管道中使用,與幾個外部構建工具(主要是谷歌自己的Bazel)整合起來。
Teresa:Kubernetes上的簡單PaaS
Teresa是一個應用程序部署系統,可在Kubernetes上作為簡單的PaaS來運行。組織成團隊的用戶可以部署和管理屬于他們的應用程序。這使得負責特定應用程序的人處理該應用程序更容易一點,沒必要直接與Kubernetes打交道。
Tilt:將容器更新版發送到Kubernetes集群
由Windmill Engineering開發的Tilt可實時監測對Dockerfile的更改,然后將那些更改增量部署到Kubernetes集群中的相應容器。實際上,它允許開發人員僅通過更新Dockerfile即可實時更新活動集群。Tilt在集群內執行構建,推送的唯一更改是源代碼。
原文標題:11 tools that make Kubernetes better,作者:Serdar Yegulalp
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】