
Kubernetes是一個(gè)開(kāi)源容器編排平臺(tái),管理大規(guī)模分布式容器化軟件應(yīng)用, 是云計(jì)算發(fā)展演進(jìn)的一次徹底革命性的突破。Kubernetes是谷歌的第三代容器管理系統(tǒng),是Borg獨(dú)特的控制器和Omega靈活的調(diào)度器的組合。Kubernetes中的應(yīng)用被打包成與環(huán)境完全分離的容器鏡像,并且自動(dòng)配置應(yīng)用并維護(hù)跟蹤資源分配。
Kubernetes是以 應(yīng)用為中心 的技術(shù)架構(gòu)與思想理念, 向下 屏蔽基礎(chǔ)設(shè)施差異,實(shí)現(xiàn)底層基礎(chǔ)資源統(tǒng)一調(diào)度及編排; 向上 通過(guò)容器鏡像標(biāo)準(zhǔn)化應(yīng)用,實(shí)現(xiàn)應(yīng)用負(fù)載自動(dòng)化部署; 中間 通過(guò)Kubernetes通用的編排能力,開(kāi)放API以及自定義CRD擴(kuò)展能力,打造云原生操作系統(tǒng)能力,形成云計(jì)算新界面;助力研發(fā)團(tuán)隊(duì) 快速構(gòu)建標(biāo)準(zhǔn)化、彈性高可靠、松耦合、易管理維護(hù)的應(yīng)用系統(tǒng),提升交付效率,降低運(yùn)維復(fù)雜度。 Kubernetes在技術(shù)架構(gòu)方面具備三個(gè)能力:
- 敏捷的彈性伸縮能力: 不同于虛擬機(jī)分鐘級(jí)的彈性伸縮響應(yīng),容器應(yīng)用可實(shí)現(xiàn)秒級(jí)甚至毫秒級(jí)的彈性伸縮響應(yīng);
- 智能的服務(wù)故障自愈能力: 容器應(yīng)用具有極強(qiáng)的自愈能力,可實(shí)現(xiàn)應(yīng)用故障的自動(dòng)摘除與重構(gòu);
- 大規(guī)模的復(fù)制分發(fā)能力: 容器應(yīng)用標(biāo)準(zhǔn)化的交付制品,可實(shí)現(xiàn)跨平臺(tái)、跨區(qū)域,云邊一體規(guī)模化復(fù)制分發(fā)部署能力。
一、Kubernetes整體架構(gòu)
Kubernetes是典型的 主從分布式架構(gòu), 由 集中式管理節(jié)點(diǎn)(Master Node),分布式的工作節(jié)點(diǎn)(Worker Node) 以及 輔助工具 組成。
1、集中式管理節(jié)點(diǎn)
集中式管理節(jié)點(diǎn),對(duì)集群進(jìn)行調(diào)度管理,有 四大核心組件:
- API Server: 承擔(dān)集群的網(wǎng)關(guān),實(shí)現(xiàn)統(tǒng)一認(rèn)證鑒權(quán)對(duì)外服務(wù),同時(shí)也是管理Node/Pod資源代理通道;
- Scheduler: 資源調(diào)度器,除了Kubernetes默認(rèn)的調(diào)度器,也支持自定義調(diào)度器;
- ETCD: 集群狀態(tài)統(tǒng)一存儲(chǔ),與Zookeeper類似的key-value存儲(chǔ);
- Controller Manger: 控制管理器實(shí)現(xiàn)自愈、擴(kuò)容、應(yīng)用生命周期管理、服務(wù)發(fā)現(xiàn)、路由、服務(wù)綁定等能力;Kubernetes默認(rèn)提供Replication Controller、Node Controller、Namespace Controller、Service Controller、Endpoints Controller、Persistent Controller、DaemonSet Controller等控制器。
2、分布式的工作節(jié)點(diǎn)
分布式的工作節(jié)點(diǎn),工作節(jié)點(diǎn)運(yùn)行業(yè)務(wù)應(yīng)用容器;默認(rèn)會(huì)運(yùn)行 三大核心組件 :
- Kubelet: 與管理節(jié)點(diǎn)通信并觸發(fā)指令執(zhí)行,管理驅(qū)動(dòng)網(wǎng)絡(luò),存儲(chǔ)及容器運(yùn)行時(shí);
- Kube Proxy: 通過(guò)DNS實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),借助iptables規(guī)則引導(dǎo)訪問(wèn)至服務(wù)IP,并將重定向至正確的后端應(yīng)用,實(shí)現(xiàn)高可用負(fù)載均衡能力;
- Container Runtime: 容器運(yùn)行時(shí)。為了擴(kuò)展Kubernetes平臺(tái)適配能力,同時(shí)也標(biāo)準(zhǔn)化整個(gè)生態(tài),通過(guò) CNI與CSI標(biāo)準(zhǔn)規(guī)范網(wǎng)絡(luò)及存儲(chǔ) 的擴(kuò)展;通過(guò) CRI與OCI標(biāo)準(zhǔn)規(guī)范容器鏡像及容器運(yùn)行時(shí) 的擴(kuò)展;目前CRI支持的容器運(yùn)行時(shí)有docker、rkt、cri-o、frankti、kata-containers和clear-containers等。
3、輔助工具
輔助工具,主要是輔助集群管理及網(wǎng)絡(luò)擴(kuò)展:
- kubectl 通過(guò)API Server進(jìn)行交互,實(shí)現(xiàn) 集群管理的命令行工具;
- Dashboard 是Kubernetes的web 用戶管理監(jiān)控界面;
- Core DNS 是可擴(kuò)展的DNS服務(wù)器,實(shí)現(xiàn) 集群服務(wù)發(fā)現(xiàn)能力。
二、Kubernetes核心理念
1、POD容器組,Kubernetes最小調(diào)度單元
Pod是Kubernetes的 最小調(diào)度及資源分配單元, Pod之間相互隔離,通常情況一個(gè)Pod只建議運(yùn)行一個(gè)容器,當(dāng)某些容器之間關(guān)系非常緊密(Tightly coupled),可以運(yùn)行在同一Pod運(yùn)行多個(gè)容器方便一起調(diào)度管理。一個(gè)Pod就是一個(gè)應(yīng)用運(yùn)行實(shí)例,通過(guò)同時(shí)運(yùn)行多個(gè)Pod來(lái)實(shí)現(xiàn)應(yīng)用 橫向擴(kuò)展 能力。Pod本身沒(méi)有自恢復(fù)能力,當(dāng)調(diào)度或運(yùn)行失敗時(shí),需要管理節(jié)點(diǎn)的Controller根絕配置觸發(fā)實(shí)現(xiàn)Pod重啟、重建或遷移等操作。
從Pod啟動(dòng)過(guò)程來(lái)看, Pod容器主要是 Pause Container,Init Container 以及 App Container 三種類型容器組成:
- Pause Container: 又叫Infra Container,Pod通過(guò)Pause Container實(shí)現(xiàn)Pod多個(gè)容器網(wǎng)絡(luò)共享, Pause Container最先啟動(dòng)并綁定Pod唯一IP地址與各種網(wǎng)絡(luò)資源,其他容器通過(guò)加入Pause Container的Network namespace來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)共享。Pause是C語(yǔ)言實(shí)現(xiàn),鏡像非常小只有700KB左右,并且永遠(yuǎn)處于Pause(暫停)狀態(tài);官方鏡像是gcr.io/google_containers/pause-amd64:3.0,同時(shí)也支持自定義。
- Init Container: Pod中可以自定義一個(gè)或者多個(gè) Init Container , 按照順序依次啟動(dòng) ,在應(yīng)用Container之前啟動(dòng)并執(zhí)行一些輔助任務(wù),比如執(zhí)行腳本、拷貝文件到共享目錄、日志收集、應(yīng)用監(jiān)控等。將輔助功能與主業(yè)務(wù)容器解耦,實(shí)現(xiàn)獨(dú)立發(fā)布和能力重用。除了不支持Readiness Probe,其他與特性與普通容器保持一致。
- App Container: Pod真正承接業(yè)務(wù)的Container,一般情況會(huì)獨(dú)立運(yùn)行,如果是有微服務(wù)治理等需求會(huì)搭配Sidecar Container一起運(yùn)行。在Init Container啟動(dòng)完成之后, App Container會(huì)并行啟動(dòng), 但是需要等待所有 App Container 處于就緒狀態(tài),整個(gè)Pod才算啟動(dòng)成功。
從POD的資源隔離來(lái)看, Pod容器主要由Linux提供的Namespace和Cgroup能力實(shí)現(xiàn)的,Namespace實(shí)現(xiàn)進(jìn)程間隔離,Cgroup實(shí)現(xiàn)進(jìn)程資源控制;其中Namespace由ipc 、uts 、net 、mnt 、pid 各種資源空間聯(lián)合組成。
CRI 是Kubernetes v1.5引入的,將Kubelet與容器運(yùn)行時(shí)解耦;CRI中定義了 容器 和 鏡像 的服務(wù)的接口,因?yàn)槿萜鬟\(yùn)行時(shí)與鏡像的生命周期是彼此隔離的,所以定義了 RuntimeService 和 ImageService 兩個(gè)服務(wù),其中RuntimeService主要包含Sandbox和Container兩種容器的管理gRPC接口,Sandbox就是上面Pod啟動(dòng)過(guò)程中提到的 Pause容器 。目前支持CRI的后端有cri-o,cri-containerd,rkt,frakti,docker等,cri-o是由redhat發(fā)起并開(kāi)源且由社區(qū)驅(qū)動(dòng)的container-runtime, 輕量化專為kubernetes而生, 主要目的就是替代docker作為kubernetes集群的容器運(yùn)行時(shí)。
2、Volume存儲(chǔ)卷,Kubernetes復(fù)雜的存儲(chǔ)架構(gòu)
存儲(chǔ)非常重要關(guān)鍵,同時(shí)也是生態(tài)與技術(shù)都比較復(fù)雜的領(lǐng)域,就linux、window兩個(gè)生態(tài)支持的文件系統(tǒng)就多達(dá)20+。 對(duì)于Kubernete存儲(chǔ)架構(gòu)設(shè)計(jì)一直在持續(xù)演進(jìn)完善,為了盡可能多地兼容各種存儲(chǔ)平臺(tái),Kubernetes以in-tree plugin的形式默認(rèn)對(duì)接很多不同類型的存儲(chǔ)系統(tǒng); 同時(shí)也支持基于FlexVolume和CSI插件以out-of-tree plugin來(lái)實(shí)現(xiàn)自定義存儲(chǔ)服務(wù)。
對(duì)Kubernetes存儲(chǔ),主要有 應(yīng)用的基本配置文件讀取、密碼密鑰管理;應(yīng)用的存儲(chǔ)狀態(tài)、數(shù)據(jù)存取,不同應(yīng)用間數(shù)據(jù)共享 等三大使用場(chǎng)景。目前Kubernetes支持的Volume Plugins如下表:
Empty Dir: 生命周期與Pod保持一致,當(dāng)Pod刪除后emptyDir中的數(shù)據(jù)也會(huì)被自動(dòng)清除。當(dāng)前 emptyDir支持的類型有內(nèi)存、大頁(yè)內(nèi)存、Node節(jié)點(diǎn)上Pod所在的文件系統(tǒng)。
- ConfigMap: 主要是承擔(dān)配置中心,用于存儲(chǔ)應(yīng)用的配置數(shù)據(jù),比如Springboot應(yīng)用properties配置文件數(shù)據(jù),但是空間大小限制在1MB內(nèi)。
- Secret: 功能與ConfigMap類似,用于存儲(chǔ)應(yīng)用的敏感數(shù)據(jù),比如數(shù)據(jù)密碼、token、證書等,可以與ConfigMap聯(lián)合使用,同樣空間大小限制在1MB內(nèi)。
- HostPath: 將Node節(jié)點(diǎn)本地文件系統(tǒng)路徑映射到pod容器中使用。與emptyDir不同之處就是Pod刪除后,HostPath中的數(shù)據(jù)Kubernetes根據(jù)用戶的配置,可以不被清除。
- In-tree網(wǎng)絡(luò)存儲(chǔ): 網(wǎng)絡(luò)存儲(chǔ)跟隨Pod的生命周期,通過(guò)存儲(chǔ)插件對(duì)接不同類型存儲(chǔ);其中FlexVolume雖然允許自定義開(kāi)發(fā)驅(qū)動(dòng)來(lái)掛載卷到集群Node節(jié)點(diǎn)上供Pod使用,但生命周期與pod同步。
- PersistentVolumeClaim網(wǎng)絡(luò)存儲(chǔ): 具有獨(dú)立的生命周期,可以通過(guò)存儲(chǔ)的out-tree插件對(duì)接不同類型存儲(chǔ)。當(dāng)前支持的存儲(chǔ)插件類型有FlexVolume與CSI。
引入 PV、PVC、StorageClass 之后,資源管控更加靈活,團(tuán)隊(duì)職責(zé)更加明確,研發(fā)人員只需考慮存儲(chǔ)需求(IO、容量、訪問(wèn)模式等),不需要關(guān)注底層存儲(chǔ)細(xì)節(jié);底層復(fù)雜的細(xì)節(jié)都由專業(yè)的集群管理與存儲(chǔ)管理員來(lái)完成。
CSI 是Kubernetes 1.9版本開(kāi)始引入,建立一套標(biāo)準(zhǔn)的存儲(chǔ)管理接口,通過(guò)該接口為容器提供存儲(chǔ)服務(wù)。從而實(shí)現(xiàn)Kubernetes平臺(tái)與存儲(chǔ)服務(wù)驅(qū)動(dòng)完全解耦。CSI主要包含 CSI Controller Server 與 CSI Node Server 兩個(gè)部分, Controller Server 主要實(shí)現(xiàn)創(chuàng)建、刪除、掛載、卸載等控制功能; Node Server 主要實(shí)現(xiàn)的是Node節(jié)點(diǎn)上的 mount、unmount的操作。
CSI Controller Server和External CSI SideCar是通過(guò) Unix Socket 來(lái)進(jìn)行通信的,CSI Node Server和Kubelet也是通過(guò) Unix Socket 來(lái)通信。CSI實(shí)現(xiàn)類也日趨完善,比如ExpandCSIVolumes可以實(shí)現(xiàn)文件系統(tǒng)擴(kuò)容;VolumeSnapshotDataSource可以實(shí)現(xiàn)數(shù)據(jù)卷的快照;VolumePVCDataSource實(shí)現(xiàn)自定義定PVC數(shù)據(jù)源;CSIInlineVolume在Volume中定義一些CSI的驅(qū)動(dòng)。阿里云也開(kāi)源了 阿里云盤、NAS、CPFS、OSS、LVM 等CSI存儲(chǔ)插件。
3、Ingress與Service,百花齊放的Kubernetes網(wǎng)絡(luò)
Kubernetes 容器網(wǎng)絡(luò)非常復(fù)雜,涉及的概念也比較多,比如Pod網(wǎng)絡(luò),Service網(wǎng)絡(luò),Cluster IP,NodePort,LoadBalancer和Ingress等,為此將Kubernetes 的網(wǎng)絡(luò)參考TCP/IP協(xié)議棧抽象為四層:
第0層: Node節(jié)點(diǎn)網(wǎng)絡(luò)比較簡(jiǎn)單,就是保證Kubernetes 節(jié)點(diǎn)(物理或虛擬機(jī))之間能夠正常IP尋址和互通的網(wǎng)絡(luò),一般由底層(公有云或數(shù)據(jù)中心)網(wǎng)絡(luò)基礎(chǔ)設(shè)施支持。
第1層: Pod是Kubernetes的最小調(diào)度單元,Pod網(wǎng)絡(luò)就是確保Kubernetes集群中所有Pod(包括同一節(jié)點(diǎn)及不同節(jié)點(diǎn)上的Pod),邏輯上在同一個(gè)平面網(wǎng)絡(luò)內(nèi),能夠相互IP尋址和通信的網(wǎng)絡(luò)。是容器網(wǎng)絡(luò)最復(fù)雜部分,通過(guò)各種容器網(wǎng)絡(luò)插件滿足不同網(wǎng)絡(luò)需求,通過(guò)CNI標(biāo)準(zhǔn)化及開(kāi)放網(wǎng)絡(luò)自定義能力。
第3層: 雖然單個(gè)Pod都有IP,但是與Pod生命周期一致,為了解決一組相同Pod統(tǒng)一穩(wěn)定的訪問(wèn)地址,并且將請(qǐng)求均衡的分發(fā)到后端Pod應(yīng)用服務(wù)中。Kubernetes引入了Service網(wǎng)絡(luò),以此實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)(Service Discovery)和負(fù)載均衡(Load Balancing)能力,底層是通過(guò)Kube-Proxy+iptables轉(zhuǎn)發(fā)實(shí)現(xiàn),對(duì)應(yīng)用無(wú)侵入且不穿透代理,沒(méi)有額外性能損耗。
第4層: Kubernetes Service網(wǎng)絡(luò)是集群內(nèi)部網(wǎng)絡(luò),集群外部是無(wú)法訪問(wèn),需要將內(nèi)部服務(wù)暴露外部才能訪問(wèn)。Kubernetes通過(guò)NodePort,LoadBalancer和Ingress多個(gè)方式構(gòu)建外部網(wǎng)絡(luò)接入能力。
CNI 最早是由CoreOS發(fā)起的容器網(wǎng)絡(luò)規(guī)范,是Kubernetes網(wǎng)絡(luò)插件的基礎(chǔ)。Container Runtime在創(chuàng)建容器時(shí),先創(chuàng)建好network namespace,再調(diào)用CNI插件為network namespace配置網(wǎng)絡(luò),最后啟動(dòng)容器內(nèi)進(jìn)程。CNI插件包括CNI Plugin與IPAM Plugin兩部分:
- CNI Plugin: 負(fù)責(zé)配置管理容器網(wǎng)絡(luò),包括兩個(gè)基本的接口:
- 網(wǎng)絡(luò)配置: AddNetwork(net NetworkConfig, rt RuntimeConf) (types.Result, error)
- 清理網(wǎng)絡(luò): DelNetwork(net NetworkConfig, rt RuntimeConf) error
- IPAM Plugin: 負(fù)責(zé)容器IP地址分配,實(shí)現(xiàn)包括host-local和dhcp。
容器網(wǎng)絡(luò)技術(shù)也在持續(xù)演進(jìn)發(fā)展,社區(qū)開(kāi)源的網(wǎng)絡(luò)組件眾多,比如Flannel、Calico、Cilium、OVN等,每個(gè)組件都有各自的優(yōu)點(diǎn)及適應(yīng)的場(chǎng)景,難以形成大一統(tǒng)的組件及解決方案。
4、Workload工作負(fù)載,Kubernetes應(yīng)用中心理念
Kubernetes通過(guò) 工作負(fù)載Workload 實(shí)現(xiàn)應(yīng)用管理部署與發(fā)布,踐行Kubernetes以應(yīng)用為中心的理念。Kubernetes支持多種類型的工作負(fù)載,包含Deployment、StatefulSet、ReplicaSet、Job、CronJob、DaemonSet,以滿足不同場(chǎng)景的需求。
- Deployment與ReplicaSet: 替換原來(lái)的 ReplicationController 對(duì)象,管理部署 無(wú)狀態(tài)應(yīng)用 ,Deployment管理不同版本的ReplicaSet,ReplicaSet管理相同版本的Pod,通過(guò)Deployment調(diào)整 ReplicaSet的終態(tài)副本數(shù),控制器會(huì)維持實(shí)際運(yùn)行的Pod數(shù)量與期望的數(shù)量一致,Pod 出故障時(shí)會(huì)自動(dòng)重啟或恢復(fù)。
- StatefulSet: 管理部署 有狀態(tài)應(yīng)用, 創(chuàng)建的Pod擁有根據(jù)規(guī)范創(chuàng)建的持久型標(biāo)識(shí)符。Pod遷移或銷毀重啟后,標(biāo)識(shí)符仍會(huì)保留。如每個(gè)Pod有序號(hào),可以按序號(hào)創(chuàng)建更新或刪除;Pod有唯一網(wǎng)絡(luò)標(biāo)志(hostname)或獨(dú)享的存儲(chǔ)PV,支持灰度發(fā)布等。
- DaemonSet: 管理部署每個(gè)節(jié)點(diǎn)運(yùn)行的 守護(hù)任務(wù), 如監(jiān)控、日志收集等。新加入的節(jié)點(diǎn)也運(yùn)行,移出節(jié)點(diǎn)是需要?jiǎng)h除。也可以通過(guò)標(biāo)簽的指定運(yùn)行節(jié)點(diǎn)。
- Job與Cronjob: Job是一次性 任務(wù), 可創(chuàng)建一個(gè)或多個(gè)Pod,監(jiān)控Pod是否成功運(yùn)行或終止;根據(jù)Pod狀態(tài)設(shè)置重復(fù)次數(shù)、并發(fā)度、重啟策略。Cronjob是 定時(shí)調(diào)度 的Job,可以指定運(yùn)行時(shí)間、等待時(shí)間、是否并行運(yùn)行、運(yùn)行次數(shù)限制。
在Kubernetes生態(tài)中,還有一些提供額外操作的第三方工作負(fù)載,同時(shí)也可以通過(guò)使用CRD自定義工作負(fù)載,還有就是Device Plugin驅(qū)動(dòng)的硬件工作負(fù)載。
5、Controller控制器,Kubernetes集控管理中心
Controller Manager 作為Kubernetes集控管理中心,負(fù)責(zé)集群的Node、Pod副本、服務(wù)端點(diǎn)(Endpoint)、命名空間(Namespace)、服務(wù)賬號(hào)(ServiceAccount)、資源定額(ResourceQuota)的資源管理,并通過(guò)API Server接口實(shí)時(shí)監(jiān)控集群的每個(gè)資源對(duì)象的狀態(tài),一旦發(fā)生故障導(dǎo)致系統(tǒng)狀態(tài)發(fā)生變化,就會(huì)立即嘗試修復(fù)到“期望狀態(tài)”。
- Replication Controller: 保證集群中一個(gè)RC所關(guān)聯(lián)的Pod副本數(shù)始終保持預(yù)設(shè)值。
- ResourceQuota Controller: 確保Kubernetes中的資源對(duì)象在任何時(shí)候都不會(huì)超量占用系統(tǒng)物理資源。有容器,Pod以及Namespace三個(gè)級(jí)別。
- Namespace Controller: 通過(guò)API Server定時(shí)讀取Namespace信息。如果Namespace被API標(biāo)記為優(yōu)雅刪除(即設(shè)置刪除期限,DeletionTimestamp),則將該Namespace狀態(tài)設(shè)置為“Terminating”,并保存到etcd中。同時(shí)刪除該Namespace下的ServiceAccount、RC、Pod等資源對(duì)象。
- Endpoint Controller: Endpoints是Service對(duì)應(yīng)所有Pod副本的訪問(wèn)地址,Endpoint Controller主要負(fù)責(zé)監(jiān)聽(tīng)Service和對(duì)應(yīng)的Pod副本的變化,從而生成和維護(hù)Endpoints對(duì)象控制器。
- Deployment Controller: Deployment通過(guò)控制ReplicaSet,ReplicaSet再控制Pod,最終由 Deployment Controller 驅(qū)動(dòng)達(dá)到期望狀態(tài),Deployment Controller會(huì)監(jiān)聽(tīng) DeploymentInformer、ReplicaSetInformer、PodInformer 三種資源。
另外,在Kubernetes v1.6引入了 云控制管理器Cloud Controller Manager(CCM), 提供與阿里公有云基礎(chǔ)產(chǎn)品對(duì)接的支持。
三、總結(jié)
總結(jié)一下,Kubernetes不僅是一個(gè)強(qiáng)大的容器編排系統(tǒng)本身,而且促進(jìn)了一個(gè)龐大的工具和服務(wù)的生態(tài)系統(tǒng), 云原生時(shí)代的操作系統(tǒng),形成云計(jì)算新界面。
從設(shè)計(jì)理念方面, Kubernetes是以 應(yīng)用為中心 的構(gòu)理念, 向下 屏蔽基礎(chǔ)設(shè)施差異,實(shí)現(xiàn)底層基礎(chǔ)資源統(tǒng)一調(diào)度及編排; 向上 通過(guò)容器鏡像標(biāo)準(zhǔn)化應(yīng)用,實(shí)現(xiàn)應(yīng)用負(fù)載自動(dòng)化部署; 中間 通過(guò)Kubernetes通用的編排能力,開(kāi)放API以及自定義CRD擴(kuò)展能力;
從技術(shù)架構(gòu)方面, Kubernetes是典型的分布式主從架構(gòu),由Master控制節(jié)點(diǎn)與可以水平擴(kuò)展的Worker工作節(jié)點(diǎn)組成,Master實(shí)現(xiàn)集中式控制管理,Worker實(shí)現(xiàn)分布式運(yùn)行;與Openstack的架構(gòu)還有基于SpringCloud研發(fā)的分微服業(yè)務(wù)應(yīng)用沒(méi)有太大區(qū)別。
從設(shè)計(jì)模式方面, Kubernetes通過(guò)定義大量的模型(原語(yǔ)、資源對(duì)象、配置、常用的 CRD),通過(guò)配置管理模型實(shí)現(xiàn)集群資源的控制;雖然模型多切復(fù)雜,可以分層(核心層,隔離與服務(wù)訪問(wèn)層,調(diào)度層,資源層)逐步理解。
從平臺(tái)擴(kuò)展方面, Kubernetes是一個(gè)開(kāi)放可擴(kuò)展平臺(tái),不僅有開(kāi)發(fā)的API,開(kāi)放標(biāo)準(zhǔn)(CNI,CSI,CRI等)以及CRD,不僅是一個(gè)單純運(yùn)行時(shí)平臺(tái),同時(shí)面向運(yùn)維的開(kāi)發(fā)平臺(tái)。