本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
我們如何讓 Kubernetes 安裝變得異常簡單
在 SIG-cluster-lifecycle 中,過去幾個月我們一直努力開發 kubeadm,這是一個讓 Kubernetes 安裝變得非常容易的工具。我們從使用者那裡聽說安裝 Kubernetes 比應有的更困難,我們希望大家專注於編寫出色的分散式應用程式,而不是與基礎架構搏鬥!
建立 Kubernetes 叢集有三個階段,我們決定先專注於後兩個階段(首先)
- 佈建 (Provisioning):取得一些機器
- 啟動引導 (Bootstrapping):在其上安裝 Kubernetes 並設定憑證
- 附加元件 (Add-ons):安裝必要的叢集附加元件,例如 DNS 和監控服務、Pod 網路等。我們很早就意識到,使用者想要佈建 (provision) 機器的方式非常多樣。
他們使用許多不同的雲端供應商、私有雲、裸機,甚至 Raspberry Pi,並且幾乎總是擁有自己偏好的工具來自動化佈建機器:Terraform 或 CloudFormation、Chef、Puppet 或 Ansible,甚至 PXE 裸機開機。因此,我們做出了一個重要的決定:kubeadm 不會佈建機器。相反地,它唯一假設的是使用者有一些執行 Linux 的電腦。
另一個重要的限制是我們不想僅僅構建另一個「從外部配置 Kubernetes,透過將所有位元組裝到位」的工具。目前有許多外部專案正在執行此操作,但我們希望目標更高。我們選擇實際改進 Kubernetes 核心本身,使其更易於安裝。幸運的是,為實現這一目標的大量基礎工作已經開始。
我們意識到,如果我們讓 Kubernetes 手動安裝變得極其容易,那麼使用者應該很容易明白如何使用任何工具自動化該過程。
因此,kubeadm 登場了。它沒有基礎架構依賴性,並且滿足上述要求。它易於使用,並且應該易於自動化。它仍處於 alpha 階段,但其運作方式如下
- 您為您的發行版安裝 Docker 和官方 Kubernetes 套件。
- 選擇一個主機 (master host),執行 kubeadm init。
- 這會設定控制平面 (control plane) 並輸出一個 kubeadm join [...] 命令,其中包含安全令牌。
- 在每個選定作為工作節點 (worker node) 的主機上,執行上述的 kubeadm join [...] 命令。
- 安裝 Pod 網路。Weave Net 是一個很好的起點。只需使用 kubectl apply -f https://git.io/weave-kube 安裝它即可!Presto!您就有一個可運作的 Kubernetes 叢集了!立即試用 kubeadm。
如需影片逐步教學,請查看這裡
請按照 kubeadm 入門指南親自試用,並請在 GitHub 上給我們回饋,並提及 @kubernetes/sig-cluster-lifecycle!
最後,我要向 SIG-cluster-lifecycle 中的許多人致以衷心的感謝,沒有他們,這一切不可能實現。我在此僅提及少數幾位
- Joe Beda 讓我們專注於保持使用者操作的簡便性。
- Mike Danese of Google has been an incredible technical lead and always knows what's happening. Mike 還不知疲倦地跟進許多必要的程式碼審查。
- Ilya Dmitrichenko,我的 Weaveworks 同事,編寫了大部分的 kubeadm 程式碼,並親切地協助其他人做出貢獻。
- Lucas Käldström 來自芬蘭,肯定是團隊中最年輕的貢獻者,並且在學校數學考試前那個星期天的晚上還在合併最後一刻的提取請求。
- Brandon Philips 和他在 CoreOS 的團隊領導了 TLS 啟動引導 (bootstrapping) 的開發,這是一個至關重要的組件,沒有它我們就無法完成。
- Devan Goodwin of Red Hat 建構了 Joe 構想的 JWS 探索服務,並整理了我們的 RPM。
- Paulo Pires 來自葡萄牙,加入以協助外部 etcd 支援,並接手了許多其他工作。
- 以及許多其他貢獻者!
這確實是一項卓越的跨公司和跨時區成就,與一群可愛的人們共同完成。SIG-cluster-lifecycle 還有許多工作要做,因此,如果您對這些挑戰感興趣,請加入我們的 SIG。期待與大家合作!
- 立即試用 kubeadm 安裝 Kubernetes
- 在 GitHub 上參與 Kubernetes 專案
- 在 Stack Overflow 上發布問題(或回答問題)
- 在 Slack 上與社群聯繫
- 在 Twitter 上關注我們 @Kubernetesio 以獲取最新更新