版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
講 深入剖析 文章詳13|為什 |0:0/ 需要Pod0 詳細(xì)介紹了在Kube es里部署一個(gè)應(yīng)用的過(guò)程。在這些講解中, 了這樣一個(gè)知識(shí)點(diǎn):Pod,是Kube es項(xiàng)目中最小的API對(duì)象。如果換一個(gè)更專業(yè)的說(shuō)0法 可以這樣描述:Pod,是 相信你在學(xué)習(xí)和使用Kube 會(huì)需要Pod?是啊,面已經(jīng)花了很多精力去解讀Linux容器的原理、分析了Docker容器的本質(zhì),終于,“Namespace做,Cgroups做限制,rootfs做文件系統(tǒng)”這樣的“三句箴言”可以朗朗上口了,為什么Kubees項(xiàng)目又突然搞出一個(gè)Pod來(lái)呢? es 登錄到一臺(tái)Linux機(jī)器里,執(zhí)行一條如下所示令1$pstree-123456789 |`-|-)|`-|-|-|`-||-{in:imuxsock)S|`-{rs:main|||||-|-|-|-它的進(jìn)程組ID(ProcessGroupID,PGID)比如,這里有一個(gè)叫作rsyslogd的程序,它負(fù)責(zé)的是Linux操作系統(tǒng)里的日志處理??梢钥吹?,rsyslogdmainimklog1632這些進(jìn)程相互協(xié)作,共同完成rsyslogd程序的職責(zé)。對(duì)于操作系統(tǒng)來(lái)說(shuō),這樣的進(jìn)程組更方便管理。舉個(gè)例子,Linux而Kubees項(xiàng)目所做的,其實(shí)就是將“進(jìn)程組”的概念映射到了容器技術(shù)中,并使其成為了Kubees項(xiàng)目之所以要這么做的,面介紹Kubees和Borg的關(guān)系時(shí)曾經(jīng)提到過(guò):在Borg項(xiàng)目的開(kāi)發(fā)和實(shí)踐過(guò)程中,公司的工程師們發(fā)現(xiàn),他們部署的應(yīng)用,往還是以前面的rsyslogd為例子。已知rsyslogd由三個(gè)進(jìn)程組成:一個(gè)imklog模塊,一個(gè)imuxsockrsyslogdmain器上,否則,它們之間基于Socket的通信和文件交換,都會(huì)出現(xiàn)問(wèn)題。 須被分別制作成三個(gè)不同的容器。而在這三個(gè)容器運(yùn)行的時(shí)候,它們?cè)O(shè)置的內(nèi)存都是1而是指容器沒(méi)有管理多個(gè)進(jìn)程的能力。這是因?yàn)槿萜骼颬ID=1的進(jìn)程就是應(yīng)用本身,其他的進(jìn)程都是這個(gè)PID=1進(jìn)程的子進(jìn)程??墒?,用戶編寫(xiě)的應(yīng)用,并不能夠像正常操作系統(tǒng)里的init進(jìn)程或者systemd那樣擁有進(jìn)程管理的功能。比如,你的應(yīng)用是一個(gè)JavaWeb程序(PID=1),然后你執(zhí)行dockerexec在啟動(dòng)了一個(gè)Nginx進(jìn)程(PID=3)。可是,當(dāng)這個(gè)Nginx進(jìn)程異常的時(shí)候,你假設(shè)的Kubees集群上有兩個(gè)節(jié)點(diǎn):node-13GB可用內(nèi)存,node-22.5這時(shí),假設(shè)要用DockerSwarmrsyslogd程序。為了能夠讓這三個(gè)容器都運(yùn)行在同一臺(tái)機(jī)器上,就必須在另外兩個(gè)容器上設(shè)置一個(gè)affinity=main(與main容器有親密性)的約束,即:它們倆必須和main容器運(yùn)行在同一臺(tái)機(jī)器上。然后 順序執(zhí)行:“dockerrunmain”“dockerrunimklog”和“dockerSwarmmainimklog隊(duì)并被調(diào)度到了node-2上(這個(gè)情況是完全有可能的)。imuxsock,Swarmnode-20.5GBimuxsockaffinity=mainimuxsock器又只能運(yùn)行在node-2上。比如,Mesos中就有一個(gè)資源囤積(resourcehoarding)的機(jī)制,會(huì)在所有設(shè)置了Affinity約束的任務(wù)都達(dá)到時(shí),才開(kāi)始對(duì)它們統(tǒng)一進(jìn)行調(diào)度。而在Omega 但是,到了Kubees項(xiàng)目里,這樣的問(wèn)題就迎刃而解了:Pod是Kubees里的原子調(diào)度單位。這就意味著,Kubees項(xiàng)目的調(diào)度器,是統(tǒng)一按照Pod而非容器的資源需求進(jìn)行imklog、imuxsockmainPod。Kubees3GBnode-1點(diǎn)進(jìn)行綁定,而根本不會(huì)考慮node-2。像這樣容器間的緊密協(xié)作,可以稱為“超親密關(guān)系”。這些具有“超親密關(guān)系”容器的典型特征包括但不限于:互相之間會(huì)發(fā)生直接的文件交換、使用localhost或者Socket文件進(jìn)行本地通信、會(huì)發(fā)生非常頻繁的調(diào)用、需要共享某些LinuxNamespace(比如,一個(gè)容器要加入另一個(gè)容器workNamespace)等等。這也就意味著,并不是所有有“關(guān)系”的容器都屬于同一個(gè)Pod。比如,PHP應(yīng)用容器和兩個(gè)Pod。對(duì)于初學(xué)者來(lái)說(shuō),一般都是先學(xué)會(huì)了用Docker這種單容器的工具,才會(huì)開(kāi)始接觸Pod。而如果Pod的設(shè)計(jì)只是出于調(diào)度上的考慮,那么Kube Pod es不過(guò),Pod在Kube 就必須先給你介紹一下Pod的實(shí)現(xiàn)原理。Pod也就是說(shuō) Cgroups,而并不存在一個(gè)所謂的Pod的邊界或者環(huán)境一個(gè)Volume。A、BPod,不就是等同于一個(gè)容器(A)共享另外一個(gè)容器(容器B)的網(wǎng)絡(luò)和Volume的玩兒法么?這好像通過(guò)docker --volumes-from這樣令就能實(shí)現(xiàn)嘛,比如1$docker=B--volumes-from=B--name=Aimage-ABAPod所以,在Kube es項(xiàng)目里,Pod的實(shí)現(xiàn)需要使用一個(gè)中間容器,這個(gè)容器叫作Infra容器。在這個(gè)Pod中,Infra容器都是第一個(gè)被創(chuàng)建的容器,而其他用戶定義的容器,則通過(guò) workNamespaceInfra如上圖所示,這個(gè)PodAB,還有一個(gè)Infra 的容器,解壓后的大小也只有100~200KB左右。而在Infra容器“HoldworkNamespace后,用戶容器就可以加入到Infra容器(這個(gè)Namespace文件的路徑, PodABInfra一個(gè)Pod只有一個(gè)IP地址,也就是這個(gè)PodworkNamespace對(duì)應(yīng)的IP地址;當(dāng)然,其他的所有網(wǎng)絡(luò)資源,都是一個(gè)Pod一份,并且被該P(yáng)od中的所有容器共享;Pod的生命周期只跟Infra容器一致,而與容器A和B無(wú)關(guān)。而對(duì)于同一個(gè)Pod里面的所有用戶容器來(lái)說(shuō),它們的進(jìn)出流量,也可以認(rèn)為都是通過(guò)Infra容Kubees慮的是如何配置這個(gè)PodworkNamespace,而不是每一個(gè)用戶容器如何使用你的網(wǎng)絡(luò)Infra容器鏡像的rootfs里幾乎什么都沒(méi)有,沒(méi)有你隨意發(fā)揮的空間。當(dāng)然,這同時(shí)也意味著你的網(wǎng)絡(luò)插件完全不必關(guān)心用戶容器的啟動(dòng)與否,而只需要關(guān)注如何配置Pod,也就是Infra容器workNamespace即可。有了這個(gè)設(shè)計(jì),共享Volume就簡(jiǎn)單多了:Kube es項(xiàng)目只要把所有Volume的定義都設(shè)計(jì)在Pod層級(jí)即可。這樣,一個(gè)Volume對(duì)應(yīng)的宿主機(jī) 對(duì)于Pod來(lái)說(shuō)就只有一個(gè),Pod里的容器只要掛載這個(gè)Volume,就一定可以共享這個(gè)Volume對(duì)應(yīng)的宿主機(jī) 123456789apiVersion:kind:Podname:two-:-name:shared-path:/data--name:nginx-image:name:shared-mountPath:/usr/share/nginx/htmlname:debian-containerimage:debian name:shared-datamountPath:/pod-datacommand:args:["-c",ofromthedebiancontainer>/pod-在這個(gè)例子中,debian-container和nginx-container都掛載了shared-data這個(gè)Volume。而shared-data是hostPath類型。所以,它對(duì)應(yīng)在宿主機(jī)上的 這就是為什么,nginx-container可以從它的/usr/share/nginx/html 中,到debian-container生成的index.html文件的。明白了Pod的實(shí)現(xiàn)原理后 能并不相關(guān)的應(yīng)用時(shí),應(yīng)該優(yōu)先考慮它們是不是更應(yīng)該被描述成一個(gè)Pod里的多個(gè)容器。第一個(gè)最典型的例子是:WAR包與Web服務(wù)器?,F(xiàn)在有一個(gè)JavaWeb應(yīng)用的WAR包,它需要被放在Tomcat的webapps 法是,把WAR包直接放在Tomcat鏡像的webapps下,做成一個(gè)新的鏡像運(yùn)WARTomcat另法是,你壓根兒不管WAR包,只發(fā)布一個(gè)Tomcat容器。不過(guò),這個(gè)容器的webapps,就必須一個(gè)hostPath類型的Volume,從而把宿主機(jī)上的WAR包掛載進(jìn)Tomcat容器當(dāng)中運(yùn)行起來(lái)。不過(guò),這樣你就必須要解決一個(gè)問(wèn)題,即:如何讓每一臺(tái)宿主機(jī),都預(yù)先準(zhǔn)備好這個(gè)有WAR包的呢?這樣來(lái)看,你只能獨(dú)立一套分布實(shí)際上,有了Pod,這樣的問(wèn)題就很容易解決了??梢园裌AR包和Tomcat分別做PodPodapiVersion:kind:name:javaweb--image:name:command:["cp","/sample.war",-mountPath:name:app-volume-image:name: mountPath:/root/apache-tomcat-7.0.42-v2/webappsname:app-volumecontainerPort:hostPort:8001-name:app-emptyDir:在這個(gè)Pod中,定義了兩個(gè)容器,第一個(gè)容器使用的鏡像是geektime/sample:v2,這個(gè)鏡像里只有一個(gè)WAR包(sample.war)放在根下。而第二個(gè)容器則使用的是一個(gè)標(biāo)準(zhǔn)的Tomcat鏡像。不過(guò),你可能已經(jīng)注意到,WAR包容器的類型不再是一個(gè)普通容器,而是一個(gè)Init在Pod中,所有InitContainer定義的容器,都會(huì)比spec.containers定義的用戶容器先啟所以,這個(gè)InitContainer類型的WAR包容器啟動(dòng)后 執(zhí)行了一句"cp/app",把應(yīng)用的WAR包拷貝到 而后這個(gè) ,就掛載了一個(gè)名叫app-volume的VolumeTomcatwebappssample.warWARVolumeVolume 就用一種“組合”方式,解決了WAR包與Tomcat容器之間耦合關(guān)系的問(wèn)題。顧名思義,sidecar指的就是 比如,在的這個(gè)應(yīng)用Pod,Tomcat容器是要使用的主容器,而WAR包容器的存WARInitContainerWAR包容器,扮演了一個(gè)sidecar的角色。 現(xiàn)在有一個(gè)應(yīng)用,需要不斷地把日志文件輸出到容器的/var/log 就可以把一個(gè)Pod里的Volume掛載到應(yīng)用容器的/var/log 在這個(gè)Pod里同時(shí)運(yùn)行一個(gè)sidecar容器,它也掛載同一個(gè)Volume到自己 日志文件,轉(zhuǎn)發(fā)到MongoDB或者Elasticsearch中起來(lái)。這樣,一個(gè)最基本的日志收集sidecarVolume但記,Pod的另一個(gè)重要特性是,它的所有容器都共享同一workNamespace。這就使得很多與Pod網(wǎng)絡(luò)相關(guān)的配置和管理,也都可以交給sidecar完成,而完全無(wú)須用戶容器。這里最典型的例子莫過(guò)于Istio這個(gè)微服務(wù)治理項(xiàng)目了。Istiosidecar備注:Kubees在本篇文章 重點(diǎn)了 es項(xiàng)目中Pod的實(shí)現(xiàn)原理Pod是Kube 實(shí)際上,一個(gè)運(yùn)行在虛擬機(jī)里的應(yīng)用,哪怕再簡(jiǎn)單,也是被管理在systemd或者supervisord什么,從物理機(jī)到虛擬機(jī)之間的應(yīng)用遷移,往往并不。Pod然后,你就可以把整個(gè)虛擬機(jī)想象成為一個(gè)Pod,把這些進(jìn)程分別做成容器鏡像,把有順序關(guān)InitContainer。這才是更加合理的、松耦合的容器編排訣竅,也是從傳統(tǒng)應(yīng)注意:Pod這個(gè)概念,提供的是一種編排思想,而不是具體的技術(shù)方案。所以,Pod行在這個(gè)虛擬機(jī)里。比如,Mir公司的virtlet項(xiàng)目就在干這個(gè)事情。甚至,你可以去實(shí)現(xiàn)一個(gè)帶有Init進(jìn)程的容器項(xiàng)目,來(lái)模擬傳統(tǒng)應(yīng)用的運(yùn)行方式。這些工作,在Kubees中都是非常輕松的,也是后面講解CRI時(shí)會(huì)提到的內(nèi)DockerInDocker除workNamespace外,Pod里的容器還可以共享哪些Namespace呢?你能說(shuō)出共享這些Namesapce的具體應(yīng)用場(chǎng)景嗎?
重要理解了這個(gè)概念,透透透!不但解決了前幾天war和tomcat做一起,完成鏡像的頻從而解決chromeheadless太大不容易安裝的問(wèn)題,爽爽爽! 8 長(zhǎng),掌管家通資源,家庭成員通過(guò)sidecar方式互幫互助,其樂(lè)融融~ 如今一看豁然開(kāi)朗 Eddie 前為止依然存在的一些缺陷和不足呢?方便在應(yīng)用過(guò)程中加以注意。 務(wù)容器,兩個(gè)業(yè)務(wù)容器會(huì)共享Pause容器除了Pi mespace外所有名空間
J.P. 0 底誰(shuí)讀錯(cuò)了。查過(guò)字典,實(shí)際是英美的區(qū)別(英[p?d],美[pɑ:d]),聽(tīng)作者也是以英 新打吧.這和東西一股腦裝在tomcat中后,重新打tomcat并沒(méi)有差太多吧? w 不大明白這是個(gè)怎樣的機(jī)制。提到的死鎖又會(huì)在什么情況下發(fā)生。 老師,幫忙看下,按照官網(wǎng)和den:User\"system:anonymous\";也按照上面blog的方案將添加到個(gè)人,但證th=false,但如blob的作者所說(shuō),的確會(huì)造成api-server的不穩(wěn)定 按照官網(wǎng)和 ,使用kubeadm的方式部署了k8s;coredns-78fcdf6894-btftn1/1Running04hetcd-kiehls51/1Running04hkube-apiserver-kiehls51/1Runn
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Preparing for Pregnancy助產(chǎn)專業(yè)資源庫(kù)
- 課題申報(bào)參考:內(nèi)容創(chuàng)作情境下消費(fèi)者AI工具協(xié)作偏好的形成及溢出效應(yīng)研究
- 課題申報(bào)參考:馬來(lái)西亞檳城開(kāi)埠者弗朗西斯·萊特書(shū)信手稿、翻譯與研究(1768-1794)
- 課題申報(bào)參考:媒介生態(tài)學(xué)視角下教養(yǎng)方式與兒童自我教育的關(guān)系及其優(yōu)化路徑研究
- 部編版八年級(jí)下冊(cè)語(yǔ)文全冊(cè)教案
- 2025年度文化創(chuàng)意產(chǎn)業(yè)投資入股合同3篇
- 2025年度綠色生態(tài)畜牧業(yè)承包經(jīng)營(yíng)合同3篇
- 2025年旅游業(yè)績(jī)考核服務(wù)合同
- 2025年度派駐企業(yè)產(chǎn)品測(cè)試與認(rèn)證合同范本4篇
- 2025年個(gè)性化借款合同
- 乳腺癌的綜合治療及進(jìn)展
- 【大學(xué)課件】基于BGP協(xié)議的IP黑名單分發(fā)系統(tǒng)
- 2025年八省聯(lián)考高考語(yǔ)文試題真題解讀及答案詳解課件
- 信息安全意識(shí)培訓(xùn)課件
- 2024年山東省泰安市初中學(xué)業(yè)水平生物試題含答案
- 美的MBS精益管理體系
- 中國(guó)高血壓防治指南(2024年修訂版)解讀課件
- 2024安全員知識(shí)考試題(全優(yōu))
- 2024年衛(wèi)生資格(中初級(jí))-中醫(yī)外科學(xué)主治醫(yī)師考試近5年真題集錦(頻考類試題)帶答案
- 中國(guó)大百科全書(shū)(第二版全32冊(cè))08
- 醫(yī)院出入口安檢工作記錄表范本
評(píng)論
0/150
提交評(píng)論