Kubernetes入門(mén)到進(jìn)階實(shí)戰(zhàn),系統(tǒng)性掌握K8s生產(chǎn)實(shí)踐
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
kubernetes,簡(jiǎn)稱K8s,是用8代替名字中間的8個(gè)字符“ubernete”而成的縮寫(xiě)。是一個(gè)開(kāi)源的,用于管理云平臺(tái)中多個(gè)主機(jī)上的容器化的應(yīng)用,Kubernetes的目標(biāo)是讓部署容器化的應(yīng)用簡(jiǎn)單并且高效(powerful),Kubernetes提供了應(yīng)用部署,規(guī)劃,更新,維護(hù)的一種機(jī)制。 [1] 傳統(tǒng)的應(yīng)用部署方式是通過(guò)插件或腳本來(lái)安裝應(yīng)用。這樣做的缺點(diǎn)是應(yīng)用的運(yùn)行、配置、管理、所有生存周期將與當(dāng)前操作系統(tǒng)綁定,這樣做并不利于應(yīng)用的升級(jí)更新/回滾等操作,當(dāng)然也可以通過(guò)創(chuàng)建虛擬機(jī)的方式來(lái)實(shí)現(xiàn)某些功能,但是虛擬機(jī)非常重,并不利于可移植性。 新的方式是通過(guò)部署容器方式實(shí)現(xiàn),每個(gè)容器之間互相隔離,每個(gè)容器有自己的文件系統(tǒng) ,容器之間進(jìn)程不會(huì)相互影響,能區(qū)分計(jì)算資源。相對(duì)于虛擬機(jī),容器能快速部署,由于容器與底層設(shè)施、機(jī)器文件系統(tǒng)解耦的,所以它能在不同云、不同版本操作系統(tǒng)間進(jìn)行遷移。 容器占用資源少、部署快,每個(gè)應(yīng)用可以被打包成一個(gè)容器鏡像,每個(gè)應(yīng)用與容器間成一對(duì)一關(guān)系也使容器有更大優(yōu)勢(shì),使用容器可以在build或release 的階段,為應(yīng)用創(chuàng)建容器鏡像,因?yàn)槊總€(gè)應(yīng)用不需要與其余的應(yīng)用堆棧組合,也不依賴于生產(chǎn)環(huán)境基礎(chǔ)結(jié)構(gòu),這使得從研發(fā)到測(cè)試、生產(chǎn)能提供一致環(huán)境。類(lèi)似地,容器比虛擬機(jī)輕量、更“透明”,這更便于監(jiān)控和管理。 外文名:kubernetes 別 名:K8s 目錄 1內(nèi)容簡(jiǎn)介 2產(chǎn)品特點(diǎn) 3產(chǎn)品組件 內(nèi)容簡(jiǎn)介 Kubernetes是Google開(kāi)源的一個(gè)容器編排引擎,它支持自動(dòng)化部署、大規(guī)??缮炜s、應(yīng)用容器化管理。在生產(chǎn)環(huán)境中部署一個(gè)應(yīng)用程序時(shí),通常要部署該應(yīng)用的多個(gè)實(shí)例以便對(duì)應(yīng)用請(qǐng)求進(jìn)行負(fù)載均衡。 在Kubernetes中,我們可以創(chuàng)建多個(gè)容器,每個(gè)容器里面運(yùn)行一個(gè)應(yīng)用實(shí)例,然后通過(guò)內(nèi)置的負(fù)載均衡策略,實(shí)現(xiàn)對(duì)這一組應(yīng)用實(shí)例的管理、發(fā)現(xiàn)、訪問(wèn),而這些細(xì)節(jié)都不需要運(yùn)維人員去進(jìn)行復(fù)雜的手工配置和處理。 產(chǎn)品特點(diǎn) 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud) 可擴(kuò)展: 模塊化,插件化,可掛載,可組合 自動(dòng)化: 自動(dòng)部署,自動(dòng)重啟,自動(dòng)復(fù)制,自動(dòng)伸縮/擴(kuò)展 產(chǎn)品組件 1、Master 組件 1.1kube-apiserver 1.2ETCD 1.3kube-controller-manager 1.4cloud-controller-manager 1.5kube-scheduler 1.6插件 addons 1.6.1DNS 1.6.2用戶界面 1.6.3容器資源監(jiān)測(cè) 1.6.4Cluster-level Logging 2、節(jié)點(diǎn)(Node)組件 2.1kubelet 2.2kube-proxy 2.3docker 2.4RKT 2.5supervisord 2.6fluentd 本文介紹了Kubernetes集群所需的各種二進(jìn)制組件。 Master 組件 Master組件提供集群的管理控制中心。 Master組件可以在集群中任何節(jié)點(diǎn)上運(yùn)行。但是為了簡(jiǎn)單起見(jiàn),通常在一臺(tái)VM/機(jī)器上啟動(dòng)所有Master組件,并且不會(huì)在此VM/機(jī)器上運(yùn)行用戶容器。請(qǐng)參考構(gòu)建高可用群集以來(lái)構(gòu)建multi-master-VM。 kube-apiserver kube-apiserver用于暴露Kubernetes API。任何的資源請(qǐng)求/調(diào)用操作都是通過(guò)kube-apiserver提供的接口進(jìn)行。請(qǐng)參閱構(gòu)建高可用集群。 ETCD etcd是Kubernetes提供默認(rèn)的存儲(chǔ)系統(tǒng),保存所有集群數(shù)據(jù),使用時(shí)需要為etcd數(shù)據(jù)提供備份計(jì)劃。 kube-controller-manager kube-controller-manager運(yùn)行管理控制器,它們是集群中處理常規(guī)任務(wù)的后臺(tái)線程。邏輯上,每個(gè)控制器是一個(gè)單獨(dú)的進(jìn)程,但為了降低復(fù)雜性,它們都被編譯成單個(gè)二進(jìn)制文件,并在單個(gè)進(jìn)程中運(yùn)行。 這些控制器包括: 節(jié)點(diǎn)(Node)控制器。 副本(Replication)控制器:負(fù)責(zé)維護(hù)系統(tǒng)中每個(gè)副本中的pod。 端點(diǎn)(Endpoints)控制器:填充Endpoints對(duì)象(即連接Services&Pods)。 Service Account和Token控制器:為新的Namespace創(chuàng)建默認(rèn)帳戶訪問(wèn)API Token。 cloud-controller-manager 云控制器管理器負(fù)責(zé)與底層云提供商的平臺(tái)交互。云控制器管理器是Kubernetes版本1.6中引入的,還是Alpha的功能。 云控制器管理器僅運(yùn)行云提供商特定的(controller loops)控制器循環(huán)??梢酝ㄟ^(guò)將--cloud-providerflag設(shè)置為external啟動(dòng)kube-controller-manager ,來(lái)禁用控制器循環(huán)。 cloud-controller-manager 具體功能: ●節(jié)點(diǎn)(Node)控制器 ●路由(Route)控制器 ●Service控制器 ●卷(Volume)控制器 kube-scheduler kube-scheduler監(jiān)視新創(chuàng)建沒(méi)有分配到Node的Pod,為Pod選擇一個(gè)Node。 插件 addons 插件(addon)是實(shí)現(xiàn)集群pod和Services功能的。Pod由Deployments,ReplicationController等進(jìn)行管理。Namespace 插件對(duì)象是在kube-system Namespace中創(chuàng)建。 DNS 雖然不嚴(yán)格要求使用插件,但Kubernetes集群都應(yīng)該具有集群 DNS。 群集 DNS是一個(gè)DNS服務(wù)器,能夠?yàn)?Kubernetes services提供 DNS記錄。 由Kubernetes啟動(dòng)的容器自動(dòng)將這個(gè)DNS服務(wù)器包含在他們的DNS searches中。 用戶界面 kube-ui提供集群狀態(tài)基礎(chǔ)信息查看。 容器資源監(jiān)測(cè) 容器資源監(jiān)控提供一個(gè)UI瀏覽監(jiān)控?cái)?shù)據(jù)。 Cluster-level Logging Cluster-level logging,負(fù)責(zé)保存容器日志,搜索/查看日志。 節(jié)點(diǎn) Node 組件 節(jié)點(diǎn)組件運(yùn)行在Node,提供Kubernetes運(yùn)行時(shí)環(huán)境,以及維護(hù)Pod。 kubelet kubelet是主要的節(jié)點(diǎn)代理,它會(huì)監(jiān)視已分配給節(jié)點(diǎn)的pod,具體功能: ●安裝Pod所需的volume。 ●下載Pod的Secrets。 ●Pod中運(yùn)行的 docker(或experimentally,rkt)容器。 ●定期執(zhí)行容器健康檢查。 ●Reports the status of the pod back to the rest of the system, by creating amirror podif necessary. ●Reports the status of the node back to the rest of the system. kube-proxy kube-proxy通過(guò)在主機(jī)上維護(hù)網(wǎng)絡(luò)規(guī)則并執(zhí)行連接轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)Kubernetes服務(wù)抽象。 docker docker用于運(yùn)行容器。 RKT rkt運(yùn)行容器,作為docker工具的替代方案。 supervisord supervisord是一個(gè)輕量級(jí)的監(jiān)控系統(tǒng),用于保障kubelet和docker運(yùn)行。 fluentd fluentd是一個(gè)守護(hù)進(jìn)程,可提供cluster-level logging.。[2] 參考資料 1K8s簡(jiǎn)介.kubernetes中文社區(qū) [引用日期2018-09-9] 2Kubernetes中文社區(qū) | 中文文檔.Kubernetes中文社區(qū) [引用日期2018-09-5] 該文章在 2024/4/3 14:47:05 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |