如果您有疑問,請查看 kubespray.io 上的文件並加入我們的 kubernetes slack 頻道#kubespray 。您可以在這裡獲取邀請
以下是使用 Kubespray 部署 Kubernetes 叢集的幾種方法。
根據 Ansible 安裝指南安裝 Ansible,然後執行以下步驟:
# Copy ` ` inventory/sample ` ` as ` ` inventory/mycluster ` `
cp -rfp inventory/sample inventory/mycluster
# Update Ansible inventory file with inventory builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# Review and change parameters under ` ` inventory/mycluster/group_vars ` `
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# Clean up old Kubernetes cluster with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example cleaning up SSL keys in /etc/,
# uninstalling old packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
# And be mind it will remove the current kubernetes cluster (if it ' s running)!
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml
# Deploy Kubespray with Ansible Playbook - run the playbook as root
# The option ` --become ` is required, as for example writing SSL keys in /etc/,
# installing packages and interacting with various systemd daemons.
# Without --become the playbook will fail to run !
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
注意:當 Ansible 已經透過控制節點上的系統套件安裝時,透過sudo pip install -r requirements.txt
安裝的 Python 套件將轉到不同的目錄樹(例如/usr/local/lib/python2.7/dist-packages
在Ubuntu 上)來自Ansible 的(例如/usr/lib/python2.7/dist-packages/ansible
仍然在 Ubuntu 上)。因此, ansible-playbook
命令將會失敗並顯示:
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
這可能表示任務依賴requirements.txt
中存在的模組。
解決此問題的一種方法是卸載系統 Ansible 軟體包,然後透過pip
重新安裝 Ansible,但這並不總是可行,必須注意軟體包版本。解決方法包括將ANSIBLE_LIBRARY
和ANSIBLE_MODULE_UTILS
環境變數分別設定為pip
安裝位置的ansible/modules
和ansible/module_utils
子目錄,該位置是在執行ansible-playbook
之前執行pip show [package]
顯示的Location
。
確保您獲得所有正確版本的 Ansible 的簡單方法是使用 Quay 中預先建置的 docker 映像。然後,您需要使用綁定安裝來存取容器中的清單和 SSH 金鑰,如下所示:
git checkout v2.26.0
docker pull quay.io/kubespray/kubespray:v2.26.0
docker run --rm -it --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory
--mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa
quay.io/kubespray/kubespray:v2.26.0 bash
# Inside the container you may now run the kubespray playbooks:
ansible-playbook -i /inventory/inventory.ini --private-key /root/.ssh/id_rsa cluster.yml
如果您希望將此儲存庫用作 Ansible 集合,請參閱此處
對於 Vagrant,我們需要安裝 Python 依賴項來執行設定任務。檢查Python
和pip
是否已安裝:
python -V && pip -V
如果這會返回軟體的版本,那麼就可以開始了。如果沒有,請從此處下載並安裝 Python https://www.python.org/downloads/source/
根據 Ansible 安裝指南安裝 Ansible,然後執行以下步驟:
vagrant up
注意:不支援基於 Upstart/SysV init 的作業系統類型。
ansible_become
標誌或命令參數--become or -b
。硬體:這些限制由 Kubespray 保護。您的工作負載的實際要求可能有所不同。有關規模調整指南,請參閱建立大型叢集指南。
您可以在十個網頁外掛程式中進行選擇。 (預設值: calico
,除了 Vagrant 使用flannel
)
flannel:gre/vxlan(第 2 層)網。
Calico 是一家網路和網路策略供應商。 Calico 支援一組靈活的網路選項,旨在為您在各種情況下提供最高效的網絡,包括非覆蓋和覆蓋網絡,無論是否有 BGP。 Calico 使用相同的引擎在服務網格層強制為主機、pod 和(如果使用 Istio 和 Envoy)應用程式實施網路策略。
cilium:第 3/4 層網路(以及第 7 層以保護和保護應用程式協定),支援將 BPF 字節碼動態插入 Linux 核心以實現安全服務、網路和可見性邏輯。
weave:Weave 是一個輕量級容器覆蓋網絡,不需要外部 K/V 資料庫叢集。 (請參閱weave
故障排除文件)。
kube-ovn:Kube-OVN 將基於 OVN 的網路虛擬化與 Kubernetes 整合。它為企業提供先進的容器網路結構。
kube-router:Kube-router 是用於Kubernetes 網路的L3 CNI,旨在提供操作簡單性和高效能:它使用IPVS 提供Kube Services Proxy(如果設定為替換kube-proxy)、用於網路策略的iptables 以及用於ods 的BGP L3 網路(可選擇與群外 BGP 對等體進行 BGP 對等互連)。它還可以選擇向 Kubernetes 叢集 Pod CIDR、ClusterIP、ExternalIP 和 LoadBalancerIP 通告路由。
macvlan:Macvlan 是一個 Linux 網路驅動程式。 Pod 擁有自己唯一的 Mac 和 Ip 位址,直接連接實體(第 2 層)網路。
multus:Multus 是一個元 CNI 插件,為 pod 提供多種網路介面支援。對於每個接口,Multus 將 CNI 呼叫委託給輔助 CNI 插件,例如 Calico、macvlan 等。
custom_cni :您可以指定一些將套用於叢集的清單,以帶來您自己的 CNI 並使用 Kubespray 不支援的清單。請參閱tests/files/custom_cni/README.md
和tests/files/custom_cni/values.yaml
以取得Helm Chart 提供的CNI 範例。
要使用的網頁插件由變數kube_network_plugin
定義。也可以選擇利用內建雲端提供者網路。另請參閱網路檢查器。
nginx:NGINX 入口控制器。
Metallb:MetalLB 裸機服務 LoadBalancer 供應商。
CI/端對端測試贊助商:CNCF、Equinix Metal、OVHcloud、ELASTX。
有關詳細信息,請參閱測試矩陣。