天天看點

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

Kubernetes叢集部署

适用部署結構以及版本

本系列中涉及的部署方式和腳本适用于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 那點事

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

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

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

代碼下載下傳

腳本代碼從這裡下載下傳

繼續閱讀