KubeKeyKubernetes 集群安裝工具
KubeKey(由 Go 語言開發(fā))是一種全新的安裝工具,替代了以前使用的基于 ansible 的安裝程序。KubeKey 為您提供靈活的安裝選擇,您可以僅安裝 Kubernetes,也可以同時(shí)安裝 Kubernetes 和 KubeSphere。
KubeKey 的幾種使用場景:
- 僅安裝 Kubernetes;
- 使用一個(gè)命令同時(shí)安裝 Kubernetes 和 KubeSphere;
- 擴(kuò)縮集群;
- 升級(jí)集群;
- 安裝 Kubernetes 相關(guān)的插件(Chart 或 YAML)。
KubeKey 如何運(yùn)作
下載 KubeKey 之后,您可以使用可執(zhí)行文件 kk 來進(jìn)行不同的操作。無論您是使用它來創(chuàng)建,擴(kuò)縮還是升級(jí)集群,都必須事先使用 kk 準(zhǔn)備配置文件。此配置文件包含集群的基本參數(shù),例如主機(jī)信息、網(wǎng)絡(luò)配置(CNI 插件以及 Pod 和 Service CIDR)、倉庫鏡像、插件(YAML 或 Chart)和可插拔組件選項(xiàng)(如果您安裝 KubeSphere)。有關(guān)更多信息,請參見示例配置文件。
準(zhǔn)備好配置文件后,您需要使用 ./kk 命令以及不同的標(biāo)志來進(jìn)行不同的操作。這之后,KubeKey 會(huì)自動(dòng)安裝 Docker,并拉取所有必要的鏡像以進(jìn)行安裝。安裝完成后,您還可以檢查安裝日志。
為什么選擇 KubeKey
- 以前基于 ansible 的安裝程序依賴于許多軟件,例如 Python。KubeKey 由 Go 語言開發(fā),可以消除在多種環(huán)境中出現(xiàn)的問題,確保成功安裝。
- KubeKey 支持多種安裝選項(xiàng),例如 All-in-One、多節(jié)點(diǎn)安裝以及離線安裝。
- KubeKey 使用 Kubeadm 在節(jié)點(diǎn)上盡可能多地并行安裝 Kubernetes 集群,使安裝更簡便,提高效率。與舊版的安裝程序相比,它極大地節(jié)省了安裝時(shí)間。
- KubeKey 旨在將群集作為對象來進(jìn)行安裝,即 CaaO。
下載 KubeKey
從 GitHub Release Page 下載 KubeKey 或者直接運(yùn)行以下命令。
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.0.1 sh -
備注
支持的環(huán)境
Linux 發(fā)行版
- Ubuntu 16.04, 18.04
- Debian Buster, Stretch
- CentOS/RHEL 7
- SUSE Linux Enterprise Server 15
Kubernetes 版本
- v1.15: ? v1.15.12
- v1.16: ? v1.16.13
- v1.17: ? v1.17.9 (默認(rèn))
- v1.18: ? v1.18.6
查看更多支持的版本點(diǎn)擊這里
注意: KubeSphere目前暫不支持運(yùn)行在k8s 1.19.x之上。
要求和建議
- 最低資源要求(僅對于最小安裝 KubeSphere):
- 2 核虛擬 CPU
- 4 GB 內(nèi)存
- 20 GB 儲(chǔ)存空間
/var/lib/docker 主要用于存儲(chǔ)容器數(shù)據(jù),在使用和操作過程中會(huì)逐漸增大。對于生產(chǎn)環(huán)境,建議 /var/lib/docker 單獨(dú)掛盤。
- 操作系統(tǒng)要求:
-
SSH可以訪問所有節(jié)點(diǎn)。 - 所有節(jié)點(diǎn)的時(shí)間同步。
-
sudo/curl/openssl應(yīng)在所有節(jié)點(diǎn)使用。 -
docker可以自己安裝,也可以通過 KubeKey 安裝。 -
Red Hat在其Linux發(fā)行版本中包括了SELinux,建議關(guān)閉SELinux或者將SELinux的模式切換為Permissive[寬容]工作模式
-
- 建議您的操作系統(tǒng)環(huán)境足夠干凈 (不安裝任何其他軟件),否則可能會(huì)發(fā)生沖突。
- 如果在從 dockerhub.io 下載鏡像時(shí)遇到問題,建議準(zhǔn)備一個(gè)容器鏡像倉庫 (加速器)。為 Docker 守護(hù)程序配置鏡像加速。
- 默認(rèn)情況下,KubeKey 將安裝 OpenEBS 來為開發(fā)和測試環(huán)境配置 LocalPV,這對新用戶來說非常方便。對于生產(chǎn),請使用 NFS/Ceph/GlusterFS 或商業(yè)化存儲(chǔ)作為持久化存儲(chǔ),并在所有節(jié)點(diǎn)中安裝相關(guān)的客戶端 。
- 如果遇到拷貝時(shí)報(bào)權(quán)限問題Permission denied,建議優(yōu)先考慮查看SELinux的原因。
- 依賴要求:
KubeKey 可以同時(shí)安裝 Kubernetes 和 KubeSphere。根據(jù) KubeSphere 所安裝版本的不同,您所需要安裝的依賴可能也不同。請參考以下表格查看您是否需要提前在節(jié)點(diǎn)上安裝有關(guān)的依賴。
| Kubernetes 版本 ≥ 1.18 | Kubernetes 版本 < 1.18 | |
|---|---|---|
socat |
必須安裝 | 可選,但推薦安裝 |
conntrack |
必須安裝 | 可選,但推薦安裝 |
ebtables |
可選,但推薦安裝 | 可選,但推薦安裝 |
ipset |
可選,但推薦安裝 | 可選,但推薦安裝 |
- 網(wǎng)絡(luò)和 DNS 要求:
- 確保
/etc/resolv.conf中的 DNS 地址可用。否則,可能會(huì)導(dǎo)致群集中出現(xiàn)某些 DNS 問題。 - 如果您的網(wǎng)絡(luò)配置使用防火墻或安全組,則必須確保基礎(chǔ)結(jié)構(gòu)組件可以通過特定端口相互通信。建議您關(guān)閉防火墻或遵循鏈接配置:網(wǎng)絡(luò)訪問。
- 確保
用法
獲取安裝程序可執(zhí)行文件
-
下載KubeKey可執(zhí)行文件 Releases page
下載解壓后可直接使用。
-
從源代碼生成二進(jìn)制文件
git clone https://github.com/kubesphere/kubekey.git cd kubekey ./build.sh
注意:
- 在構(gòu)建之前,需要先安裝 Docker。
- 如果無法訪問
https://proxy.golang.org/,比如在大陸,請執(zhí)行build.sh -p。
創(chuàng)建集群
快速開始
快速入門使用 all-in-one 安裝,這是熟悉 KubeSphere 的良好開始。
命令
./kk create cluster [--with-kubernetes version] [--with-kubesphere version]
例子
-
使用默認(rèn)版本創(chuàng)建一個(gè)純 Kubernetes 集群
./kk create cluster
-
創(chuàng)建指定一個(gè)(支持的版本)的 Kubernetes 集群
./kk create cluster --with-kubernetes v1.17.9 -
創(chuàng)建一個(gè)部署了 KubeSphere 的 Kubernetes 集群 (例如
--with-kubesphere v3.0.0)./kk create cluster --with-kubesphere [version]
高級(jí)用法
您可以使用高級(jí)安裝來控制自定義參數(shù)或創(chuàng)建多節(jié)點(diǎn)群集。具體來說,通過指定配置文件來創(chuàng)建集群。
-
首先,創(chuàng)建一個(gè)示例配置文件
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
例子:
-
使用默認(rèn)配置創(chuàng)建一個(gè)示例配置文件。您也可以指定文件名稱或文件所在的文件夾。
./kk create config [-f ~/myfolder/config-sample.yaml] -
同時(shí)安裝 KubeSphere
./kk create config --with-kubesphere
-
-
根據(jù)您的環(huán)境修改配置文件 config-sample.yaml
當(dāng)指定安裝KubeSphere時(shí),要求集群中有可用的持久化存儲(chǔ)。默認(rèn)使用localVolume,如果需要使用其他持久化存儲(chǔ),請參閱 addons 配置。
-
使用配置文件創(chuàng)建集群。
./kk create cluster -f ~/myfolder/config-sample.yaml
啟用多集群管理
默認(rèn)情況下,Kubekey 將僅安裝一個(gè) Solo 模式的單集群,即未開啟 Kubernetes 多集群聯(lián)邦。如果您希望將 KubeSphere 作為一個(gè)支持多集群集中管理的中央面板,您需要在 config-example.yaml 中設(shè)置 ClusterRole。關(guān)于多集群的使用文檔,請參考 如何啟用多集群。
開啟可插拔功能組件
KubeSphere 從 2.1.0 版本開始對 Installer 的各功能組件進(jìn)行了解耦,快速安裝將默認(rèn)僅開啟最小化安裝(Minimal Installation),Installer 支持在安裝前或安裝后自定義可插拔的功能組件的安裝。使最小化安裝更快速輕量且資源占用更少,也方便不同用戶按需選擇安裝不同的功能組件。
KubeSphere 有多個(gè)可插拔功能組件,功能組件的介紹可參考 配置示例。您可以根據(jù)需求,選擇開啟安裝 KubeSphere 的可插拔功能組件。我們非常建議您開啟這些功能組件來體驗(yàn) KubeSphere 完整的功能以及端到端的解決方案。請?jiān)诎惭b前確保您的機(jī)器有足夠的 CPU 與內(nèi)存資源。開啟可插拔功能組件可參考 開啟可選功能組件。
添加節(jié)點(diǎn)
將新節(jié)點(diǎn)的信息添加到群集配置文件,然后應(yīng)用更改。
./kk add nodes -f config-sample.yaml
刪除節(jié)點(diǎn)
通過以下命令刪除節(jié)點(diǎn),nodename指需要?jiǎng)h除的節(jié)點(diǎn)名。
./kk delete node <nodeName> -f config-sample.yaml
刪除集群
您可以通過以下命令刪除集群:
- 如果您以快速入門(all-in-one)開始:
./kk delete cluster
- 如果從高級(jí)安裝開始(使用配置文件創(chuàng)建的集群):
./kk delete cluster [-f config-sample.yaml]
集群升級(jí)
單節(jié)點(diǎn)集群
升級(jí)集群到指定版本。
./kk upgrade [--with-kubernetes version] [--with-kubesphere version]
-
--with-kubernetes指定kubernetes目標(biāo)版本。 -
--with-kubesphere指定kubesphere目標(biāo)版本。
多節(jié)點(diǎn)集群
通過指定配置文件對集群進(jìn)行升級(jí)。
./kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
-
--with-kubernetes指定kubernetes目標(biāo)版本。 -
--with-kubesphere指定kubesphere目標(biāo)版本。 -
-f指定集群安裝時(shí)創(chuàng)建的配置文件。
注意: 升級(jí)多節(jié)點(diǎn)集群需要指定配置文件. 如果集群非kubekey創(chuàng)建,或者創(chuàng)建集群時(shí)生成的配置文件丟失,需要重新生成配置文件,或使用以下方法生成。
Getting cluster info and generating kubekey's configuration file (optional).
./kk create config [--from-cluster] [(-f | --file) path] [--kubeconfig path]
-
--from-cluster根據(jù)已存在集群信息生成配置文件. -
-f指定生成配置文件路徑. -
--kubeconfig指定集群kubeconfig文件. - 由于無法全面獲取集群配置,生成配置文件后,請根據(jù)集群實(shí)際信息補(bǔ)全配置文件。
啟用 kubectl 自動(dòng)補(bǔ)全
KubeKey 不會(huì)啟用 kubectl 自動(dòng)補(bǔ)全功能。請參閱下面的指南并將其打開:
先決條件:確保已安裝 bash-autocompletion 并可以正常工作。
# 安裝 bash-completion apt-get install bash-completion # 將 completion 腳本添加到你的 ~/.bashrc 文件 echo 'source <(kubectl completion bash)' >>~/.bashrc # 將 completion 腳本添加到 /etc/bash_completion.d 目錄 kubectl completion bash >/etc/bash_completion.d/kubectl
更詳細(xì)的參考可以在這里找到。
