kur演算法
⑴ 超全K8s集群構建指南,建議收藏
1. 什麼是kubernetes
Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提高了大規模容器集群管理的便捷性。
2. kubernetes核心組件說明
Kubernetes 集群中主要存在兩種類型的節點,分別是 master 節點 ,以及 minion 節點 。
Minion 節點是實際運行 Docker 容器的節點,負責和節點上運行的 Docker 進行交互,並且提供了代理功能。
Master 節點負責對外提供一系列管理集群的 API 介面,並且通過和 Minion 節點交互來實現對集群的操作管理。
apiserver :用戶和 kubernetes 集群交互的入口,封裝了核心對象的增刪改查操作,提供了 RESTFul 風格的 API 介面,通過 etcd 來實現持久化並維護對象的一致性。
scheler :負責集群資源的調度和管理,例如當有 pod 異常退出需要重新分配機器時,scheler 通過一定的調度演算法從而找到最合適的節點。
controller-manager :主要是用於保證 replicationController 定義的復制數量和實際運行的 pod 數量亮禪一致,另外還保證了從 service 到 pod 的映射關系總是最新的。
kubelet :運行在 minion 節點,負責和節點上的 Docker 交互,例如啟停容器,監控運行狀態等。
proxy :運行在 minion 節點,負責為 pod 提供代理功能,會定期從 etcd 獲取 service 信息,並根據 service 信息通過修改 iptables 來實現流量轉發(最初的版本是直接通過程序提供轉發功能,效率較低。),將流量轉發到要訪問的 pod 所在的節點上去。
etcd :key-value鍵值存儲資料庫,用來存儲kubernetes的信息的。
flannel :Flannel 是 CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網路(Overlay Network)工具,需要另外下載部署。
我們知道當我們啟動 Docker 後會有一個用於和容器進行交互的 IP 地址,如果不去管理的話可能這個 IP 地址在各個機器上是一樣的,並且僅限於在本機上進行通信,無法訪問到其他機器上的 Docker 容器。
Flannel 的目的就是為集群中的所有節點重鎮銷新規劃 IP 地址的使用規則,從而使得不同節點上的容器能夠獲得同屬一個內網且不重復的 IP 地址,並讓屬於不同節點上的容器能夠直接通過內網 IP 通信。
3. Kubernetes的核心概念
Pod
運行於Node節點上,若干相關容器的組合。Pod內包含的容器運行在同一宿主機上,使用相同的網路命名空間、IP地址和埠,能夠通過localhost進行通。
Pod是Kurbernetes進行創建、調度和管理的最小單位,它提供了比容器更高層次的抽象,使得部署和管理更加靈活。一個Pod可以包含一個容器或者多個相關容器。
Replication Controller
Replication Controller用來管理Pod的副本,保證集群中存在指定數量的Pod副敬旅塵本。
集群中副本的數量大於指定數量,則會停止指定數量之外的多餘容器數量,反之,則會啟動少於指定數量個數的容器,保證數量不變。
Replication Controller是實現彈性伸縮、動態擴容和滾動升級的核心。
Service
Service定義了Pod的邏輯集合和訪問該集合的策略,是真實服務的抽象。
Service提供了一個統一的服務訪問入口以及服務代理和發現機制,用戶不需要了解後台Pod是如何運行。
Label
Kubernetes中的任意API對象都是通過Label進行標識,Label的實質是一系列的K/V鍵值對。Label是Replication Controller和Service運行的基礎,二者通過Label來進行關聯Node上運行的Pod。
Node
Node是Kubernetes集群架構中運行Pod的服務節點(或agent)。
Node是Kubernetes集群操作的單元,用來承載被分配Pod的運行,是Pod運行的宿主機。
4. 前置條件設置
三台Centos7系統的虛擬機(1個master+2個node),三台機器上的防火牆,SELINUX全部關掉。我的實驗壞境可以上網,默認的YUM源就可以用。
5. 部署規劃
192.168.10.1 # master節點(etcd,kubernetes-master)
192.168.10.2 # node1節點(etcd,kubernetes-node,docker,flannel)
192.168.10.3 # node2節點(etcd,kubernetes-node,docker,flannel)
6. 開始安裝
step1:在master上安裝
yum install kubernetes-master etcd flannel -y
step2:在node上安裝
yum install kubernetes-node etcd flannel -y
step3:etcd集群配置
在master節點上編輯etcd配置文件
在node1節點上編輯etcd配置文件
在node2節點上編輯etcd配置文件
到此etcd集群就部署完了,然後每個節點上啟動
systemctl start etcd
step4:驗證
step6:啟動Master上的三個服務
step7:kubernetes node安裝
node2 節點重復上述操作
step8:分別啟動kubernetes node服務
7. 網路配置
因為kubernetes集群中網路部分是插件形式安裝的,我們這里選用flannel
上述安裝步驟已經install 了
為flannel創建分配的網路
8. 執行kubectl 命令檢查
在master上執行下面,檢查kubernetes的狀態
9. 常用排錯命令如下