




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Docker容器技術(shù)與應(yīng)用湖北輕工職業(yè)技術(shù)學(xué)院Kubernetes概述及基本操作項(xiàng)目6項(xiàng)目背景隨著容器技術(shù)的迅速發(fā)展,企業(yè)對(duì)容器化應(yīng)用的管理和部署需求日益增長(zhǎng)。傳統(tǒng)方式難以滿足應(yīng)用大規(guī)模、高效運(yùn)行的要求。Kubernetes應(yīng)運(yùn)而生,作為Google開(kāi)源的容器編排引擎,能有效解決這些問(wèn)題。Kubernetes概述及基本操作項(xiàng)目6
Kubernetes是Google開(kāi)源的容器編排引擎,它提供了自動(dòng)化部署、大規(guī)模可伸縮、應(yīng)用容器化管理等功能。本項(xiàng)目通過(guò)兩個(gè)任務(wù)介紹了Kubernetes的發(fā)展及其基本操作,并以RHEL8.1操作系統(tǒng)為基礎(chǔ),介紹了使用kubeadm安裝Kubernetes集群的方法和kubectl命令的使用方法。項(xiàng)目六:Kubernetes概述及基本操作目錄任務(wù)6.1、Kubernetes概述任務(wù)6.2、Kubernetes的基本操作Swarm編排工具的使用回顧1、了解容器集群的管理方法。2、Swarm編排工具的使用方法。知識(shí)目標(biāo)了解Kubernetes的概念。了解Kubernetes的架構(gòu)。能力目標(biāo)掌握Kubernetes集群的安裝方法。掌握Kubernetes下Dashboard的安裝方法。素質(zhì)目標(biāo)培養(yǎng)團(tuán)隊(duì)協(xié)作精神.樹(shù)立誠(chéng)信意識(shí)。Swarm作為Docker開(kāi)發(fā)的原生的集群管理引擎,雖然有眾多優(yōu)點(diǎn),但是仍存在依賴(lài)平臺(tái)、不提供存儲(chǔ)選項(xiàng)、監(jiān)控不良等問(wèn)題。工程師小王通過(guò)查閱資料發(fā)現(xiàn),Kubernetes作為Google開(kāi)源的一個(gè)容器編排引擎,較好地解決了這些問(wèn)題。小王在對(duì)Kubernetes技術(shù)進(jìn)行調(diào)研后,編寫(xiě)了Kubernetes的安裝手冊(cè),以供公司相關(guān)技術(shù)人員學(xué)習(xí),并在公司內(nèi)部推廣該技術(shù)。任務(wù)6.1Kubernetes概述任務(wù)要求6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1容器編排工具容器化部署方式給帶來(lái)很多的便利,但是也會(huì)出現(xiàn)一些問(wèn)題,比如說(shuō):一個(gè)容器故障停機(jī)了,怎么樣讓另外一個(gè)容器立刻啟動(dòng)去替補(bǔ)停機(jī)的容器;當(dāng)并發(fā)訪問(wèn)量變大的時(shí)候,怎么樣做到橫向擴(kuò)展容器數(shù)量。這些容器管理的問(wèn)題統(tǒng)稱(chēng)為容器編排問(wèn)題,為了解決這些容器編排問(wèn)題,就產(chǎn)生了一些容器編排的軟件:Swarm:Docker自己的容器編排工具。Kubernetes:Google開(kāi)源的的容器編排工具。隨著應(yīng)用規(guī)模的增長(zhǎng),主機(jī)端承受的負(fù)載壓力越來(lái)越大,已經(jīng)超出了單臺(tái)主機(jī)所能承受的負(fù)載能力。編排系統(tǒng)可以幫助用戶將一組主機(jī)(節(jié)點(diǎn))視為一個(gè)統(tǒng)一的、可編程的、可靠的集群,這個(gè)集群可以當(dāng)作一臺(tái)大型計(jì)算機(jī)來(lái)使用。Kubernetes用于管理云平臺(tái)中多個(gè)主機(jī)的容器化應(yīng)用,是一個(gè)全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案。它在Docker技術(shù)的基礎(chǔ)上,為容器化的應(yīng)用提供部署運(yùn)行、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動(dòng)態(tài)伸縮等一系列功能,提高了大規(guī)模容器集群管理的便捷性。Kubernetes的主要目標(biāo)是讓部署容器化的應(yīng)用簡(jiǎn)單且高效,提供了一種應(yīng)用部署、規(guī)劃、更新、維護(hù)機(jī)制。任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1Kubernetes簡(jiǎn)介由于Kubernetes在K和s間有8個(gè)字母,因此常簡(jiǎn)稱(chēng)為K8s.2015年7月,KubernetesV1.0正式發(fā)布。事實(shí)上,隨著用戶對(duì)K8s系統(tǒng)架構(gòu)與設(shè)計(jì)理念的深入了解,逐漸發(fā)現(xiàn)K8s系統(tǒng)正是處處為運(yùn)行云原生應(yīng)用而設(shè)計(jì)的。同時(shí),隨著用戶對(duì)K8s系統(tǒng)使用的加深和推廣,也產(chǎn)生了越來(lái)越多的有關(guān)云原生應(yīng)用的設(shè)計(jì)模式,使得基于K8s系統(tǒng)設(shè)計(jì)和開(kāi)發(fā)生產(chǎn)級(jí)的復(fù)雜云原生應(yīng)用變得像啟動(dòng)一個(gè)單機(jī)版容器服務(wù)那樣簡(jiǎn)單易用。Kubernetes可以調(diào)度計(jì)算集群節(jié)點(diǎn)、動(dòng)態(tài)管理節(jié)點(diǎn)上的作業(yè),并保證它們按用戶期望的狀態(tài)運(yùn)行;通過(guò)使用Labels和Pods,Kubernetes將應(yīng)用按照邏輯單元進(jìn)行分組,方便管理和服務(wù)發(fā)現(xiàn)。任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1Kubernetes簡(jiǎn)介Kubernetes作為一個(gè)完備的分布式系統(tǒng)支撐平臺(tái),具有完備的集群管理能力。Kubernetes集群在多個(gè)Docker節(jié)點(diǎn)之間進(jìn)行協(xié)調(diào),提供了一個(gè)統(tǒng)一的可編程的模型,它具有以下幾個(gè)方面的增強(qiáng)功能。(1)自我修復(fù):一旦某一個(gè)容器崩潰,能夠在1秒中左右迅速啟動(dòng)新的容器。
強(qiáng)大的故障發(fā)現(xiàn)和自我修復(fù)能力。Kubernetes會(huì)監(jiān)視容器的運(yùn)行狀態(tài),在其出現(xiàn)故障時(shí)重新啟動(dòng)容器,并通過(guò)動(dòng)態(tài)服務(wù)歸屬機(jī)制確保一個(gè)節(jié)點(diǎn)失效后,Kubernetes管理系統(tǒng)會(huì)自動(dòng)將失效節(jié)點(diǎn)的任務(wù)重新調(diào)度到健康的節(jié)點(diǎn)上,而這些新啟動(dòng)的容器能被發(fā)現(xiàn)并使用。(2)高集群利用率:在主機(jī)上調(diào)度,提高計(jì)算機(jī)的利用率。
與靜態(tài)的手工配置方式相比,Kubernetes通過(guò)在一組主機(jī)(節(jié)點(diǎn))上調(diào)度不同類(lèi)型的工作負(fù)載,大幅度提高了計(jì)算機(jī)的利用率。集群越大,工作負(fù)載種類(lèi)越多,主機(jī)的利用率就越高。任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1Kubernetes簡(jiǎn)介(3)組織和分組:通過(guò)標(biāo)簽系統(tǒng),以一組容器為單位來(lái)處理,并Kubernetes支持命名空間功能。
在大型集群中,追蹤所有正在運(yùn)行的容器可能非常困難。Kubernetes通過(guò)標(biāo)簽系統(tǒng),讓用戶和其他系統(tǒng)可以以一組容器為單位來(lái)進(jìn)行處理。同時(shí),Kubernetes支持命名空間功能,可使不同的用戶或團(tuán)隊(duì)在集群中看到相互隔離的不同視圖。(4)彈性伸縮:可以根據(jù)需要,自動(dòng)對(duì)集群中正在運(yùn)行的容器數(shù)量進(jìn)行調(diào)整。
彈性伸縮是指適應(yīng)負(fù)載變化,在Kubernetes中,可根據(jù)負(fù)載的高低動(dòng)態(tài)調(diào)整Pod的副本數(shù)量,以彈性可伸縮的方式提供資源。(5)滾動(dòng)升級(jí)。
滾動(dòng)升級(jí)是一種平滑過(guò)渡的升級(jí)方式,Kubernetes通過(guò)逐步替換的策略來(lái)保證整體系統(tǒng)的穩(wěn)定性。任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1Kubernetes簡(jiǎn)介
一個(gè)K8S系統(tǒng),通常稱(chēng)為一個(gè)K8S集群(Cluster)。主要包括兩個(gè)部分:一個(gè)Master節(jié)點(diǎn)(主節(jié)點(diǎn))一群Node節(jié)點(diǎn)(計(jì)算節(jié)點(diǎn))任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.1Master節(jié)點(diǎn)主要還是負(fù)責(zé)管理和控制。Node節(jié)點(diǎn)是工作負(fù)載節(jié)點(diǎn),里面是具體的容器。Kubernetes核心概念1.MasterMaster:集群的控制平面,負(fù)責(zé)集群的決策(集群管理者)。一般會(huì)獨(dú)自占據(jù)一個(gè)服務(wù)器,負(fù)責(zé)管理集群,提供了集群的資源數(shù)據(jù)訪問(wèn)入口。基本上Kubermetes所有的控制命令都將發(fā)給Master,由Master負(fù)責(zé)具體的執(zhí)行過(guò)程。Master組件可以在集群中的任何計(jì)算機(jī)上運(yùn)行,但建議讓Master占據(jù)個(gè)獨(dú)立的服務(wù)器,因?yàn)镸aster是整個(gè)集群的大腦,如果Master所在節(jié)點(diǎn)宕機(jī)或者不可用,所有的控制命令都將失效。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)1.MasterMaster節(jié)點(diǎn)包含以下關(guān)鍵組件。APIServer:Kubernetes中所有資源的增加、刪除、修改、查詢(xún)等操作指令的唯一入口。任何對(duì)資源進(jìn)行操作的指令都要交給APIServer處理,再提交給etcd。ControllerManager:Kubernetes所有資源對(duì)象的自動(dòng)化控制中心。可以理解為每個(gè)資源都對(duì)應(yīng)一個(gè)控制器,而ControllerManager負(fù)責(zé)管理這些控制器。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)1.MasterMaster節(jié)點(diǎn)包含以下關(guān)鍵組件。Scheduler:負(fù)責(zé)資源調(diào)度(Pod調(diào)度),負(fù)責(zé)調(diào)度Pod到合適的Node上。如果把Scheduler看作一個(gè)黑匣子,那么它的輸入是Pod和由多個(gè)Node組成的列表,輸出是Pod和一個(gè)Node的綁定,即將Pod部署到Node上。用戶可以使用Kubernetes提供的調(diào)度算法,也可根據(jù)需求自定義調(diào)度算法。Etcd:一個(gè)高可用的鍵值存儲(chǔ)系統(tǒng),Kubernetes使用它來(lái)存儲(chǔ)各個(gè)資源的狀態(tài),從而實(shí)現(xiàn)了RESTful的API。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Node集群的數(shù)據(jù)平面,負(fù)責(zé)為容器提供運(yùn)行環(huán)境(真正干活)。Node負(fù)責(zé)Pod的創(chuàng)建、啟動(dòng)、監(jiān)控、重啟、銷(xiāo)毀,并實(shí)現(xiàn)軟件模式的負(fù)載均衡。Node組件除了Master,Kubermetes集群中的其他機(jī)器也被稱(chēng)為Node節(jié)點(diǎn)。與Master節(jié)點(diǎn)一樣,Node節(jié)點(diǎn)可以是一臺(tái)物理主機(jī),也可以是一臺(tái)虛擬機(jī)。Node節(jié)點(diǎn)是Kubermets集群中的工作負(fù)載節(jié)點(diǎn),每個(gè)Node節(jié)點(diǎn)都會(huì)被Master節(jié)點(diǎn)分配些工作負(fù)載。當(dāng)某個(gè)Node節(jié)點(diǎn)宕機(jī)時(shí),其上的工作負(fù)載會(huì)被Master節(jié)點(diǎn)自動(dòng)轉(zhuǎn)移到其他節(jié)點(diǎn)上去。每個(gè)Node節(jié)點(diǎn)上都運(yùn)行著以下關(guān)鍵進(jìn)程。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Node每個(gè)Node主要由3個(gè)模塊組成,它們負(fù)責(zé)Pod的創(chuàng)建、啟動(dòng)、監(jiān)控、重啟、銷(xiāo)毀,并實(shí)現(xiàn)軟件模式的負(fù)載均衡。Kubelet:是Master在每個(gè)Node上的代理,是Node上最重要的模塊,它負(fù)責(zé)維護(hù)和管理該Node上的所有容器,但是如果某容器不是通過(guò)Kubernetes創(chuàng)建的,則Node不會(huì)管理此容器。kube-proxy:實(shí)現(xiàn)KubernetesService的通信與負(fù)載均衡機(jī)制的重要組件。Docker:指的是容器運(yùn)行環(huán)境,目前Kubernetes支持Docker環(huán)境。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Node
Node節(jié)點(diǎn)可以在運(yùn)行期間動(dòng)態(tài)增加到Kubermetes集群中,前提是這個(gè)節(jié)點(diǎn)上已經(jīng)正確安裝、配置和啟動(dòng)了上述關(guān)鍵進(jìn)程。在默認(rèn)情況下,Kubelet會(huì)向Master節(jié)點(diǎn)注冊(cè)自己,這也是Kubernetes推薦的Node節(jié)點(diǎn)管理方式。一旦Node節(jié)點(diǎn)被納入集群管理范圍,Kubelet進(jìn)程會(huì)定時(shí)向Master節(jié)點(diǎn)匯報(bào)自身的情況,例如操作系統(tǒng)、Docker版本、機(jī)器的CPU和內(nèi)存情況,以及之前有哪些Pod在運(yùn)行等。這樣Master節(jié)點(diǎn)可以獲知每個(gè)Node節(jié)點(diǎn)的資源使用情況,并實(shí)現(xiàn)高效負(fù)載均衡資源調(diào)度策略。若某一個(gè)Node節(jié)點(diǎn)超過(guò)指定時(shí)間不上報(bào)信息,會(huì)被Master節(jié)點(diǎn)判定為失聰?shù)臓顟B(tài),并被標(biāo)記為不可用,隨后Master節(jié)點(diǎn)會(huì)觸發(fā)節(jié)點(diǎn)轉(zhuǎn)移進(jìn)程。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Node
Node是Kubernetes集群架構(gòu)中運(yùn)行Pod的服務(wù)節(jié)點(diǎn),Node包含的信息如下。(1)Node地址:主機(jī)的IP地址或NodeID。(2)Node的運(yùn)行狀態(tài):包含Pending、Running、Terminated三種狀態(tài)。(3)NodeCondition:描述Running狀態(tài)下Node的運(yùn)行條件,只有Ready一種狀態(tài)。(4)Node系統(tǒng)容量:描述Node可用的系統(tǒng)資源,包括CPU、內(nèi)存、最大可調(diào)度Pod數(shù)量等。(5)其他:內(nèi)核版本、Kubernetes版本等。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)3.pod
Pod是Kubernetes的基本操作單元,也是應(yīng)用運(yùn)行的載體。整個(gè)Kubernetes系統(tǒng)都是圍繞著Pod展開(kāi)的。Pod是若干容器的組合,一個(gè)Pod內(nèi)的容器必須運(yùn)行在同一臺(tái)宿主機(jī)上,這些容器使用相同的命名空間、IP地址和端口,可以通過(guò)localhost互相發(fā)現(xiàn)和通信,可以共享一塊存儲(chǔ)卷空間。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)3.pod
Pod其實(shí)有兩種類(lèi)型:靜態(tài)Pod和普通Pod。靜態(tài)Pod并不存在于Kubernetes的etcd存儲(chǔ)中,而是存放在某個(gè)Node的一個(gè)具體文件中,并且只在此Node上啟動(dòng)。普通Pod一旦被創(chuàng)建,就會(huì)被放入etcd存儲(chǔ)中,隨后會(huì)被KubernetesMaster調(diào)度到某個(gè)具體的Node上進(jìn)行綁定,該P(yáng)od被對(duì)應(yīng)的Node上的kubelet進(jìn)程實(shí)例化為一組相關(guān)的Docker容器并啟動(dòng)。在默認(rèn)情況下,當(dāng)Pod中的某個(gè)容器終止時(shí),Kubernetes會(huì)自動(dòng)檢測(cè)到這個(gè)容器并重啟Pod(重啟Pod中的所有容器)。如果Pod所在的Node宕機(jī),則會(huì)將這個(gè)Node上的所有Pod重新調(diào)度到其他節(jié)點(diǎn)上。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)3.pod
一個(gè)Pod中的應(yīng)用容器共享一組資源。(1)PID命名空間:Pod中的不同應(yīng)用程序可以看到其他應(yīng)用程序的進(jìn)程ID。(2)網(wǎng)絡(luò)命名空間:Pod中的多個(gè)容器能夠訪問(wèn)同一個(gè)IP地址和端口范圍。(3)IPC命名空間:Pod中的多個(gè)容器能夠使用SystemVIPC或POSIX消息隊(duì)列進(jìn)行通信。(4)UTS命名空間:Pod中的多個(gè)容器共享一個(gè)主機(jī)名。(5)共享存儲(chǔ)卷:Pod中的各個(gè)容器可以訪問(wèn)在Pod級(jí)別定義的卷。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)4.ReplicationController
當(dāng)應(yīng)用托管在Kubernetes后,ReplicationController(RC)負(fù)責(zé)保證應(yīng)用持續(xù)運(yùn)行。RC用于管理Pod的副本,保證集群中存在指定數(shù)量的Pod副本。當(dāng)集群中副本的數(shù)量大于指定數(shù)量時(shí),會(huì)終止指定數(shù)量之外的多余容器;反之,會(huì)啟動(dòng)少于指定數(shù)量的容器,以保證數(shù)量不變。在此基礎(chǔ)上,RC還提供了一些更高級(jí)的特性,如彈性伸縮、動(dòng)態(tài)擴(kuò)容和滾動(dòng)升級(jí)等。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)5.Service
為了適應(yīng)快速的業(yè)務(wù)需求,微服務(wù)架構(gòu)已經(jīng)逐漸成為主流,微服務(wù)架構(gòu)的應(yīng)用需要有非常好的服務(wù)編排支持。 Service是真實(shí)應(yīng)用服務(wù)的抽象,定義了Pod的邏輯上的集合和訪問(wèn)Pod集合的策略。Service將代理Pod對(duì)外表現(xiàn)為一個(gè)單一的訪問(wèn)接口,外部不需要了解Pod如何運(yùn)行,這給擴(kuò)展和維護(hù)帶來(lái)了很多好處,提供了一套簡(jiǎn)化的服務(wù)代理和發(fā)現(xiàn)機(jī)制。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.Label
Kubernetes中的任意API對(duì)象都是通過(guò)Label進(jìn)行標(biāo)識(shí)的,Label以key/value的形式附加到各種對(duì)象上,如Pod、Service、RC、Node等,以識(shí)別這些對(duì)象并管理關(guān)聯(lián)關(guān)系等,如管理Service和Pod的關(guān)聯(lián)關(guān)系。一個(gè)資源對(duì)象可以定義任意數(shù)量的Label,同一個(gè)Label也可以被添加到任意數(shù)量的資源對(duì)象上。Label是RC和Service運(yùn)行的基礎(chǔ),二者通過(guò)Label來(lái)關(guān)聯(lián)Node上運(yùn)行的Pod。
可以通過(guò)給指定的資源對(duì)象捆綁一個(gè)或者多個(gè)不同的Label來(lái)實(shí)現(xiàn)多維度的資源分組管理功能,以便于靈活、方便地進(jìn)行資源分配、調(diào)度、配置等。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)6.Label
常用的Label分為如下幾類(lèi)。(1)版本Label:"release":"stable"、"release":"canary"。(2)環(huán)境Label:"environment":"dev"、"environment":"qa"、"environment":"production"。(3)架構(gòu)Label:"tier":"frontend"、"tier":"backend"、"tier":"middleware"。(4)分區(qū)Label:"partition":"customerA"、"partition":"customerB"。(5)質(zhì)量管控Label:"track":"daily"、"track":"weekly"。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)7.Volume
Volume是Pod中能夠被多個(gè)容器訪問(wèn)的共享目錄。Volume被定義在Pod上,Pod內(nèi)的容器可以訪問(wèn)、掛載Volume。Volume與Pod的生命周期相同,與具體的Docker容器生命周期不相關(guān)。某個(gè)Docker容器刪除或終止時(shí),Volume中的數(shù)據(jù)不會(huì)丟失。Volume支持EmptyDir、HostPath、NFS、ISCSI、GlusterFS等類(lèi)型的文件系統(tǒng)。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)Kubernetes概念Master:集群控制節(jié)點(diǎn),每個(gè)集群需要至少一個(gè)master節(jié)點(diǎn)負(fù)責(zé)集群的管控。Node:工作負(fù)載節(jié)點(diǎn),由master分配容器到這些node工作節(jié)點(diǎn)上,然后node節(jié)點(diǎn)上的docker負(fù)責(zé)容器的運(yùn)行。Pod:kubernetes的最小控制單元,容器都是運(yùn)行在pod中的,一個(gè)pod中可以有1個(gè)或者多個(gè)容器;Controller:控制器,通過(guò)它來(lái)實(shí)現(xiàn)對(duì)pod的管理,比如啟動(dòng)pod、停止pod、伸縮pod的數(shù)量等等。Service:pod對(duì)外服務(wù)的統(tǒng)一入口,下面可以維護(hù)者同一類(lèi)的多個(gè)pod。Label:標(biāo)簽,用于對(duì)pod進(jìn)行分類(lèi),同一類(lèi)pod會(huì)擁有相同的標(biāo)簽。NameSpace:命名空間,用來(lái)隔離pod的運(yùn)行環(huán)境(默認(rèn)pod之間是可以相互訪問(wèn)的,有了Namspace后,可以控制pod之間是否能訪問(wèn))。Volume:是Pod中能夠被多個(gè)容器訪問(wèn)的共享目錄。6.1任務(wù)6.1Kubernetes概述
相關(guān)知識(shí)Kubernetes架構(gòu)及操作流程1.Kubernetes架構(gòu)
Kubernetes集群包含節(jié)點(diǎn)代理kubelet和Master組件,一切都基于分布式的存儲(chǔ)系統(tǒng)。Kubernetes架構(gòu)如圖所示。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)1.Kubernetes架構(gòu)
(1)KubernetesMaster服務(wù):KubernetesMaster服務(wù)包括APIServer、Scheduler、ControllerManager等。這些服務(wù)提供了API來(lái)收集和展現(xiàn)集群的當(dāng)前狀態(tài),并在節(jié)點(diǎn)之間分配Pod。用戶始終與Master的API直接交互。其為整個(gè)集群提供了一個(gè)統(tǒng)一視圖。
(2)主節(jié)點(diǎn)存儲(chǔ):Kubernetes所有的持久化狀態(tài)都保存在etcd中。
(3)kubelet:其運(yùn)行在每個(gè)節(jié)點(diǎn)之上,負(fù)責(zé)控制Docker,向Master報(bào)告自己的狀態(tài)及配置節(jié)點(diǎn)級(jí)別的資源,如配置遠(yuǎn)程磁盤(pán)存儲(chǔ)。
(4)KubernetesProxy:其運(yùn)行在每個(gè)節(jié)點(diǎn)之上,為本地容器提供了一個(gè)單一的網(wǎng)絡(luò)接口,以連接一組Pod。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Kubernetes的操作流程
(1)通過(guò)kubectl和KubernetesAPI,提交一個(gè)創(chuàng)建RC的請(qǐng)求,該請(qǐng)求通過(guò)APIServer被寫(xiě)入etcd中。該RC請(qǐng)求包含一個(gè)Pod模板和一個(gè)希望的副本數(shù)。
(2)ControllerManager通過(guò)APIServer監(jiān)聽(tīng)資源變化的接口監(jiān)聽(tīng)該RC請(qǐng)求,如果當(dāng)前集群中沒(méi)有其所對(duì)應(yīng)的Pod實(shí)例,則根據(jù)RC中的Pod模板定義并生成一個(gè)Pod對(duì)象,通過(guò)APIServer寫(xiě)入etcd。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Kubernetes的操作流程(3)Scheduler通過(guò)查看集群的當(dāng)前狀態(tài)(有哪些可用節(jié)點(diǎn),以及各節(jié)點(diǎn)有哪些可用資源)執(zhí)行相應(yīng)的調(diào)度流程,將新的Pod綁定到指定的節(jié)點(diǎn)上,并通過(guò)APIServer將該結(jié)果寫(xiě)入etcd中。(4)該節(jié)點(diǎn)上的kubelet會(huì)監(jiān)測(cè)分配給其所在節(jié)點(diǎn)的Pod組中的變化,并根據(jù)情況來(lái)啟動(dòng)或者終止Pod。其過(guò)程包括在需要時(shí)對(duì)存儲(chǔ)卷進(jìn)行配置,將Docker鏡像下載到指定節(jié)點(diǎn)中,以及通過(guò)調(diào)用DockerAPI來(lái)啟動(dòng)或終止各個(gè)容器。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Kubernetes的操作流程6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)2.Kubernetes的操作流程Kubernetes的操作流程(以部署一個(gè)nginx服務(wù)來(lái)說(shuō)明kubernetes系統(tǒng)各個(gè)組件調(diào)用關(guān)系)1.首先要明確,一旦kubemnetes環(huán)境啟動(dòng)之后,master和node都會(huì)將自身的信息存儲(chǔ)到etcd數(shù)據(jù)庫(kù)中。2.一個(gè)nginx服務(wù)的安裝請(qǐng)求會(huì)首先被發(fā)送到master節(jié)點(diǎn)的apiServer組件。3.apiServer組件會(huì)調(diào)用scheduler組件來(lái)決定到底應(yīng)該把這個(gè)服務(wù)安裝到哪個(gè)node節(jié)點(diǎn)上在此時(shí),它會(huì)從etcd中讀取各個(gè)node節(jié)點(diǎn)的信息,然后按照一定的算法進(jìn)行選擇,并將結(jié)果告知apiServer。4.apiServer調(diào)用controller-manager去調(diào)度Node節(jié)點(diǎn)安裝nginx服務(wù)。5.kubelet接收到指令后,會(huì)通知docker,然后由docker來(lái)啟動(dòng)一個(gè)nginx的podpod是kubernetes的最小操作單元,容器必須跑在pod中。6.至此,一個(gè)nginx服務(wù)就運(yùn)行了,如果需要訪問(wèn)nginx,就需要通過(guò)kube-proxy來(lái)對(duì)pod產(chǎn)生訪問(wèn)的代理這樣。外界用戶就可以訪問(wèn)集群中的nginx服務(wù)了。6.1任務(wù)6.1Kubernetes概述相關(guān)知識(shí)Kubeadm軟件包的作用Kubeadm是Kubernetes官方提供的用于快速部署和初始化Kubernetes集群的命令行工具。它的主要功能包括:部署和初始化:使用kubeadm可以在多個(gè)節(jié)點(diǎn)上快速部署和初始化Kubernetes集群。在初始化集群時(shí),kubeadm會(huì)檢查主機(jī)配置和組件依賴(lài)項(xiàng),配置kubelet和kube-proxy,生成TLS證書(shū)和密鑰,以及創(chuàng)建Kubernetes控制平面的核心組件(APIServer、ControllerManager和Scheduler等)。升級(jí):kubeadm也支持集群的升級(jí),可以根據(jù)需要將Kubernetes集群升級(jí)到新的版本。配置:使用kubeadm可以快速生成Kubernetes配置文件,這些配置文件可以用于其他部署工具(如Helm)進(jìn)行Kubernetes應(yīng)用程序部署。添加節(jié)點(diǎn):使用kubeadm可以方便地添加新的節(jié)點(diǎn)到現(xiàn)有的Kubernetes集群中。自定義:kubeadm還提供了一些選項(xiàng),允許用戶自定義集群的配置和部署方式,以滿足不同的需求和場(chǎng)景。7.1任務(wù)7.1Kubernetes的發(fā)展相關(guān)知識(shí)Kubelet軟件包的作用Kubelet是Kubernetes集群中的一個(gè)重要組件,它運(yùn)行在每個(gè)節(jié)點(diǎn)上,并負(fù)責(zé)管理節(jié)點(diǎn)上的容器。Kubelet的主要功能包括以下幾個(gè)方面:容器生命周期管理:Kubelet負(fù)責(zé)啟動(dòng)、停止和重啟節(jié)點(diǎn)上的容器,并確保它們保持運(yùn)行狀態(tài)。它通過(guò)監(jiān)控容器的運(yùn)行狀態(tài)來(lái)確保容器在出現(xiàn)故障時(shí)能夠被及時(shí)重新啟動(dòng)。資源管理:Kubelet還負(fù)責(zé)管理節(jié)點(diǎn)上的資源,包括CPU、內(nèi)存、磁盤(pán)等。它通過(guò)控制容器的資源使用來(lái)確保節(jié)點(diǎn)資源的充分利用和合理分配。安全管理:Kubelet負(fù)責(zé)確保容器的安全性,包括限制容器的權(quán)限、限制容器對(duì)主機(jī)文件系統(tǒng)的訪問(wèn)、實(shí)現(xiàn)容器之間的隔離等。節(jié)點(diǎn)管理:Kubelet向控制平面匯報(bào)節(jié)點(diǎn)的狀態(tài)信息,包括節(jié)點(diǎn)的健康狀態(tài)、容器的運(yùn)行狀態(tài)、節(jié)點(diǎn)的資源使用情況等。這些信息對(duì)于集群的監(jiān)控和管理非常重要。網(wǎng)絡(luò)管理:Kubelet還負(fù)責(zé)為容器設(shè)置網(wǎng)絡(luò)環(huán)境,包括分配IP地址、設(shè)置網(wǎng)絡(luò)策略等??傊?,Kubelet是Kubernetes集群中至關(guān)重要的組件之一,它負(fù)責(zé)管理節(jié)點(diǎn)上的容器,確保它們保持運(yùn)行狀態(tài),保障集群的穩(wěn)定性和可靠性。7.1任務(wù)7.1Kubernetes的發(fā)展相關(guān)知識(shí)Kubectl軟件包的作用Kubectl是Kubernetes命令行工具,它是Kubernetes的主要管理工具之一。通過(guò)kubectl,用戶可以與Kubernetes集群進(jìn)行交互,管理容器、Pod、服務(wù)、部署等各種資源對(duì)象。Kubectl的主要功能包括以下幾個(gè)方面:部署應(yīng)用:kubectl可以用來(lái)創(chuàng)建、更新和刪除部署、副本集、DaemonSet等應(yīng)用資源。管理Pod:kubectl可以用來(lái)創(chuàng)建、更新和刪除Pod,以及查看Pod的狀態(tài)、日志和運(yùn)行情況等。管理服務(wù):kubectl可以用來(lái)創(chuàng)建、更新和刪除服務(wù)資源,并查看服務(wù)的狀態(tài)和IP地址等。管理配置:kubectl可以用來(lái)管理Kubernetes中的配置信息,包括ConfigMap和Secret等。擴(kuò)容與縮容:kubectl可以用來(lái)擴(kuò)容和縮容部署和副本集等資源對(duì)象。訪問(wèn)KubernetesAPI:kubectl可以用來(lái)訪問(wèn)KubernetesAPI,以便于查詢(xún)和修改Kubernetes資源對(duì)象。調(diào)試應(yīng)用:kubectl可以用來(lái)調(diào)試應(yīng)用程序,包括查看Pod日志、執(zhí)行進(jìn)入容器等操作??傊琸ubectl是Kubernetes中最常用的命令行工具之一,它提供了豐富的功能,使得用戶可以方便地管理和操作Kubernetes集群。7.1任務(wù)7.1Kubernetes的發(fā)展相關(guān)知識(shí)實(shí)訓(xùn)目的(1)掌握Kubernetes在RHEL8.1操作系統(tǒng)中的安裝方法。(2)掌握Kubernetes集群的在線和離線創(chuàng)建。(3)掌握在Kubernetes上安裝Dashboard監(jiān)控界面的方法。實(shí)訓(xùn)內(nèi)容(1)在RHEL8.1操作系統(tǒng)中安裝Kubernetes集群。(2)在Kubernetes上安裝Dashboard監(jiān)控界面。6.1任務(wù)6.1Kubernetes概述項(xiàng)目實(shí)訓(xùn)(部署Kubernetes集群)實(shí)訓(xùn)步驟1.任務(wù)環(huán)境準(zhǔn)備本任務(wù)選用兩臺(tái)部署在VMwareWorkstation16中的虛擬機(jī),虛擬機(jī)均已預(yù)先安裝Redhat8.1運(yùn)行環(huán)境。各虛擬主機(jī)基本配置信息表如表6-1所示。表6-1各虛擬主機(jī)基本配置信息表6.1任務(wù)6.1Kubernetes概述項(xiàng)目實(shí)訓(xùn)主機(jī)名IP地址虛擬機(jī)CPU/內(nèi)存節(jié)點(diǎn)角色k8s-master01/242vcpus/8GB管理節(jié)點(diǎn)k8s-node0102/242vcpus/8GB工作節(jié)點(diǎn)1k8s-node0203/242vcpus/8GB工作節(jié)點(diǎn)2實(shí)訓(xùn)步驟2.基本環(huán)境設(shè)置,3臺(tái)節(jié)點(diǎn)主機(jī)均需設(shè)置(1)根據(jù)各虛擬主機(jī)基本配置信息表設(shè)置相應(yīng)主機(jī)的主機(jī)名。(2)禁用RedHatSubscriptionManager訂閱管理器。(3)編輯/etc/ho
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一對(duì)一學(xué)員輔導(dǎo)協(xié)議書(shū)
- 基層食藥監(jiān)執(zhí)法知識(shí)課件
- 初三化學(xué)化學(xué)用語(yǔ)綜合考查試卷及答案
- 中國(guó)大學(xué)生信用檔案:構(gòu)建、管理與價(jià)值探究
- pH調(diào)控下Cp-Ir配合物催化糖類(lèi)衍生物選擇性氫化反應(yīng)機(jī)制與應(yīng)用研究
- 八年級(jí)數(shù)學(xué)軸對(duì)稱(chēng)單元練習(xí)試卷及答案
- 導(dǎo)航原理(第3版)課件 第四章2-相位式導(dǎo)航測(cè)角-相位式導(dǎo)航測(cè)角誤差分析-
- 單片機(jī)基礎(chǔ)中英文翻譯、外文文獻(xiàn)翻譯、外文翻譯
- 數(shù)據(jù)資產(chǎn)評(píng)估師考試試題及答案
- 工業(yè)檢測(cè)面試題及答案
- 雙方簽定協(xié)議書(shū)
- 2024-2025學(xué)年八年級(jí)數(shù)學(xué)下冊(cè)期末培優(yōu)卷(北師大版)含答案
- 2025福建福州市鼓樓區(qū)國(guó)有資產(chǎn)投資發(fā)展集團(tuán)有限公司副總經(jīng)理公開(kāi)招聘1人筆試參考題庫(kù)附帶答案詳解(10套)
- 2025年12345熱線考試題庫(kù)
- 多余物控制管理辦法
- 河南省洛陽(yáng)市2024-2025學(xué)年高一下學(xué)期期末質(zhì)量檢測(cè)物理試卷
- 雅思介紹課件
- 《電商直播運(yùn)營(yíng)》教案-任務(wù)1 直播平臺(tái)與崗位認(rèn)知
- 反邪教宣講課件
- 兒童呼吸機(jī)應(yīng)用
- 宣傳部合規(guī)管理制度
評(píng)論
0/150
提交評(píng)論