上一篇文章《从0到1使用Kubernetes系列(二):安装工具介绍》中,说到了Ansible的功能以及使用Ansible进行集群部署的优点,接下来将在本文中介绍如何经过Virtualbox + Vagrant启动CentOS虚拟机,而且使用ansible脚本在虚拟机中搭建kubernetes集群以及现有集群如何添加新的节点。node
首先,经过下面命令克隆并进入项目:python
git clone https://github.com/choerodon/kubeadm-ansible.git && cd kubeadm-ansible
复制代码
经过 Virtualbox + Vagrant启动三台CentOS系统虚拟机,在项目根目录中有编写好的Vagrantfile文件,直接使用就能够了。nginx
Vagrantfile文件以下:git
Vagrant.configure(2) do |config|
(1..3).each do |i|
config.vm.define "node#{i}" do |s|
s.vm.box = "bento/centos-7.3"
s.vm.box_url = "http://file.choerodon.com.cn/vagrant/box/bento_centos-7.3.box"
s.vm.hostname = "node#{i}"
n = 10 + i
s.vm.network "private_network", ip: "192.168.56.#{n}"
s.vm.provider "virtualbox" do |v|
v.cpus = 2
v.memory = 4096
end
end
end
end
复制代码
其中box_url指定box镜像下载地址,hostname指虚拟机主机名,private_network指内网ip地址,cpus和memory指虚拟机的硬件资源要求。github
vagrant-cachier插件用于不一样虚拟机中共享公共包缓存,减小虚拟机的包下载时间。 根据上述Vagrantfile文件启动的虚拟机相关信息以下:centos
Hostname | CPU | Memory | IP | System |
---|---|---|---|---|
node1 | 2 | 4G | 192.168.56.11 | CentOS 7.3 |
node2 | 2 | 4G | 192.168.56.12 | CentOS 7.3 |
node3 | 2 | 4G | 192.168.56.13 | CentOS 7.3 |
在项目根目录中执行下面命令启动虚拟机:缓存
*启动前请确认主机已开启CPU虚拟化支持。bash
vagrant up
复制代码
登陆虚拟机node1微信
vagrant ssh node1
复制代码
在node1中部署Ansible所需的环境网络
sudo yum install -y epel-release && \
sudo yum install -y \
ansible \
git \
httpd-tools \
pyOpenSSL \
python-cryptography \
python-lxml \
python-netaddr \
python-passlib \
python-pip
复制代码
在node1中再次克隆项目代码(防止换行符改变致使后期部署出错)
git clone https://github.com/choerodon/kubeadm-ansible.git && cd kubeadm-ansible
复制代码
在node1中编辑项目下的kubeadm-ansible/inventory/hosts文件,修改各机器的访问地址、用户名、密码,并维护好各节点与角色的关系,前面的名称为机器的hostname。该用户必须是具备root权限的用户,但并不是要求必定是root用户,其余具备root权限的用户也能够。好比,想要部署单master节点集群,只须要这样配置(参考):
*在all分区中每一行为一个节点的信息,node1为该节点的hostname,ansible_host指节点内网IP,ip指Kubernetes目标绑定网卡IP,ansible_user为该节点具备管理员权限的一个用户,ansible_ssh_pass为该用户的密码,ansible_become表明执行命令时使用管理员权限。
其中Kube-Master节点为Kubernetes主节点、Kube-Node节点为Kubernetes普通节点、Etcd节点为将部署Etcd的节点,按本教程安装Kube-Master节点与Etcd节点必须一致,Etcd官方建议Etcd集群节点个数为奇数个(好比一、三、5)以防止脑裂。
[all]
node1 ansible_host=192.168.56.11 ip=192.168.56.11 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
node2 ansible_host=192.168.56.12 ip=192.168.56.12 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
node3 ansible_host=192.168.56.13 ip=192.168.56.13 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
[kube-master]
node1
[etcd]
node1
[kube-node]
node1
node2
node3
复制代码
*在项目下的kubeadm-ansible/inventory/hosts文件默认配置的是3个master节点集群。
在node1中执行下面命令部署集群:
ansible-playbook -i inventory/hosts -e @inventory/vars cluster.yml
复制代码
在cluster.yml中咱们将集群的安装划分为6个阶段,分别为:
至此,集群部署到此结束,能够执行下面命令查看pod状态,都为Running状态则部署成功:
kubectl get po -n kube-system
复制代码
若是部署失败,想要重置集群(全部数据),执行:
ansible-playbook -i inventory/hosts reset.yml
复制代码
若是想再添加一个节点,进入已有集群当中能够按下面步骤进行: 编辑kubeadm-ansible/inventory/hosts,将新节点信息添加进去。好比新节点hostname为node4,ip为192.168.56.14,其他信息与其余节点相同,那么进行以下添加信息:
[all]
node1 ansible_host=192.168.56.11 ip=192.168.56.11 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
node2 ansible_host=192.168.56.12 ip=192.168.56.12 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
node3 ansible_host=192.168.56.13 ip=192.168.56.13 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
node4 ansible_host=192.168.56.14 ip=192.168.56.14 ansible_user=root ansible_ssh_pass=vagrant ansible_become=true
[kube-master]
node1
[etcd]
node1
[kube-node]
node1
node2
node3
node4
复制代码
节点信息添加完成后,就能够进行节点添加操做了:
ansible-playbook -i inventory/hosts -e @inventory/vars scale.yml
复制代码
添加完成后查看节点信息:
kubectl get node
复制代码
集群部署的介绍就到此结束了,下一篇咱们将为你们介绍如何搭建第一个应用程序。
更多关于Kubernetes系列的文章,欢迎点击阅读 ▼
Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。
你们也能够经过如下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:
欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。