参考《和我一步步部署 KUBERNETES 集群》,将其部署步骤通过ansible playbook实现自动化部署。
https://www.gitbook.com/book/opsnull/follow-me-install-kubernetes-cluster/details
假设虚拟机IP信息如下:
kube-ansible 192.168.33.10 MEM 2G
kube-master 192.168.33.100 MEM 2G
kube-node1 192.168.33.201 MEM 2G
kube-node2 192.168.33.202 MEM 2G
通过vagrant/ansible, vagrant/cluster目录下执行vagrant up来初始化虚拟机环境
$sudo passwd root
$su -
#vi /etc/ssh/sshd_config 确保如下配置选项的开启与关闭
PermitRootLogin yes
PasswordAuthentication yes
#PasswordAuthentication no
#systemctl restart sshd
配置SSH Key
#ssh-keygen -t rsa
实现ansible master主机对集群其他主机root帐号的免密连接
#ssh-keygen 创建ssh key
#ssh-copy-id root@192.168.33.10
#ssh-copy-id root@192.168.33.100
#ssh-copy-id root@192.168.33.201
#ssh-copy-id root@192.168.33.202
安装ansible
#yum install -y epel-release
#yum install -y python-pip python-netaddr ansible git
#pip install --upgrade Jinja2
在ansible master主机home目录下git clone下载代码,修改相关配置
#cd /root
#git clone https://github.com/nik-niming/k8s-centos7-ansible.git
#cd k8s-centos7-ansible
根据实际虚拟机环境修改hosts文件中的etcd、master、node主机的IP地址
编辑group_vars/all全局配置文件,确保相关位置路径, url,k8s集群参数设置正确
#vi group_vars/all
关键的全局参数:
集群主机网络主接口(如果使用vagrant,默认eth0为NAT,请调整为eth1)
HOST_INTERFACE: eth1
确保ansible master主机上的文件存储路径正确
已下载的第三方软件包,预生成的CA证书,配置文件等目录
CFSSL_DIR: /opt/data/cfssl_linux-amd64
CA_DIR: /opt/data/ca
...
下载的二进制文件执行目录(ansible 目标主机存储二进制文件的位置)
BIN_DIR: /root/local/bin
...
根据实际虚拟机环境进行ip地址替换(如果使用操作3台节点组成etcd集群,请修定义相关变量和修改集群地址配置)
### etcd配置(需要与ansible inventory文件内容同步)
ETCD_NODE1: master
ETCD_NODE1_IP: 192.168.33.100
ETCD_NODE2: node1
ETCD_NODE2_IP: 192.168.33.201
ETCD_NODE3: node2
ETCD_NODE3_IP: 192.168.33.202
MASTER_IP: 192.168.33.100
为了避免每次通过网络下载二进制软件包,在ansible master主机下执行playbook install_init.yml,会在/opt/data目录下存放下载好的安装过程用到的二进制安装包,在后面集群安装用到的cluster.yml playbook中将直接通过copy模块实现文件复制,不通过get_url模块在线下载,加快构建速度
#ansible-playbook -i hosts init.yml
执行k8s集群安装
#ansible-playbook -i hosts install.yml
删除集群,清理节点
#ansible-playbook -i hosts uninstall.yml
完成基础安装后需要在master或者node节点执行kubectl查看和批准命令添加集群节点,之后继续安装相关功能插件,例如 DNS。
#/root/local/bin/kubectl get csr
#/root/local/bin/kubectl certificate approve
项目地址 https://github.com/nik-niming/k8s-centos7-ansible/