引言
之前我寫了一篇文章介紹了
離線部署Kubernetes 1.9.0,當時搭建的是1+3模式,此種模式不适合用于生産,為了防止由于master節點當機造成叢集不能正常工作的問題,推薦搭建Kubernetes高可用叢集,本篇文章将介紹如何使用rancher搭建Kubernetes高可用叢集。
準備工作
- 叢集機器
首先準備搭建叢集環境的機器,筆者準備的叢集機器如下:
Hostname | IP | Memory | OS | Role |
---|---|---|---|---|
k8smaster1 | 192.168.246.128 | 6G | CentOS 7.5 | Kubernetes master 節點 |
k8smaster2 | 192.168.246.129 | |||
k8smaster3 | 192.168.246.130 | |||
k8sworker1 | 192.168.246.131 | 12G | Kubernetes node 節點 | |
k8sworker2 | 192.168.246.132 | |||
k8sworker3 | 192.168.246.133 | |||
k8sworker4 | 192.168.246.134 | |||
k8sworker5 | 192.168.246.135 |
-
軟體版本
2.1
rancher 截止寫這篇文章時,rancher的最新版本是v2.0.8,是以我使用的v2.0.8的穩定版,這裡還要關注一下v2.0.8版本對軟硬體的要求,在GitHub上可以看到對于環境的最低要求:
-
作業系統
Ubuntu 16.04 (64-bit)
Red Hat Enterprise Linux 7.5 (64-bit)
RancherOS 1.3 (64-bit)
-
硬體
至少4 GB記憶體
-
軟體
Docker版本:v1.12.6, 1.13.1, 17.03.2
2.2
KubernetesKubernetes的版本需要根據rancher來定,在
rancher v2.0.8 release notes中說明了推薦使用1.11.2版本的Kubernetes;
rancher release notes
2.3 Docker
Docker的版本需要根據Kubernetes來定,在
Kubernetes 1.11 change log中描述如下,和1.10版本一樣,經過驗證的Docker版本有1.11.2 至 1.13.1 和 17.03.x;
Kubernetes change log
-
環境配置
3.1 修改每台機器的【/etc/hosts】檔案,增加以下解析:
192.168.246.128 k8smaster1
192.168.246.129 k8smaster2
192.168.246.130 k8smaster3
192.168.246.131 k8sworker1
192.168.246.132 k8sworker2
192.168.246.133 k8sworker3
192.168.246.134 k8sworker4
192.168.246.135 k8sworker5
3.2 關閉所有機器的安全加強系統SELinux,使容器能夠通路到主控端檔案系統
vim /etc/selinux/config
将【SELINUX】設定為【disabled】
關閉selinux.png
臨時關閉SELinux
setenforce 0
3.3 關閉虛拟記憶體
修改配置檔案【/etc/fstab】
vim /etc/fstab
注釋掉swap那一行
image.png
然後通過指令臨時關閉虛拟記憶體
swapoff -a
關于不關閉虛拟記憶體會出現的問題我在
已經注明;
3.4 設定防火牆
如果是做測試用,可以直接關掉防火牆,但是如果是用于生産環境,還是老老實實的去設定需要開發的端口吧,運作以下指令關閉防火牆
systemctl stop firewalld.service && systemctl disable firewalld.service
3.5 安裝docker
選擇docker版本【docker 17.03.2-ce】,安裝步驟參考
這裡,或者也可以選擇直接運作下面的指令
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base-Ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base-163.repo https://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -o /etc/yum.repos.d/Docker-ce-Ali.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache
yum install --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch -y
systemctl enable docker.service && systemctl start docker.service
部署rancher
rancher的部署有兩種方式,分别是單點部署和高可用部署,由于本文的重點在于如何使用rancher搭建Kubernetes高可用叢集,是以本文使用rancher的單點部署方式,至于rancher的高可用部署,以後再寫文章補充。
選擇一個節點(我選擇的是k8smaster1節點)運作如下指令安裝單節點rancher:
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:stable
安裝完成後運作【docker ps】會看到有一個rancher的容器
install rancher
現在通過浏覽器通路【https://192.168.246.128/】會發現跳轉到了【
https://192.168.246.128/update-password】,讓我們為admin使用者設定一個密碼:
update password
接着設定通路rancher的URL,需要能夠被所有的節點通路到,這裡你可以設定成【rancher.{domain.com}】:
set URL
設定完成後點選【Save URL】,然後就進入添加叢集的頁面了
add cluster
點選【Add Cluster】添加叢集,選擇【CUSTOM】:
Select custom
填寫叢集名稱,然後展開【Cluster Options】,設定叢集配置,網絡提供者選擇Flannel
Cluster Options
設定完成後點選【Next】按鈕,就可以看到添加Node指令的界面了,根據節點的角色進行選擇,我的主節點的角色選擇是etcd+Control Plane,工作節點的角色選擇是Worker,選擇完後就會看到下面生成的指令,将指令Copy到相應的節點運作就可以了
Select Node Role
然後點到【Cluster】就會看到叢集正在準備環境(Provisioning),你現在要做的就是等待
Provisioning
等到所有的節點都添加完成之後就能看到叢集的狀态已經變成【Active】了,然後就可以部署你的應用了。