1. 简介
kubespray是kubernetes官方推荐的部署方法之一,他代表了另外一个比较流行的kubernetes管理方法,利用其它自动化管理工具框架,通过编写执行流程来安装部署kubernetes。流行的框架就比如说ansible这种传统的,或者是terraform这种新兴的。而kubespray对于这些都有涉猎,他支持在公有云上安装kubernetes集群,而在IaaS层面上就是使用的terraform在AWS,GCE,Azure上面部署,在部署kubernetes的时候,就使用ansible这种编排工具来安装。其实,我感觉他更像是一个个小工具的集合,功能很全面,但是每个功能都是独立存在的,并没有太大的联系,从零构建kubernetes集群的时候,好像是一个个的pipeline。
2. 功能
- 可以部署在 AWS, GCE, Azure, OpenStack, vSphere, Packet (bare metal), Oracle Cloud Infrastructure (实验阶段), or 裸机
- 高可用集群
- 可以选择网络方案
- 支持大部分的Linux发行版
- 持续集成测试
3. 快速部署
- 安装ansible和python3-pip
sudo apt-get update && apt install -y ansible python3-pip
- git项目到管理机
git clone https://github.com/kubernetes-sigs/kubespray.git
- 安装python需要的依赖包
cd kubespray/
sudo pip3 install -r requirements.txt
- 把配置的模板复制一份
cp -rfp inventory/sample inventory/mycluster
- 把所有节点的IP声明一下
declare -a IPS=(10.0.11.219 10.0.12.225 10.0.13.101 10.0.12.155 10.0.13.217)
- 生成配置文件
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
- 这两个文件就是所有的清单文件了,想要修改集群的信息,就在里面改,不修改的话,是两个master和3个worker
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
- 最后就是play了
ansible-playbook --private-key /tmp/js.key -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
- 等待一段时间,登录到第一台机器,也就是10.0.11.219上,使用kubectl命令
root@node1:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready master 35m v1.16.8
node2 Ready master 34m v1.16.8
node3 Ready <none> 33m v1.16.8
node4 Ready <none> 34m v1.16.8
node5 Ready <none> 33m v1.16.8
4. 参考文档
kubespray中还有很多的小工具,比如在AWS使用terraform创建资源,点这里。我就不一一演示了,我想告诉他家的是一种思路,使用编排工具安装kubernetes的思路。而kubespray就是代表之一,如果想查看更多相关的信息,可以参考代码仓库