伺服器資訊如下:
主機名稱
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
參考文檔: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/
見下圖。
至此K8S1.1.10雙Master高可用模式搭建完成,在Node01上關閉網卡模拟故障,VIP會自動漂移到Node02。