天天看點

Kubernetes-使用rancher搭建Kubernetes高可用叢集

引言

  之前我寫了一篇文章介紹了

離線部署Kubernetes 1.9.0

,當時搭建的是1+3模式,此種模式不适合用于生産,為了防止由于master節點當機造成叢集不能正常工作的問題,推薦搭建Kubernetes高可用叢集,本篇文章将介紹如何使用rancher搭建Kubernetes高可用叢集。

準備工作

  1. 叢集機器

首先準備搭建叢集環境的機器,筆者準備的叢集機器如下:

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
  1. 軟體版本

    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

Kubernetes

Kubernetes的版本需要根據rancher來定,在

rancher v2.0.8 release notes

中說明了推薦使用1.11.2版本的Kubernetes;

Kubernetes-使用rancher搭建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-使用rancher搭建Kubernetes高可用叢集

Kubernetes change log

  1. 環境配置

    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】

Kubernetes-使用rancher搭建Kubernetes高可用叢集

關閉selinux.png

臨時關閉SELinux

setenforce 0
           

3.3 關閉虛拟記憶體

修改配置檔案【/etc/fstab】

vim /etc/fstab
           

  注釋掉swap那一行

Kubernetes-使用rancher搭建Kubernetes高可用叢集

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的容器

Kubernetes-使用rancher搭建Kubernetes高可用叢集

install rancher

現在通過浏覽器通路【https://192.168.246.128/】會發現跳轉到了【

https://192.168.246.128/update-password

】,讓我們為admin使用者設定一個密碼:

Kubernetes-使用rancher搭建Kubernetes高可用叢集

update password

接着設定通路rancher的URL,需要能夠被所有的節點通路到,這裡你可以設定成【rancher.{domain.com}】:

Kubernetes-使用rancher搭建Kubernetes高可用叢集

set URL

設定完成後點選【Save URL】,然後就進入添加叢集的頁面了

Kubernetes-使用rancher搭建Kubernetes高可用叢集

add cluster

點選【Add Cluster】添加叢集,選擇【CUSTOM】:

Kubernetes-使用rancher搭建Kubernetes高可用叢集

Select custom

填寫叢集名稱,然後展開【Cluster Options】,設定叢集配置,網絡提供者選擇Flannel

Kubernetes-使用rancher搭建Kubernetes高可用叢集

Cluster Options

設定完成後點選【Next】按鈕,就可以看到添加Node指令的界面了,根據節點的角色進行選擇,我的主節點的角色選擇是etcd+Control Plane,工作節點的角色選擇是Worker,選擇完後就會看到下面生成的指令,将指令Copy到相應的節點運作就可以了

Kubernetes-使用rancher搭建Kubernetes高可用叢集

Select Node Role

然後點到【Cluster】就會看到叢集正在準備環境(Provisioning),你現在要做的就是等待

Kubernetes-使用rancher搭建Kubernetes高可用叢集

Provisioning

等到所有的節點都添加完成之後就能看到叢集的狀态已經變成【Active】了,然後就可以部署你的應用了。

繼續閱讀