“docker、kubernetes”知識(shí)分享
來源:湖北國(guó)菱計(jì)算機(jī)科技有限公司-荊州網(wǎng)站建設(shè)-荊州軟件開發(fā)-政府網(wǎng)站建設(shè)公司
時(shí)間:2019-07-22
2019年7月12日湖北國(guó)菱公司軟件開發(fā)部成員與運(yùn)維部成員組織學(xué)習(xí)關(guān)于“docker、kubernetes原理及使用” 知識(shí)分享會(huì),知識(shí)要點(diǎn)如下:
第一點(diǎn):什么是容器
在同一臺(tái)機(jī)器上運(yùn)行的不同的組件需要不同的,可能存在沖突的依賴庫(kù)版本,或者其他的不同環(huán)境需求。
當(dāng)一個(gè)應(yīng)用程序僅由較少數(shù)量的大組件構(gòu)成時(shí),完全可以接受每個(gè)組件分配專用的虛擬機(jī),以及通過給每個(gè)組件提供自己的操作系統(tǒng)實(shí)例來隔離他們的環(huán)境。但是當(dāng)這些組件開始變小且數(shù)量開始增長(zhǎng)時(shí),如果不想浪費(fèi)硬件資源,又想持續(xù)壓低硬件成本,那就不能給每個(gè)組件配置一個(gè)虛擬機(jī)。但是這不僅僅浪費(fèi)硬件資源,因?yàn)槊總€(gè)虛擬機(jī)都需要被單獨(dú)配置和管理,所以增加虛擬機(jī)的數(shù)量也就是導(dǎo)致人力資源的浪費(fèi),因?yàn)檫@增加系統(tǒng)管理員的工作負(fù)擔(dān)。
第二點(diǎn):什么是docker
Docker是一個(gè)打包,分發(fā)和運(yùn)行應(yīng)用程序的平臺(tái)。正如我們所說,他允許將你的應(yīng)用程序和應(yīng)用程序依賴的整個(gè)環(huán)境打包在一起。這既可以是一些應(yīng)用程序需要的庫(kù),也可以是一個(gè)被安裝的操作系統(tǒng)所有可用的文件。Docker使的傳輸這個(gè)包到一個(gè)中央倉(cāng)庫(kù)成為可能,然后這個(gè)包就能被分發(fā)到任何運(yùn)行docker的機(jī)器上,在哪兒被執(zhí)行。
Docker三大組件
鏡像:docker鏡像里包含了你打包的應(yīng)用程序及其所依賴的環(huán)境。它包含應(yīng)用程序可用的文件系統(tǒng)和其他的元數(shù)據(jù),如鏡像運(yùn)行時(shí)的可執(zhí)行文件路徑,
鏡像倉(cāng)庫(kù):docker鏡像倉(cāng)庫(kù)用于存放docker鏡像,以及促進(jìn)不同人和不同主機(jī)之間共享這些鏡像。當(dāng)你編譯你的鏡像時(shí),要么可以在編譯它的電腦上運(yùn)行,要么可以先上傳到一個(gè)鏡像倉(cāng)庫(kù),然后下載到另外一臺(tái)電腦上并運(yùn)行它。某些倉(cāng)庫(kù)是公開的,允許所有人從中拉取鏡像,同時(shí)也有一些是私有的,僅部分人和機(jī)器可接入。
容器:docker容器通常是一個(gè)linux容器,它基于docker鏡像被創(chuàng)建。一個(gè)運(yùn)行中的容器時(shí)一個(gè)運(yùn)行在docker主機(jī)上進(jìn)程,但他和主機(jī),以及所有運(yùn)行在主機(jī)上的其他進(jìn)程都是隔離的。這個(gè)進(jìn)程也是資源受限的,意味著他只能訪問和使用分配給他的資源(cpu,內(nèi)存等)。
第三點(diǎn):什么是kubernetes
Kubernetes是一個(gè)軟件系統(tǒng),他允許你在其上很容易地部署和管理容器化的應(yīng)用。他依賴于Linux容器的特性來運(yùn)行異構(gòu)應(yīng)用,而無須知道這些應(yīng)用的內(nèi)部詳情,也不需要手動(dòng)將這些應(yīng)用部署到每臺(tái)機(jī)器。因?yàn)檫@些應(yīng)用運(yùn)行在容器里,他們不會(huì)影響運(yùn)行在同一臺(tái)服務(wù)器上的其他應(yīng)用,當(dāng)你是為完全不同的組織機(jī)構(gòu)運(yùn)行應(yīng)用時(shí),這是很關(guān)鍵的。對(duì)于云供應(yīng)商來說是至關(guān)重要的,因?yàn)樗麄冊(cè)谧非蟾哂布捎寐实耐阉鲿r(shí)也必須保障所承載應(yīng)用的完全隔離。
1、Kubernetes集群架構(gòu)
主節(jié)點(diǎn):它承載著kuberentes控制和管理整個(gè)集群系統(tǒng)的控制面板。
工作節(jié)點(diǎn):它們運(yùn)行用戶實(shí)際部署的應(yīng)用
2、控制面板
控制面板用于控制集群并使它工作。它包含多個(gè)組件,組件可以運(yùn)行在單個(gè)主節(jié)點(diǎn)或者通過副本分別部署在多個(gè)節(jié)點(diǎn)以確保高可用性。這些組件是:
Kubernetes API服務(wù)器,不和其他控制面板組件都要和它通信
Scheculer,它調(diào)度你的應(yīng)用(為應(yīng)用的每個(gè)可部署組件分配一個(gè)工作節(jié)點(diǎn))
Controller Manager,他執(zhí)行集群級(jí)別的功能,如復(fù)制組件,持續(xù)跟蹤工作節(jié)點(diǎn),處理節(jié)點(diǎn)失敗等
Etcd,一個(gè)可靠的分布式數(shù)據(jù)存儲(chǔ),它能持久化存儲(chǔ)集群配置
3、工作節(jié)點(diǎn)
工作節(jié)點(diǎn)是運(yùn)行容器化應(yīng)用的機(jī)器。運(yùn)行,監(jiān)控和管理應(yīng)用服務(wù)的任務(wù)是由以下組件完成的:
Docker,rtk或其他的容器類型
Kubelet,它與API服務(wù)器通信,并管理它所在的節(jié)點(diǎn)的容器
Kubernetes service proxy(kube-proxy),它負(fù)責(zé)組件之間的負(fù)載均衡網(wǎng)絡(luò)流量
以上就是這次分享會(huì)的全部?jī)?nèi)容了,希望對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,也希望能給容器小白們一些幫助。