上一篇文章《從0到1使用Kubernetes系列(二):安裝工具介紹》中,說到了Ansible的功能以及使用Ansible進行叢集部署的優勢,接下來將在本文中介紹如何通過Virtualbox + Vagrant啟動CentOS虛擬機器,並且使用ansible指令碼在虛擬機器中搭建kubernetes叢集以及現有叢集如何新增新的節點。
啟動虛擬機器
首先,通過下面命令克隆並進入專案:
git clone https://github.com/choerodon/kubeadm-ansible.git && cd kubeadm-ansible
複製程式碼
通過 Virtualbox + Vagrant啟動三臺CentOS系統虛擬機器,在專案根目錄中有編寫好的Vagrantfile檔案,直接使用就可以了。
Vagrantfile檔案如下:
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指虛擬機器的硬體資源要求。
vagrant-cachier外掛用於不同虛擬機器中共享公共包快取,減少虛擬機器的包下載時間。 根據上述Vagrantfile檔案啟動的虛擬機器相關資訊如下:
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虛擬化支援。
vagrant up
複製程式碼
登入虛擬機器node1
vagrant ssh node1
複製程式碼
部署Kubernetes
在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叢集節點個數為奇數個(比如1、3、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個階段,分別為:
- 安裝預備
- 安裝前檢查:檢查系統,確認Yum庫,下載cfssl。
- Docker相關檢查:檢查Docker Engine,Configuration,Proxy。
- Etcd安裝
- 生成Etcd證照
- 安裝Docker
- 配置系統環境
- kube-master:kube-node必須元件安裝
- kubelet
- kube-master安裝
- 檢查kubeadm
- 生成證照
- 修改配置
- kube-node安裝
- 生成配置檔案
- kubeadm join
- 其他元件安裝
- 配置flannel網路
- 安裝ingress-nginx
- 安裝dashboard
- 安裝heapster
- 安裝kube-lego
至此,叢集部署到此結束,可以執行下面命令檢視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豬齒魚
Choerodon豬齒魚是一個開源企業服務平臺,是基於Kubernetes的容器編排和管理能力,整合DevOps工具鏈、微服務和移動應用框架,來幫助企業實現敏捷化的應用交付和自動化的運營管理的開源平臺,同時提供IoT、支付、資料、智慧洞察、企業應用市場等業務元件,致力幫助企業聚焦於業務,加速數字化轉型。
大家也可以通過以下社群途徑瞭解豬齒魚的最新動態、產品特性,以及參與社群貢獻:
- 官網:choerodon.io
- 論壇:forum.choerodon.io
- Github:github.com/choerodon/
- 微信:Choerodon豬齒魚
- 微博:Choerodon豬齒魚
歡迎加入Choerodon豬齒魚社群,共同為企業數字化服務打造一個開放的生態平臺。