上一篇文章《從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豬齒魚社區,共同爲企業數字化服務打造一個開放的生態平臺。