kubernetes學習:2.kubernetes叢集搭建(一)架構介紹
kubernetes叢集搭建:架構介紹
作為一個容器的編排管理工具,k8s的效能出眾而且社群力量強大,連docker官方也已經預設k8s為容器編排的首選工具。所以我們更有必要去學習和了解它。
k8s的整體架構主要分為兩個部分: master(控制節點)和node(計算節點)。
從以下圖中可以清晰的看到兩者的關係和各自負責的功能:
1.左邊是master節點的內容:
作為k8s的控制節點,主要包含如下幾個元件:
(1)kube-apiserver 提供了統一的資源操作入口,對於k8s任何資源的增加改查操作都需要首先經過apiserver處理後才能在etcd服務上進行狀態修改,主要分為http/https服務和一些功能性外掛。它的職能總結為以下幾點:
1 對外提供restful的管理介面,可以對pod、service、replication controller、計算節點進行增、刪、改、查和監聽操作。
2 配置k8s的資源物件,並且將資源物件的期望狀態和當前實際儲存在etcd叢集的資料進行比對和分析
3 提供使用者自定義的外掛
4 系統日誌收集
5 可配置api文件
(2)kube-scheduler 是一個資源排程器,它根據特定的排程演算法把pod生成到指定的計算節點中。
(3)kube-controller-manager 也是執行在控制節點上一個很關鍵的管理元件,它管理很多型別的資源,例如:服務端點、副本、垃圾回收、計算節點、服務、路由、資源配額、名稱空間等等。
2.右邊兩個分別是k8s的兩個計算節點,計算節點主要包含以下幾個元件:
(1)kubelet 負責維護和管理這個計算節點,它可以使得pod的執行狀態和期望值一致。
(2)kube-proxy 為service提供了服務發現和負載均衡的功能
(3)docker 作為最底層的容器元件在計算節點也是必須存在的,它管理著容器的管理工作。
3.etcd 儲存了整個叢集的狀態,它可以作為一個etcd叢集獨立在其他節點部署,etcd的個數必須是基數個(由分散式的演算法決定)。
4.上述是搭建一個k8s所必須具備的元件,如果還需要對整個叢集做功能上的擴充套件,可以參考如下元件:
(1)ingress 為服務提供外網入口
(2)kube-dns 為整個叢集提供dns服務
(3)Dashboard 提供GUI
(4)Heapster 提供資源監控,也可以使用第三方監控(Prometheus)
系統環境
節點名稱 | ip | 配置 |
---|---|---|
wecloud-test-k8s-1(master) | 192.168.99.183 | 4核,4G,50G磁碟 |
wecloud-test-k8s-2(node1) | 192.168.99.189 | 4核,4G,50G磁碟 |
wecloud-test-k8s-3(node2) | 192.168.99.185 | 4核,4G,50G磁碟 |
wecloud-test-k8s-4(node3) | 192.168.99.196 | 4核,4G,50G磁碟 |
上述k8s的組建部署如下:
master: kube-scheduler、kube-controller-manager、kube-apiserver、etcd
node: kubelet、kube-proxy、docker、etcd
由於資源有限,所以把etcd叢集部署在了這四個節點上
部署的整體步驟如下:
1.建立tls證書和祕鑰;
2.建立kubeconfig檔案;
3.建立etcd叢集;
4.安裝kubectl命令;
5.部署master節點;
6.安裝flannel網路外掛;
7.部署node節點;
8.其他元件安裝;
- 上述的部分步驟還需要藉助私有docker倉庫,我們在第一章節部分介紹瞭如何搭建一個harbor倉庫:kubernetes學習:1.構建harbor映象倉庫
後續我們來逐步介紹整體的搭建過程。