新聞中心
當前位置:網站(zhàn)首頁 > 新聞中心  
2021年11款優秀的開(kāi)源Kubernetes工(gōng)具
作(zuò)者 飛(fēi)帆網絡   信息來(lái)源:www.zbff.com   添加時(shí)間 2021年08月09日  返回
到(dào) 2021 年,幾乎所有接觸過雲基礎設施的人都熟悉 Kubernetes 項目。簡單地說,Kubernetes 是一個非常強大(dà)的容器編排平台,并且 Kubernetes 社區(qū)一直在共享工(gōng)具,這(zhè)有助于改善 Kubernetes 開(kāi)發人員的體驗。本文(wén)列出作(zuò)者自(zì)己最常用(yòng)的 11 款 Kubernetes 工(gōng)具,并對(duì)它們進行了(le)分類介紹。 Kubernetes 是一個非常強大(dà)的容器編排平台。但(dàn)在我看(kàn)來(lái),Kubernetes 最重要的是将最佳實踐整合到(dào)了(le)一個系統中,這(zhè)個系統可以從(cóng)樹莓派(Raspberry Pi)擴展到(dào)财富 500 強中最大(dà)的基礎設施。它使得開(kāi)發和(hé)運維人員能(néng)夠通過标準化的 API 和(hé)有意義的抽象(如 Pod 或 ConfigMap)進行協作(zuò)。 通過提供一個開(kāi)源标準,Kubernetes 可以将一個組織從(cóng)數十年自(zì)己摸索的“容器策略”中拯救出來(lái),幸運的是,這(zhè)個标準也(yě)是每個主要雲供應商的标準。也(yě)就是說,像 Kubernetes 這(zhè)樣龐大(dà)的野獸是很(hěn)難馴服的,但(dàn)爲了(le)充分發揮它的潛力,我們需要一套額外(wài)的工(gōng)具。 Kubernetes 社區(qū)一直在共享工(gōng)具,這(zhè)有助于改善 Kubernetes 開(kāi)發人員的體驗。以下(xià)是我自(zì)己最常用(yòng)的 11 款 Kubernetes 工(gōng)具,我将它們進行了(le)分類:哪些(xiē)是可以幫助我運行 Kubernetes 的工(gōng)具,哪些(xiē)是測試 Kubernetes 的工(gōng)具,以及哪些(xiē)是可以讓我在 IDE 中能(néng)夠獲得樂趣的(最後但(dàn)并非不重要)。 類别 1:運行 Kubernetes 環境 Minikube 仍然是最佳的 幾乎每個 Kubernetes 教程都是從(cóng)“下(xià)載 Minikube”開(kāi)始的,這(zhè)在今天仍然行得通。如果你(nǐ)想在一個真正低(dī)風(fēng)險的環境中編排容器,那麽打包及維護良好(hǎo)的 Minikube 項目可以讓 你(nǐ)在大(dà)約 23 秒内即可運行一個集群。 Helm 仍然是可重複部署的标準 雖然我們都編寫過一兩個一次性腳本來(lái)将一些(xiē)配置部署到(dào) Kubernetes 中,但(dàn)實際上(shàng)管理(lǐ)可重複部署的方法是使用(yòng) Helm。就像 Ubuntu 上(shàng)的 apt 或 RHEL 上(shàng)的 rpm 一樣,Helm 是一個包管理(lǐ)器,它爲 Kubernetes 開(kāi)發人員做了(le)很(hěn)多事(shì)情。作(zuò)爲一名開(kāi)發人員,想在投入不多的情況下(xià)用(yòng)其他(tā)項目來(lái)測試我的應用(yòng)程序。我可以簡單地運行helm install jenkins/jenkins,而不是編寫自(zì)己的 Jenkins 設置。想要獲取 Helm 或其他(tā) Kubernetes 軟件包,請(qǐng)查看(kàn) Artifact Hub。 Rancher K3s 可随時(shí)随地運行 向 Kubernetes 服務中推送容器是一回事(shì),但(dàn)是如果你(nǐ)想在 Raspberry Pi 農(nóng)場之外(wài)也(yě)弄一個呢(ne)?來(lái)自(zì) Rancher 的 K3s 項目可以做到(dào)這(zhè)一點。正如維護人員在 README 中所說的那樣,它對(duì)于 Kubernetes“集群學”(clusterology)的任何邊界或物聯網嘗試都是理(lǐ)想選擇。 K3s 作(zuò)爲本地和(hé)輕量級集群選擇的一個突出特點是它支持的設備非常廣泛。使用(yòng) K3s,你(nǐ)可以在任何地方運行 Kubernetes。事(shì)實上(shàng),它是以單個二進制文(wén)件下(xià)載的,這(zhè)意味着它包含了(le)所有生産 Kubernetes 配置的功能(néng)(sqlite3 是默認的,但(dàn)是你(nǐ)可以通過它的可插拔存儲後端将其擴展到(dào) Etcd3),并且 Rancher 團隊及其 1749 名(到(dào)目前爲止)貢獻者仍在非常積極地維護它。 Loft 可擴大(dà)團隊規模 任何人都可以通過調用(yòng)curl來(lái)啓動上(shàng)面提到(dào)的 Minikube 集群。但(dàn)是,如果你(nǐ)想要和(hé)别人合作(zuò)呢(ne)?在雲原生開(kāi)發工(gōng)具和(hé)本地開(kāi)發集群的交接處有很(hěn)多選擇。 傳統的選擇是在公有雲上(shàng)運行一些(xiē)可公開(kāi)訪問的資源:AKS、EKS、DigitalOcean Managed Kubernetes 或其他(tā)可用(yòng)資源。但(dàn)是任何一個在雲服務上(shàng)運行過hello world教程但(dàn)忘删除它的人都知(zhī)道(dào),這(zhè)會(huì)讓你(nǐ)很(hěn)快(kuài)就損失很(hěn)多。 Loft 提供了(le)一組包含 UI 和(hé) CLI 在内的服務,可以進一步抽象 Kubernetes 環境,這(zhè)些(xiē)環境最終将在生産環境中運行。這(zhè)樣做之後,你(nǐ)可以建立一個自(zì)助服務體驗,而無需考慮隔離和(hé)預算(suàn)問題。 Loft 對(duì)隔離的關注,特别是對(duì) vClusters 及其相應 Spaces 的關注,爲每個開(kāi)發人員提供了(le)一個真實的環境,而不會(huì)影響預算(suàn)。這(zhè)對(duì)開(kāi)發人員和(hé)部門(mén)領導來(lái)說都是非常有價值的。 Loft 的價值在于啓動和(hé)關閉安全 Kubernetes 環境的速度。它在一個用(yòng)例中提到(dào)隻需單擊一次 UI,即可創建本地環境的現(xiàn)場演示。更自(zì)私地考慮一下(xià),在不破壞開(kāi)發集群命名空(kōng)間的情況下(xià),可以在自(zì)己的獨立測試用(yòng)例中演示最新的生産功能(néng), 這(zhè)說聽起來(lái)确實不錯。 此外(wài),Loft 實驗室最近聘請(qǐng)了(le)了(le)不起的 Rich Burroughs,這(zhè)對(duì)于他(tā)們正在建立的這(zhè)類社區(qū)來(lái)說是個非常好(hǎo)兆頭。 當與團隊合作(zuò)時(shí),使用(yòng) Loft 是非常有意義的。 類别 2:簡化反饋回路 Skaffold 可提供自(zì)動反饋回路 假設你(nǐ)是一名開(kāi)發人員,你(nǐ)想寫一個可以在 Kubernetes 上(shàng)運行的應用(yòng)程序。從(cóng)運行 Node.js 或 Python 應用(yòng)程序到(dào)在 Kubernetes 上(shàng)運行容器,你(nǐ)需要了(le)解大(dà)量的 Kubernetes 概念,數量大(dà)到(dào)像一堵 YAML 牆。幸運的是,谷歌的好(hǎo)朋友們編寫了(le) Skaffold,爲我們提供了(le)一些(xiē)急需的腳手架。 不要誤會(huì)我的意思:你(nǐ)仍然需要編寫自(zì)己的代碼、dockerfile、清單文(wén)件以及與管道(dào)相關的所有服務。Skaffold 提供的是一種幹淨的方法,可以在每次變更代碼後重新運行部署管道(dào)。它的主頁上(shàng)引用(yòng)了(le)來(lái)自(zì)世界各地開(kāi)發人員的語錄,深受用(yòng)戶喜愛。 你(nǐ)可能(néng)會(huì)有這(zhè)種感覺:運行 Skaffold 感覺就像第一次運行 Vagrant,而不是手動管理(lǐ)虛拟機。曾經需要很(hěn)多步驟才能(néng)完成且不可靠的任務,在某種程度上(shàng)變得簡單且可重複了(le),從(cóng)而簡化了(le)我們的工(gōng)作(zuò)。Skaffold 将在 Kubernetes 的測試和(hé)部署反饋回路中這(zhè)樣做。 Podman 可停止管理(lǐ) Docker 守護進程 雖然 Dockerfiles 可能(néng)永遠是我們表示容器的方式,但(dàn) Docker 本身是完全可選的。甚至 Kubernetes 本身也(yě)在将其運行時(shí)從(cóng) Dockershim 中移出來(lái)。我非常推薦 Podman 作(zuò)爲本地運行 Docker 的替代品,唯一的原因是你(nǐ)不需要再維護守護進程服務了(le)。不幹擾守護進程意味着更少的無效時(shí)間浪費和(hé)更多的編碼時(shí)間。 這(zhè)種區(qū)别對(duì)你(nǐ)來(lái)說可能(néng)很(hěn)陌生,所以解釋一下(xià):Docker 既是一個與本地容器交互的客戶端,也(yě)是一個管理(lǐ)容器運行的用(yòng)戶态守護進程(aka server)。Nick Janetakis在這(zhè)裏 完美(měi)地解釋了(le)這(zhè)一點。 像我一樣,當一切都能(néng)正常工(gōng)作(zuò)時(shí),你(nǐ)可能(néng)會(huì)忘記 Docker 客戶端和(hé)服務端之間的區(qū)别。也(yě)就是說,我經常會(huì)看(kàn)到(dào)這(zhè)樣的信息: $ docker ps$ Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 現(xiàn)在我隻能(néng)選擇了(le)。我可以對(duì) Docker 守護進程和(hé)工(gōng)具鏈中的服務進行故障排除,或者我可以使用(yòng)一些(xiē)不會(huì)遇到(dào)相同問題的服務。我更喜歡後者。 Podman 提供了(le)将容器作(zuò)爲子進程運行的選項,從(cóng)而無需單獨的守護進程。這(zhè)意味着我永遠不會(huì)再收到(dào)那條錯誤消息了(le),我的容器會(huì)一直在做它該做的事(shì)情。 你(nǐ)可能(néng)會(huì)因爲自(zì)己的肌肉記憶太根深蒂固而不願改變。在這(zhè)種情況下(xià),我強烈建議(yì)你(nǐ)删除dockerCLI 并将alias docker = podman添加到(dào)你(nǐ)的 shell 配置文(wén)件中。 Tilt 真正了(le)解你(nǐ)的應用(yòng)程序 雖然我介紹了(le)幾種不同的管理(lǐ)管道(dào)的方法,但(dàn)我仍然認爲 Tilt 是觀察基于 Kubernetes 應用(yòng)程序的持續反饋回路最徹底、最直觀的方法。Tilt UI 具有非常簡潔的錯誤捕捉功能(néng),可以在 YAML 小(xiǎo)錯誤變成重大(dà)部署錯誤之前就能(néng)指認出它們來(lái)。它還具有可定制的按鈕,以提供特定于應用(yòng)程序的獨特功能(néng),如在不同叠代之間刷新架構中的消息隊列。 如果你(nǐ)想觀察細節但(dàn)又不想被它們淹沒,那就試試 Tilt 吧。 DevSpace 可使開(kāi)發流程更高(gāo)效 你(nǐ)是否有過想讓kubectl做某件事(shì)情,但(dàn)卻忘記了(le)做這(zhè)件事(shì)情所需要的大(dà)量命令呢(ne)?很(hěn)幸運的是,DevSpace 是一個開(kāi)源的命令行實用(yòng)程序,它可以将 Kubernetes 開(kāi)發人員體驗包在一個溫暖的擁抱中。它能(néng)管理(lǐ)大(dà)量繁瑣的任務,所以你(nǐ)可以像對(duì)待運行在本地系統上(shàng)的 Pod 一樣對(duì)待它。 此外(wài),如果你(nǐ)有非常特殊的設置項,可以簡單地将它們添加到(dào) devspace.yaml 聲明(míng)配置文(wén)件中即可。 雖然它不會(huì)一對(duì)一地取代kubectl提供的“手術刀(dāo)”,但(dàn)運行 DevSpace 會(huì)爲你(nǐ)提供大(dà)量正常的默認行爲,使與真正的 Kubernetes 環境交互更像是$HOME。 Lens IDE 可使調試更快(kuài)速 像 Minikube 這(zhè)樣的 Kubernetes 項目開(kāi)箱即用(yòng),帶有一個稱爲 Dashboard 的絲滑而直接的 GUI。這(zhè)是一個非常出色的以閱讀爲中心的環境視(shì)圖,但(dàn)是如果你(nǐ)想通過 UI 執行某些(xiē)操作(zuò),該怎麽辦呢(ne)? 開(kāi)源社區(qū)中最強大(dà)的選項是 Lens。我真的不應該稱它爲 GUI,因爲它的特性豐富到(dào)足以被視(shì)爲 IDE。隻需單擊按鈕,你(nǐ)就可以在 Lens 中執行 Kubernetes 能(néng)夠執行的任何操作(zuò)。我最喜歡 Lens 的是它那不可思議(yì)的思維情境特定選項,它幫助我區(qū)分了(le) Kubernetes 領域許多其他(tā)資源的命名空(kōng)間服務。 類别 3:不可或缺的 IDE 開(kāi)發工(gōng)具 VSCode 我們都需要的 Kubernetes 擴展 如果沒有一個能(néng)夠區(qū)分 Kubernetes 資源和(hé) Helm 圖表的 IDE,就不能(néng)說是有 Kubernetes 開(kāi)發經驗。這(zhè)就是 Visual Studio Code Kubernetes Tools 的亮(liàng)點所在。任何生活在 Kubernetes 世界的人都必須從(cóng)安裝它開(kāi)始。 該 VSCode 插件使 YAML 更易于管理(lǐ) Kubernetes 開(kāi)發人員被描述爲 YAML 牧民,我認爲這(zhè)非常合适。雖然我也(yě)喜歡結構化的特定領域語言,如下(xià)一代 Kubernaut,但(dàn)我不會(huì)放(fàng)棄任何來(lái)自(zì)管理(lǐ) YAML 本身的幫忙。幸運的是,紅(hóng)帽(Red Hat)的 YAML Language Support 擴展可以幫到(dào)我。 它提供了(le)大(dà)量的自(zì)動完成選項,以及許多額外(wài)的細微選項,這(zhè)些(xiē)選項幫助我解決了(le)問題。話(huà)雖如此,右鍵單擊并選擇“格式化文(wén)檔”的功能(néng)本身就很(hěn)有價值。 Footsteps 通過代碼查找路徑 嚴格來(lái)說,它雖然不是 Kubernetes 擴展,但(dàn)是我發現(xiàn)在 YAML 的農(nóng)場中導航可能(néng)會(huì)讓我忘記出發的地方。它在我 2000 行的配置文(wén)件的什(shén)麽地方呢(ne)?那時(shí) Footsteps 聲照亮(liàng)了(le)我短期失憶的立足點。這(zhè)個出色的擴展程序,也(yě)适用(yòng)于 VSCode 或其他(tā) IDE,它通過高(gāo)亮(liàng)來(lái)突出顯示最近編輯的文(wén)檔。随着你(nǐ)的繼續編碼,Footsteps 會(huì)逐漸淡化這(zhè)些(xiē)顔色,讓你(nǐ)了(le)解你(nǐ)的編碼模式。安裝它,可以節省你(nǐ)迷失方向的時(shí)間。 總結 有很(hěn)多不可思議(yì)的工(gōng)具可以幫助 Kubernetes 開(kāi)發和(hé)運維人員來(lái)駕馭這(zhè)種新的容器編排範式。我喜歡從(cóng)三個方面來(lái)考慮它們:它們是能(néng)幫助我運行 Kubernetes,是能(néng)測試 Kubernetes,還是能(néng)以可感知(zhī)的方式編寫 Kubernetes 代碼呢(ne)?所有這(zhè)三個類别都可以引導你(nǐ)在開(kāi)源生态系統中獲取維護良好(hǎo)的軟件,這(zhè)可以幫助你(nǐ)像我們及其他(tā)人一樣成爲更好(hǎo)的 YAML 牧民。 作(zuò)者:Matt Broberg來(lái)源:IT168網站(zhàn)
網頁設計(jì) | 網站(zhàn)建設 | 網絡公司 | 網站(zhàn)建設 | 關鍵詞優化 | 網頁制作(zuò) | 網絡推廣 | 舊版官網 | 關于我們 | 企業郵箱
傳真:0533-8952199   服務熱線:0533-7777686(周一至周五 9:00-18:00)   公司網址:http://www.zbff.com
Copyright © 2013-2024 『飛(fēi)帆軟件』 all Rights Reserved.   公司總部:山東省淄博市臨淄區(qū)臨淄古玩(wán)城(chéng)334号