史上最全 使用Breeze視覺化安裝Kubernetes叢集(親測有效)
使用該工具,將抹平普通使用者學習複雜的kubeadm部署技能學習曲線,體會到一鍵式部署Kubernetes叢集的樂趣!
適用作業系統為RHEL 7.4/7.5/7.6 或 CentOS 7.4/7.5/7.6
Note:
- 請不要把Breeze所在的部署主機加入部署叢集主機列表
- 為了避免包衝突,請使用純淨的CentOS Minimal安裝出來的OS來部署叢集
- PrometheusOperator + Kube-Prometheus專案為選裝項,需要該功能的中國區使用者請務必先對每臺被部署機節點設定正確的時區,(也可以做一下時間同步 可參考之前的大資料安裝環境準備裡面有相應的內容
timedatectl set-timezone Asia/Shanghai
在生產環境部署的朋友請注意!!!
- 當前版本的CA證書是動態生成的,有效期為100年,其它服務證書有效期為50年。
- 本安裝方式通過了Kubernetes Conformance一致性認證,因此可用於生產環境。
安裝過程演示視訊在此: https://pan.baidu.com/s/1X0ZYt48wfYNrSrH7vvEKiw
常見排錯說明在此: https://github.com/wise2c-devops/breeze/blob/master/TroubleShooting-CN.md
PDF手冊請在此處下載:
https://github.com/wise2c-devops/breeze/raw/master/manual/BreezeManual-CN.pdf
操作步驟如下:
- 軟體的使用非常簡單,只需要選擇相應的Release Tag並下載其中的docker-compose.yml檔案:
(Tags列出的版本號a.b.c.d其中前三位a.b.c對應於Kubernetes的發行版本號,第四位只是Breeze自身部署功能所做的修訂,不涉及對Kubernetes的任何修改)
確保您的Linux主機已經安裝好了docker以及docker-compose,具體步驟參考以下內容。
- 在部署機上做好對叢集內其它所有伺服器的ssh免密登入,命令為:
(1) 生成祕鑰 ssh-keygen -t rsa
(2) 針對目標伺服器做ssh免密登入
ssh-copy-id 192.168.9.11
ssh-copy-id 192.168.9.12
ssh-copy-id 192.168.9.13
ssh-copy-id 192.168.9.20
ssh-copy-id 192.168.9.21
...
(1)對部署機取消SELINUX設定及放開防火牆
注意一定要用這種方式關閉防火牆否則無效
setenforce 0
sed --follow-symlinks -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
firewall-cmd --set-default-zone=trusted
firewall-cmd --complete-reload
(2)安裝docker-compose命令
[[email protected] opt]# wget https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m)
[[email protected] opt]# mv docker-compose-Linux-x86_64 docker-compose
[[email protected] opt]# mv docker-compose /usr/local/bin/
[[email protected] opt]# chmod +x /usr/local/bin/docker-compose
(3) 安裝docker-io 1.13.1
yum install docker
systemctl start docker
systemctl enable docker
(4) 下載用於部署某個Kubernetes版本的docker-compose檔案並使部署程式執行起來:
[[email protected] opt]# wget https://raw.githubusercontent.com/wise2c-devops/breeze/v1.13.1/docker-compose.yml
[[email protected] opt]# docker-compose up -d
注意:docker-compose up -d 執行的時候會下載大約2G的檔案 中間可能會退出重新執行此命令即可
如果一切正常(注意deploy-playbook這個容器是個卷容器,它是退出狀態這是正常現象),部署機的88埠將能夠被正常訪問。
- 開啟瀏覽器,訪問部署程式的圖形介面,新增主機列表、新增服務角色並將加入的主機進行角色分配,然後開始部署:
點選 + 號新增一個叢集:
點選“新增主機”,輸入主機名、主機IP、描述資訊(主機用途),點選確定。
重複該步驟直至將叢集所需的全部節點伺服器加入:
(k8s master伺服器、k8s worker node伺服器、harbor伺服器等等):
點選“下一步”再點選“新增元件”按鈕,對每個元件進行設定和分配伺服器:
(docker角色、harbor角色、loadbalance角色、etcd角色、kubernetes角色、prometheus角色)
如果希望Breeze部署程式使用介面裡輸入的主機名代替當前伺服器的主機名,則勾選format host name選項框:
映象倉庫設定這裡的harbor entry point是指使用者端訪問映象倉庫的URL,可以直接寫IP地址或寫對應的域名:
接下來是設定高可用元件(haproxy+keepalived):
vip for k8s master是指三個k8s master伺服器的高可用虛擬浮動IP地址;網絡卡請填寫實際作業系統下的網絡卡名,注意請保證3個節點網絡卡名一致;router id和virtual router id請確保不同k8s叢集使用不同的值。
Etcd可以選擇部署於K8S Master節點也可以選擇獨立的三臺主機:
kubernetes entry point是指高可用的一個設定值,如果生產環境有硬體或軟體負載均衡指向這裡的k8s master所有節點,那麼就可以在這裡填寫負載均衡的統一入口地址。
相對於昂貴的F5專業硬體裝置,我們也可以使用HAProxy和Keepalived的組合輕鬆完成這個設定,Breeze自帶這個組合模組的部署。
例如下圖的 192.168.9.30:6444 就是k8s叢集高可用的統一入口,k8s的worker node會使用這個地址訪問API Server。請注意如果使用的是Breeze自帶的高可用元件haproxy+keepalived,則請填寫實際的虛IP與預設埠6444。
點選“下一步”開始安裝部署:
如果介面上所有角色圖示全部變為綠色,則表示部署任務結束。可以登入任一k8s節點執行命令 kubectl get nodes 檢視結果。
以上例子是3臺etcd、3臺k8s master、3臺k8s worker node、1臺映象倉庫的環境。實際可以增減規模。
Kubernetes Dashboard的訪問入口我們採用了NodePort:30300的方式暴露埠,因此可以通過火狐瀏覽器訪問 https://任意伺服器IP:30300 來登入Dashboard頁面,注意其它瀏覽器例如Chrome因為不接受自簽名證書會拒絕訪問請求。
新版本Dashboard引入了驗證模式,可以通過以下命令獲取admin-user的訪問令牌:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
將返回的token字串貼上至登入視窗即可實現登入。
安裝好Prometheus之後,可以訪問以下服務頁面:
Grafana:
Prometheus:
Alertmanager:
檢視叢集相關狀態:
如何在已經部署的叢集內新增新的Worker Nodes?
-
(1) 在Breeze介面新增主機(設定主機名、IP地址、備註)。
-
(2) 在Breeze介面編輯Kubernetes角色,將新主機加入到kubernetes worker nodes列表並勾選"Just add new worker nodes, do not reinstall this cluster"。
- (3) 在Breeze介面僅僅勾選Docker和Kubernetes並開始部署。