1. 什麽是kubernetes
Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等壹系列完整功能,提高了大規模容器集群管理的便捷性。
2. kubernetes核心組件說明
Kubernetes 集群中主要存在兩種類型的節點,分別是 master 節點 ,以及 minion 節點 。
Minion 節點是實際運行 Docker 容器的節點,負責和節點上運行的 Docker 進行交互,並且提供了代理功能。
Master 節點負責對外提供壹系列管理集群的 API 接口,並且通過和 Minion 節點交互來實現對集群的操作管理。
apiserver :用戶和 kubernetes 集群交互的入口,封裝了核心對象的增刪改查操作,提供了 RESTFul 風格的 API 接口,通過 etcd 來實現持久化並維護對象的壹致性。
scheduler :負責集群資源的調度和管理,例如當有 pod 異常退出需要重新分配機器時,scheduler 通過壹定的調度算法從而找到最合適的節點。
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. 常用排錯命令如下