如果您有疑问,请查看 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。
有关详细信息,请参阅测试矩阵。