k8s入門系列之介紹篇
•Kubernetes介紹
1.背景介紹
雲端計算飛速發展
- IaaS
- PaaS
- SaaS
- 一次構建,到處執行
- 容器的快速輕量
- 完整的生態環境
2.什麼是kubernetes
Kubernetes(k8s)是Google開源的容器叢集管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署執行、資源排程、服務發現和動態伸縮等一系列完整功能,提高了大規模容器叢集管理的便捷性。
Kubernetes優勢:
- 容器編排
- 輕量級
- 開源
- 彈性伸縮
- 負載均衡
•Kubernetes的核心概念
1.Pod
運行於Node節點上,若干相關容器的組合。Pod內包含的容器執行在同一宿主機上,使用相同的網路名稱空間、IP地址和埠,能夠通過localhost進行通。Pod是Kurbernetes進行建立、排程和管理的最小單位,它提供了比容器更高層次的抽象,使得部署和管理更加靈活。一個Pod可以包含一個容器或者多個相關容器。
2.Replication Controller
Replication Controller用來管理Pod的副本,保證叢集中存在指定數量的Pod副本。叢集中副本的數量大於指定數量,則會停止指定數量之外的多餘容器數量,反之,則會啟動少於指定數量個數的容器,保證數量不變。Replication Controller是實現彈性伸縮、動態擴容和滾動升級的核心。
3.Service
Service定義了Pod的邏輯集合和訪問該集合的策略,是真實服務的抽象。Service提供了一個統一的服務訪問入口以及服務代理和發現機制,使用者不需要了解後臺Pod是如何執行。
4.Label
Kubernetes中的任意API物件都是通過Label進行標識,Label的實質是一系列的K/V鍵值對。Label是Replication Controller和Service執行的基礎,二者通過Label來進行關聯Node上執行的Pod。
5.Node
Node是Kubernetes叢集架構中執行Pod的服務節點(亦叫agent或minion)。Node是Kubernetes叢集操作的單元,用來承載被分配Pod的執行,是Pod執行的宿主機。
•Kubernetes架構和元件
架構:

主從分散式架構,Master/Node
- 服務分組,小叢集,多叢集
- 服務分組,大叢集,單叢集
元件:
Kubernetes Master控制組件,排程管理整個系統(叢集),包含如下元件:
1.Kubernetes API Server
作為Kubernetes系統的入口,其封裝了核心物件的增刪改查操作,以RESTful API介面方式提供給外部客戶和內部元件呼叫。維護的REST物件持久化到Etcd中儲存。
2.Kubernetes Scheduler
為新建立的Pod進行節點(node)選擇(即分配機器),負責叢集的資源排程。元件抽離,可以方便替換成其他排程器。
3.Kubernetes Controller
負責執行各種控制器,目前已經提供了很多控制器來保證Kubernetes的正常執行。
- Replication Controller
管理維護Replication Controller,關聯Replication Controller和Pod,保證Replication Controller定義的副本數量與實際執行Pod數量一致。
- Node Controller
管理維護Node,定期檢查Node的健康狀態,標識出(失效|未失效)的Node節點。
- Namespace Controller
管理維護Namespace,定期清理無效的Namespace,包括Namesapce下的API物件,比如Pod、Service等。
- Service Controller
管理維護Service,提供負載以及服務代理。
- EndPoints Controller
管理維護Endpoints,關聯Service和Pod,建立Endpoints為Service的後端,當Pod發生變化時,實時更新Endpoints。
- Service Account Controller
管理維護Service Account,為每個Namespace建立預設的Service Account,同時為Service Account建立Service Account Secret。
- Persistent Volume Controller
管理維護Persistent Volume和Persistent Volume Claim,為新的Persistent Volume Claim分配Persistent Volume進行繫結,為釋放的Persistent Volume執行清理回收。
- Daemon Set Controller
管理維護Daemon Set,負責建立Daemon Pod,保證指定的Node上正常的執行Daemon Pod。
- Deployment Controller
管理維護Deployment,關聯Deployment和Replication Controller,保證執行指定數量的Pod。當Deployment更新時,控制實現Replication Controller和Pod的更新。
- Job Controller
管理維護Job,為Jod建立一次性任務Pod,保證完成Job指定完成的任務數目
- Pod Autoscaler Controller
實現Pod的自動伸縮,定時獲取監控資料,進行策略匹配,當滿足條件時執行Pod的伸縮動作。
Kubernetes Node執行節點,執行管理業務容器,包含如下元件:
1.Kubelet
負責管控容器,Kubelet會從Kubernetes API Server接收Pod的建立請求,啟動和停止容器,監控容器執行狀態並彙報給Kubernetes API Server。
2.Kubernetes Proxy
負責為Pod建立代理服務,Kubernetes Proxy會從Kubernetes API Server獲取所有的Service資訊,並根據Service的資訊建立代理服務,實現Service到Pod的請求路由和轉發,從而實現Kubernetes層級的虛擬轉發網路。
3.Docker
Node上需要執行容器服務。