Kubernetes架構(gòu)+核心組件最全介紹合集
本篇目標
分析為什么選擇kubernetes
kubernetes概述
kubernetes架構(gòu)介紹和分析
kubernetes核心概念POD,POD控制器,Service詳解
下一篇完整安裝Kubernetes
為什么需要Kubernetes
? ? ? 很多小伙伴兒對Kubernetes可能都是聽過但沒用過,然而如果你真的去落地微服務架構(gòu)會發(fā)現(xiàn),Kubernetes是繞不開的。在架構(gòu)班壓軸實戰(zhàn)-微服務架構(gòu)電商平臺中,一共有15個微服務,7個定時作業(yè)processor,再加上Redis、RabbitMQ、MongoDB、ElasticSearch、Kafka、ELK、Apollo等各種組件,分別還得集群部署,算起來都得100多個進程了,怎么部署?當然是容器化的,但是100多容器真不是人能管的過來的。中途我演示了用docker-compose管理,寫腳本都能讓人崩潰,Kubernetes才是正解!
Kubernetes是什么
Kubernetes誕生之初就是個管理容器的工具,然而在管理好容器之后,又提供了各種進階好用的功能,在架構(gòu)班的實戰(zhàn)中得到了很好的應用,下面一一介紹下:
自動發(fā)布與伸縮
可以通過聲明式的配置文件定義想要部署的容器,Kubernetes將自動進行容器的部署,達到期望的結(jié)果;通過指定容器副本數(shù),或者設(shè)置根據(jù)資源負載情況(如CPU、內(nèi)存使用率),自動對容器組進行快速的伸縮——增大或縮小容器數(shù)量,做到流量自適應
滾動升級與灰度發(fā)布:采用逐步替換的策略實現(xiàn)滾動升級,使用Kubernetes也可以很輕易地管理系統(tǒng)的灰度發(fā)布
服務發(fā)現(xiàn)與負載均衡:Kubernetes通過DNS名稱或IP地址暴露容器的訪問方式,并且可在同一容器組內(nèi)實現(xiàn)負載分發(fā)與均衡
存儲編排:Kubernetes可以自動掛載指定的存儲系統(tǒng),如local storage/nfs/云存儲等
故障恢復:Kubernetes自動重啟已經(jīng)停機的容器,替換不滿足健康檢查的容器
密鑰與配置管理:Kubernetes可以存儲與管理敏感信息,如Docker Registry的登錄憑證,密碼,ssh密鑰等
Kubernetes架構(gòu):kubernetes是用于自動部署,擴展和管理容器化應用程序的開源系統(tǒng)。它源自Google15年生產(chǎn)環(huán)境的運維經(jīng)驗,他的靈活性能讓我們在應對復雜系統(tǒng)時得心應手。

k8s核心組件:
etcd 保存了整個集群的狀態(tài);
apiserver 提供了資源操作的唯一入口,并提供認證、授權(quán)、訪問控制、API注冊和發(fā)現(xiàn)等機制;
controller manager負責維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
scheduler負責資源的調(diào)度,按照預定的調(diào)度策略將Pod調(diào)度到相應的機器上;
kubelet 負責維護容器的生命周期,同時也負責Volume(CSI)和網(wǎng)絡(luò)(CNI)的管理;
Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
kube-proxy負責為Service提供cluster內(nèi)部的服務發(fā)現(xiàn)和負載均衡;
除了核心組件,還有一些推薦的插件,其中有的已經(jīng)成為CNCF中的托管項目:
CoreDNS負責為整個集群提供DNS服務
Ingress Controller為服務提供外網(wǎng)入口
Prometheus提供資源監(jiān)控
Dashboard提供GUI
Federation提供跨可用區(qū)的集群
Kubernetes架構(gòu)示意圖
整體架構(gòu)

Master架構(gòu)

Node架構(gòu)

分層架構(gòu)

??說 明? ?????
核心層:Kubernetes最核心的功能,對外提供API構(gòu)建高層的應用,對內(nèi)提供插件式應用執(zhí)行環(huán)境
應用層:部署(無狀態(tài)應用、有狀態(tài)應用、批處理任務、集群應用等)和路由(服務發(fā)現(xiàn)、DNS解析等)、Service Mesh(部分位于應用層)
管理層:系統(tǒng)度量(如基礎(chǔ)設(shè)施、容器和網(wǎng)絡(luò)的度量),自動化(如自動擴展、動態(tài)Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)、Service Mesh(部分位于管理層)
接口層:kubectl命令行工具、客戶端SDK以及集群聯(lián)邦
生態(tài)系統(tǒng):在接口層之上的龐大容器集群管理調(diào)度的生態(tài)系統(tǒng),可以劃分為兩個范疇
Kubernetes外部:日志、監(jiān)控、配置管理、CI/CD、Workflow、FaaS、OTS應用、ChatOps、GitOps、SecOps等
Kubernetes內(nèi)部:CRI、CNI、CSI、鏡像倉庫、Cloud Provider、集群自身的配置和管理等
K8S核心概念
POD是什么
POD是K8S創(chuàng)建、管理和部署的最小單元,其他資源對象都是支撐和擴展POD,一個POD包含一個或者多個容器。為了將容器的生命周期和進程的生命周期綁定,通常一個容器內(nèi)只包含一個進程;當一個服務運行需要多個進程時,為了保持這個規(guī)則,因此需要比容器更高一級的對象,這就是POD。




POD 控 ?制 ?器
POD控制器是什么
為更好的使用POD,K8S一般不直接創(chuàng)建POD而是通過創(chuàng)建中間層POD控制器來使用POD。通過POD控制器可以更好的實現(xiàn)POD的保活、擴縮容和升級等操作。














Service&Ingress
Service是什么







本篇文章偏理論介紹,在下一篇將實操Kubernetes集群環(huán)境構(gòu)建,一起來試試吧!