適用部署結構以及版本
本系列中涉及的部署方式和腳本適用於1.13.x和1.14,而且采取的是二進制程序部署方式。
腳本支持的部署模式
最小部署模式 3台主機,1台為k8s的master角色,其余2台為k8s的node角色,etcd以集群形式運行在3台上都部署(我在測試環境中使用的部署規模)
中等部署模式 6台主機,3台為k8s的master角色,其余3台為k8s的node角色,etcd以集群形式部署在3台master機器上
大型部署模式 9台主機,3台為k8s的master角色,3台為k8s的node角色,其余3台etcd以集群形式部署獨立部署在單獨的機器上
超大型部署 3+3+N台主機 3台為k8s的master角色 3台etcd以集群形式部署獨立部署在單獨的機器上 N台node角色
執行說明
- 所有主機配置免密登陸
- 操作系統版本保持一致(我的環境Centos 7.4)
- 網絡設置保持一致,尤其是master和node角色主機相互通信的網卡名稱要一致
- 所有腳本在任意一台master角色主機上執行
- 執行完1-system_initialization.sh腳本后,為了提高速度建議把所需要的安裝包提前下載到/tmp/work_dir目錄中無需解壓
- 保證你下載的安裝包版本和腳本中的一致,請提前查看每個組件的安裝腳本
- 執行完5-installFlannel.sh之后建議把pod-infrastructure提前下載到本地鏡像倉庫中,這是k8s所需基礎容器。否則后續因為下載很慢會導致你部署的POD失敗。
- 在執行8-installAddons-CoreDNS.sh的時候建議先查看該腳本把里面所需要的鏡像提前拉取下來,避免由於網絡原因導致腳本執行出錯
- 根據自己的環境修改environment.sh環境變量腳本
- 目前腳本還沒有做如何加入現有集群的功能,所以如果一台主機要想加入現有k8s集群成為node角色需要手動部署
- 目前如果是多台master主機需要自行配置haproxy或者Nginx做代理
- 腳本中有大量注釋其實就是為了說明語句或者參數或者這一步是做什么的,其目的也是為了便於理解和學習
kubernetes集群的master角色其實只需要安裝kube-apiserver, kube-scheduler, kube-controller-manager;而Node角色只需要安裝
kube-proxy、kubelet、docker、flannel組件;但是本版本的腳本中在Master角色上我們也安裝了kube-proxy、kubelet、docker、flannel
這些組件這就變成Master主機其實也可提供Node角色的功能,但是為了避免非特殊說明的情況下POD被調度到Master主機上,我們在Master主機上
打了污點。之所以在Master上也安裝那些組件主要是為了讓Master可以訪問service、POD的網絡以及在需要的情況下在Master主機上運行POD。
其實部署腳本沒有太多執行邏輯部署基本都是下載、解壓、設置配置文件、拷貝、啟動這些常規操作,另外安裝kubernetes很多帖子都是kubeadm安裝,這種方式的確安裝方便,但是對於一些細節你將無法了解,所以為了理解這些組件通過二進制程序安裝更合適。
關於bootstrap不太好理解,建議提前看看這篇文章:Kubernetes TLS bootstrapping 那點事
下圖是我安裝完成后的監控圖
關於監控我會在另外一個文章中說明