我們真的了解Kubernetes嗎?
Kebernetes系列一Kebernetes簡介
在很多同仁了解和調(diào)研Kubernetes時,認(rèn)為它是一套非常復(fù)雜的系統(tǒng),各種抽象概念以及復(fù)雜的安裝過程,學(xué)習(xí)和使用成本高,排除故障難度大,在有完善的開發(fā)、測試、生產(chǎn)環(huán)境發(fā)布流程和平臺時,使用Kubernetes反而增加運(yùn)維負(fù)擔(dān),如不能及時排除故障提升業(yè)務(wù)的故障率,本人在此對Kubernetes做一下簡介、Kubernetes安裝、dockerfile和deployment demo。
Kubernetes是一個十分強(qiáng)大的容器編排系統(tǒng)。它通過管理控制、高效的任務(wù)包裝、超售、和進(jìn)程級別性能隔離實(shí)現(xiàn)了高利用率。它支持高可用性應(yīng)用程序與運(yùn)行時功能,最大限度地減少故障恢復(fù)時間,減少相關(guān)故障概率的調(diào)度策略。目的是實(shí)現(xiàn)資源管理的自動化以及跨多個數(shù)據(jù)中心的資源利用率最大化。它是Google開源的一個容器編排引擎,它支持自動化部署、大規(guī)模可伸縮、應(yīng)用容器化管理。
在Kubernetes中,我們可以創(chuàng)建多個容器,每個容器里面運(yùn)行一個應(yīng)用實(shí)例,然后通過內(nèi)置的負(fù)載均衡策略,實(shí)現(xiàn)對這一組應(yīng)用實(shí)例的管理、發(fā)現(xiàn)、訪問,而這些細(xì)節(jié)都不需要運(yùn)維人員去進(jìn)行復(fù)雜的手工配置和處理。
Kubernetes 主要功能包括:
- 基于容器的應(yīng)用部署、維護(hù)和滾動升級
- 負(fù)載均衡和服務(wù)發(fā)現(xiàn)
- 跨機(jī)器和跨地區(qū)的集群調(diào)度
- 自動伸縮,隨時擴(kuò)展或收縮容器規(guī)模
- 無狀態(tài)服務(wù)和有狀態(tài)服務(wù)
- 一次打包多地部署
- 廣泛的 Volume 支持
- 支持公有云,私有云,混合云,多重云(multi-cloud)
- 提供容器彈性,如果容器失效就替換它,等等...
Kubernetes架構(gòu)圖:

Kubernetes核心組件
Kubernetes 主要由以下幾個核心組件組成:
- etcd 提供監(jiān)聽watch機(jī)制,監(jiān)聽和推送變更,鍵值發(fā)生變化時會通知到API Server,保存了整個集群的狀態(tài);
- apiserver 提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問控制、API 注冊和發(fā)現(xiàn)等機(jī)制,結(jié)果狀態(tài)持久存儲于etcd中,API Server是整個集群的網(wǎng)關(guān);
- controller manager 負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測、自動擴(kuò)展、滾動更新等;
- scheduler 負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將 Pod 調(diào)度到相應(yīng)的機(jī)器上;
- kubelet 負(fù)責(zé)維護(hù)容器的生命周期,同時也負(fù)責(zé) Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理;
- kube-proxy 負(fù)責(zé)為Service 提供 cluster 內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡
資源抽象
- Pod
為最小調(diào)度單元,同一Pod中容器共享網(wǎng)絡(luò)名稱空間和存儲資源,由回環(huán)口lo直接通信
- 資源標(biāo)簽
Label是將資源進(jìn)行分類的標(biāo)識符,是key/values數(shù)據(jù),為指定對象提供辨識性屬性
- 標(biāo)簽選擇器
Selector根據(jù)Label來過濾符合條件的資源對象,使用標(biāo)簽對資源對象進(jìn)行分類,使用標(biāo)簽選擇器挑選出它們
- Pod管制器
通常不直接部署及管理Pod,而是借助控制器Controller進(jìn)行管理包括 ReplicationController、ReplicaSet、Deployment、StatefulSet、Job等
- 服務(wù)資源Service
Service是Pod上的資源抽像,將標(biāo)簽選擇器選定的一組Pod定義統(tǒng)一固定訪問入口(IP及DNS名稱),到達(dá)Service的請求將負(fù)載均衡到后端的各Pod,Service也可將集群外部流量引入到集群中
- 存儲卷
Volume分為臨時卷、本地卷和網(wǎng)絡(luò)卷,臨時卷和本地卷位于Node本地,常用于數(shù)據(jù)緩存。
- Namespace
Namespace 是對一組資源和對象的抽象集合,比如可以用來將系統(tǒng)內(nèi)部的對象劃分為不同的項(xiàng)目組或用戶組。常見的 pods, services,deployments 等都是屬于某一個 namespace 的(默認(rèn)是default)。



























