Kubernetes叢集部署史上最詳細(一)Kubernetes叢集安裝

昀溪發表於2019-04-09

適用部署結構以及版本

本系列中涉及的部署方式和指令碼適用於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角色

執行說明

  1. 所有主機配置免密登陸
  2. 作業系統版本保持一致(我的環境Centos 7.4)
  3. 網路設定保持一致,尤其是master和node角色主機相互通訊的網路卡名稱要一致
  4. 所有指令碼在任意一臺master角色主機上執行
  5. 執行完1-system_initialization.sh指令碼後,為了提高速度建議把所需要的安裝包提前下載到/tmp/work_dir目錄中無需解壓
  6. 保證你下載的安裝包版本和指令碼中的一致,請提前檢視每個元件的安裝指令碼
  7. 執行完5-installFlannel.sh之後建議把pod-infrastructure提前下載到本地映象倉庫中,這是k8s所需基礎容器。否則後續因為下載很慢會導致你部署的POD失敗。
  8. 在執行8-installAddons-CoreDNS.sh的時候建議先檢視該指令碼把裡面所需要的映象提前拉取下來,避免由於網路原因導致指令碼執行出錯
  9. 根據自己的環境修改environment.sh環境變數指令碼
  10. 目前指令碼還沒有做如何加入現有叢集的功能,所以如果一臺主機要想加入現有k8s叢集成為node角色需要手動部署
  11. 目前如果是多臺master主機需要自行配置haproxy或者Nginx做代理
  12. 指令碼中有大量註釋其實就是為了說明語句或者引數或者這一步是做什麼的,其目的也是為了便於理解和學習

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 那點事

下圖是我安裝完成後的監控圖

關於監控我會在另外一個文章中說明

程式碼下載

指令碼程式碼從這裡下載

相關文章