天天看點

K8S 1.10.1 高可用環境搭建實戰

伺服器資訊如下:

主機名稱

IP

備注

node01

10.150.27.51

master and etcd

rode02

10.150.27.65

node03

10.150.27.66

node

VIP

10.150.27.99

軟體版本:

docker17.03.2-ce

socat-1.7.3.2-2.el7.x86_64

kubelet-1.10.0-0.x86_64

kubernetes-cni-0.6.0-0.x86_64

kubectl-1.10.0-0.x86_64

kubeadm-1.10.0-0.x86_64

K8S 1.10.1 高可用環境搭建實戰

參考文檔:https://github.com/cookeem/kubeadm-ha/blob/master/README_CN.md

1:分别在三台主機設定主機名稱

2:配置主機映射

3:node01上執行ssh免密碼登陸配置

4:三台主機配置、停防火牆、關閉Swap、關閉Selinux、設定核心、K8S的yum源、安裝依賴包、配置ntp(配置完後建議重新開機一次)

1:安裝keepalived

==node01的keepalived.conf==

==node02的keepalived.conf==

2:啟動keepalived

可以看到VIP已經綁定到node01上面了

1:設定cfssl環境

2:建立 CA 配置檔案(下面配置的IP為etc節點的IP)

3:node01分發etcd證書到node02上面

1:安裝etcd

==node01的etcd.service==

==node02的etcd.service==

2:添加自啟動(etcd叢集最少2個節點才能啟動,啟動報錯看mesages日志)

3:在兩個etcd節點執行一下指令檢查

顯示健康狀态即為正常:

1:安裝docker(kubeadm目前支援docker最高版本是17.03.x)

修改配置檔案

vim /usr/lib/systemd/system/docker.service

啟動docker

1:所有節點安裝kubelet kubeadm kubectl

2: 所有節點修改kubelet配置檔案

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

3:所有節點修改完配置檔案一定要重新加載配置

4: 指令補全

1:node01、node02添加叢集初始配置檔案(叢集配置檔案一樣)

2:首先node01初始化叢集

配置檔案定義podnetwork是172.16.30.0/16

kubeadm init --hlep可以看出,service預設網段是10.96.0.0/12

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf預設dns位址cluster-dns=10.96.0.10

==初始化失敗後處理辦法==

==初始化正常的結果如下==

3:node01上面執行如下指令

4:kubeadm生成證書密碼檔案分發到node02上面去

5:部署flannel網絡,隻需要在node01執行就行

執行指令

6:部署dashboard

擷取token,通過令×××登陸

通過firefox通路dashboard,輸入token,即可登陸

kubernetes-dashboard.yaml檔案内容如下

7:安裝heapster

通路https://10.150.27.99:30000/#!/login即可看到監控資訊

heapster檔案資訊

grafana.yaml

heapster.yaml

influxdb.yaml

heapster-rbac.yaml

9:在node02上面執行初始化

10:檢視節點資訊

11:讓master也運作pod(預設master不運作pod)

在node03節點執行如下指令,即可将節點添加進叢集

12: Dashboard樣例

https://10.150.27.99:30000/

見下圖。

K8S 1.10.1 高可用環境搭建實戰

至此K8S1.1.10雙Master高可用模式搭建完成,在Node01上關閉網卡模拟故障,VIP會自動漂移到Node02。