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