版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Kubernetes容器編排引擎云原生概述低耦合+高內(nèi)聚開(kāi)發(fā)和運(yùn)維不再分離不影響用戶使用服務(wù)的前提下迭代每個(gè)服務(wù)都被無(wú)差別地封裝在容器里Docker、Kubernetes什么是Kubernetes?簡(jiǎn)單說(shuō):是生產(chǎn)級(jí)別的容器編排引擎可以自動(dòng)化的容器部署、擴(kuò)展和管理從2000年以來(lái),谷歌基于容器研發(fā)三個(gè)容器管理系統(tǒng),分別是Borg、Omega和Kubernetes。Borg是谷歌嚴(yán)守十幾年的秘密武器,利用其管理數(shù)量龐大的應(yīng)用集群Borg和Omega是谷歌內(nèi)部工具,至今未開(kāi)源,Kubernetes是開(kāi)源的谷歌從Borg到Kubernetes逐步吸取經(jīng)驗(yàn)進(jìn)行改進(jìn),于2015年將Kubernetes開(kāi)源什么是Kubernetes?首先,它是一個(gè)全新的基于容器技術(shù)的分布式架構(gòu)領(lǐng)先方案。其次,Kubernetes提供強(qiáng)大的自動(dòng)化機(jī)制,可以大大降低運(yùn)維成本。然后,Kubernetes是一個(gè)開(kāi)放的開(kāi)發(fā)平臺(tái),不限于任何一種語(yǔ)言,沒(méi)有接口限定,無(wú)論是 Java、C++、Go都可以映射為Kubernetes的Service。最后,Kubernetes是一個(gè)完備的分布式系統(tǒng)支撐平臺(tái),具備完備的集群管理能力,包括服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)、負(fù)載均衡、故障修復(fù)、在線擴(kuò)容等。Kubernetes主要優(yōu)點(diǎn)(1)隱藏資源管理和故障處理的細(xì)節(jié),使其用戶可以專注于應(yīng)用程序開(kāi)發(fā);(2)以非常高的可靠性和可用性運(yùn)行,并支持應(yīng)用程序做同樣的事情;(3)讓我們有效地在數(shù)萬(wàn)臺(tái)機(jī)器上運(yùn)行工作負(fù)載。博格不是第一個(gè)解決這些問(wèn)題的系統(tǒng),但它是少數(shù)幾個(gè)運(yùn)行系統(tǒng)之一他的規(guī)模,有這種程度的彈性和完整性。(4)同時(shí)支持Docker和Rocket容器概述(Docker)在一個(gè)實(shí)際的大型系統(tǒng)中,微服務(wù)架構(gòu)可能由成千上萬(wàn)個(gè)服務(wù)組成,如果將每個(gè)服務(wù)都打包上傳并運(yùn)行,工作量和系統(tǒng)資源占用無(wú)疑是巨大的。而且進(jìn)行服務(wù)器伸縮的時(shí)候,都需要進(jìn)行重復(fù)的部署或刪除操作。
容器技術(shù)的出現(xiàn)解決了這一問(wèn)題,我們可以將服務(wù)打包成鏡像,放到容器中,通過(guò)容器來(lái)運(yùn)行服務(wù),這樣便于進(jìn)行分布式管理,也方便進(jìn)行水平擴(kuò)展。
Docker是容器技術(shù)的佼佼者,是一個(gè)開(kāi)源容器,而Kubernetes是一個(gè)分布式容器編排引擎,二者是天生的一對(duì)?;贚inux64bit網(wǎng)絡(luò)隔離:namespace資源隔離:cgroup虛擬化:輕量、containerizationDockerfileKubernetes基本概念和術(shù)語(yǔ) Kubernetes大部分的概念如Node、Pod、ReplicationController、Service都可以看做一種“資源對(duì)象”。幾乎所有對(duì)象都可以通過(guò)Kubernetes提供的kubectl工具執(zhí)行增刪改查等操作并將其保存在etcd中持久化存儲(chǔ)。程調(diào)用)執(zhí)行增、刪、改、查等操作并將其保存在eted中持久化存儲(chǔ)。從這個(gè)角度來(lái)看,Kubermetes其實(shí)是一個(gè)高度自動(dòng)化的資源控制系統(tǒng),它通過(guò)跟蹤對(duì)比etcd庫(kù)里保存的“資源期望狀態(tài)”與當(dāng)前環(huán)境中的“實(shí)際資源狀態(tài)”的差異來(lái)實(shí)現(xiàn)自動(dòng)控制和自動(dòng)糾錯(cuò)的高級(jí)功能。Pod:最重要也是最基本的概念,一個(gè)Pod包含一個(gè)或多個(gè)緊密相關(guān)的用戶業(yè)務(wù)容器Label:標(biāo)簽,資源分組管理ReplicationController:Pod的伸縮擴(kuò)展(副本數(shù)量控制)Service:一項(xiàng)“微服務(wù)”Kubernetes基本概念和術(shù)語(yǔ)
Master:集群控制節(jié)點(diǎn)Node:除Master外的其他機(jī)器節(jié)點(diǎn)Deployment:部署動(dòng)作Volume:存儲(chǔ)卷Namespace:命名空間Pod的生命周期和重啟策略Pod在整個(gè)生命周期過(guò)程中被系統(tǒng)定義為各種狀態(tài),熟悉Pod的各種狀態(tài)對(duì)于我們理解如何設(shè)置Pod的調(diào)度策略、重啟策略是很有必要的。Pod的重啟策略包括Always、OnFailure和Never,默認(rèn)值為Always。Always:當(dāng)容器失效時(shí),由kubelet自動(dòng)重啟該容器。OnFailure:當(dāng)容器終止運(yùn)行且退出碼不為0時(shí),由kubelet自動(dòng)重啟該容器。Never:不論容器運(yùn)行狀態(tài)如何,kubelet都不會(huì)重啟該容器。Pod的健康檢查(Kubelet)LivenessProbe探針
用于判斷容器是否存活(running狀態(tài)),如果LivenessProbe探針探測(cè)到容器不健康,則kubelet將殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理。如果一個(gè)容器不包含LivenessProbe探針,那么kubelet認(rèn)為該容器的LivenessProbe探針?lè)祷氐闹涤肋h(yuǎn)是“Success“。LivenessProbe探針的三種實(shí)現(xiàn)方式(1)ExecAction:在容器內(nèi)部執(zhí)行一個(gè)命令,如果該命令的返回碼為0,則表明容器健康。(2)TCPSocketAction:通過(guò)容器的IP地址和端口號(hào)執(zhí)行TCP檢查,如果能夠建立TCP連接,則表明容器健康。(3)HTTPGetAction:通過(guò)容器的IP地址、端口號(hào)及路徑調(diào)用HTTPGet方法,如果響應(yīng)的狀態(tài)碼大于等于200且小于等于400,則認(rèn)為容器狀態(tài)健康。Pod的調(diào)度ReplicationController、Deployment:全自動(dòng)調(diào)度 RC的主要功能之一就是自動(dòng)部署一個(gè)容器應(yīng)用的多份副本,以及持續(xù)監(jiān)控副本的數(shù)量,在集群內(nèi)始終維持用戶指定的副本數(shù)量。Pod擴(kuò)容縮容kubectlscalercXXX--replicas=3Pod滾動(dòng)升級(jí)
滾動(dòng)升級(jí)通過(guò)執(zhí)行kubectlrolling-update命令--鍵完成,該命令創(chuàng)建了一-個(gè)新的RC,然后自動(dòng)控制舊的RC中的Pod副本的數(shù)量逐漸減少到0,同時(shí)新的RC中的Pod副本的數(shù)量從0逐步增加到目標(biāo)值,最終實(shí)現(xiàn)了Pod的升級(jí)。Service Service是Kubernetes的核心概念,通過(guò)創(chuàng)建Service,可以為一組具有相同功能的容器應(yīng)用提供一個(gè)統(tǒng)一的入口地址,并且將請(qǐng)求進(jìn)行負(fù)載分發(fā)到后端的各個(gè)容器應(yīng)用上。Kubernetes主要組件及原理分析Kubernetes主要組件概述APIServer:對(duì)Pod、RC等資源對(duì)象進(jìn)行增、刪、改、查的RestAPI服務(wù)器ControllerManager:負(fù)責(zé)集群中資源對(duì)象管理同步的組件Scheduler:集群中資源對(duì)象的調(diào)度控制器Kubelet:負(fù)責(zé)維護(hù)Pod容器的生命周期Kube-proxy:負(fù)載均衡和代理服務(wù)Etcd:分布式鍵值對(duì)(k,v)存儲(chǔ)服務(wù),存儲(chǔ)整個(gè)集群的狀態(tài)信息Kubernetes主要組件有APIServer、ControllerManager、Scheduler、kubelet、kube-proxy,其中前三者運(yùn)行于集群的Master節(jié)點(diǎn),后兩者運(yùn)行于集群的Slave節(jié)點(diǎn)。還有一個(gè)用于存儲(chǔ)Kubernetes集群信息的Etcd,它是一個(gè)高可用、強(qiáng)一致性的服務(wù)發(fā)現(xiàn)存儲(chǔ)倉(cāng)庫(kù),基于raft協(xié)議。APIServer:增刪改查RestAPI服務(wù)器 APIServer是對(duì)以上Pod、Service、RC等資源對(duì)象進(jìn)行增、刪、改、查的RestAPI服務(wù)器。通過(guò)kube-apiserver進(jìn)程提供服務(wù),該進(jìn)程運(yùn)行于Master節(jié)點(diǎn)上。APIServer是Kubernetes的核心組件,是各個(gè)組件通信的渠道,有如下特性:(1)是集群管理的API入口。(2)是資源配額控制的入口。(3)提供了完備的集群安全機(jī)制。集群管理的API入口
我們?nèi)绻獎(jiǎng)?chuàng)建一個(gè)資源對(duì)象如Pod、Service、RC、Deployment等,都是要通過(guò)APIServer的。當(dāng)然,我們可能是通過(guò)命令行的kubectl命令將一個(gè)yaml/json格式的文件create進(jìn)行創(chuàng)建,還可能是通過(guò)寫代碼的方式使用如client-go這樣的操作Kubernetes的第三方包來(lái)操作集群??傊?,最終,都是通過(guò)APIServer對(duì)集群進(jìn)行操作的。通過(guò)APIServer,我們就可以往Etcd中寫入數(shù)據(jù)。Etcd中存儲(chǔ)著集群的各種數(shù)據(jù)。APIServer保證集群功能模塊間的通信 APIserver作為集群的核心,負(fù)責(zé)各個(gè)功能模塊之間的通信。集群中各個(gè)模塊通過(guò)APIserver將信息存入etcd,當(dāng)需要獲取和操作這些數(shù)據(jù)時(shí),則通過(guò)APIserver提供的REST接口來(lái)實(shí)現(xiàn),從而實(shí)現(xiàn)各模塊之間的信息交互。Kubelet與APIServer交互
每個(gè)Node節(jié)點(diǎn)上的kubelet定期就會(huì)調(diào)用APIServer的REST接口報(bào)告自身狀態(tài),APIServer接收這些信息后,將節(jié)點(diǎn)狀態(tài)信息更新到etcd中。kubelet也通過(guò)APIServer的Watch接口監(jiān)聽(tīng)Pod信息,從而對(duì)Node機(jī)器上的POD進(jìn)行管理。ControllerManager與APIServer交互 NodeController模塊通過(guò)APIServer提供的Watch接口,實(shí)時(shí)監(jiān)控Node的信息,并做相應(yīng)處理。Scheduler與APIServer交互
當(dāng)前者通過(guò)server的watch接口監(jiān)聽(tīng)到新建pod副本的信息后,它會(huì)檢索所有符合該pod要求的Node列表,開(kāi)始執(zhí)行pod調(diào)度邏輯,調(diào)度成功后將pod綁定到目標(biāo)節(jié)點(diǎn)上。ControllerManager:負(fù)責(zé)集群中資源對(duì)象管理同步ControllerManager作為集群內(nèi)部的管理控制中心,負(fù)責(zé)集群內(nèi)的Node、Pod副本、服務(wù)端點(diǎn)(Endpoint)、命名空間(Namespace)、服務(wù)賬號(hào)(ServiceAccount)、資源定額(ResourceQuota)等的管理,當(dāng)某個(gè)Node意外宕機(jī)時(shí),ControllerManager會(huì)及時(shí)發(fā)現(xiàn)此故障并執(zhí)行自動(dòng)化修復(fù)流程,確保集群始終處于預(yù)期的工作狀態(tài)。如圖所示,ControllerManager內(nèi)部包含ReplicationController、NodeController、ResourceQuotaController、NamespaceController、ServiceAccountController、TokenController、ServiceCotoller及EndpointController等多個(gè)Contoller,每種Contoller都負(fù)責(zé)一種具體的控制流程,而ControllerManager正是這些Controller的核心管理者。ControllerManager:負(fù)責(zé)集群中資源對(duì)象管理同步ReplicationController(副本控制器)
核心作用是確保在任何時(shí)候集群中一個(gè)RC所關(guān)聯(lián)的Pod副本數(shù)量保持預(yù)設(shè)值。如果發(fā)現(xiàn)Pod副本數(shù)量超過(guò)預(yù)期值,則ReplicationController會(huì)銷毀一些Pod副本;反之,ReplicationController會(huì)自動(dòng)創(chuàng)建新的Pod副本,直到符合條件的Pod副本數(shù)量達(dá)到預(yù)設(shè)值。
使用場(chǎng)景:重新調(diào)度(即時(shí)發(fā)生意外也會(huì)保證特定數(shù)量)、彈性伸縮(動(dòng)態(tài)的擴(kuò)容縮容)、滾動(dòng)更新(逐個(gè)替換輔助滾動(dòng)更新)NodeController(節(jié)點(diǎn)控制器) kubelet進(jìn)程在啟動(dòng)時(shí)通過(guò)APIServer注冊(cè)自身的節(jié)點(diǎn)信息,并定時(shí)向APIServer匯報(bào)狀態(tài)信息,APIServer接收到這些信息后,將這些信息更新到etcd中,etcd中存儲(chǔ)的節(jié)點(diǎn)信息包括節(jié)點(diǎn)健康狀況、節(jié)點(diǎn)資源、節(jié)點(diǎn)名稱、節(jié)點(diǎn)地址信息、操作系統(tǒng)版本、Docker版本、kubelet版本等。節(jié)點(diǎn)健康狀況包含“就緒”(True)“未就緒”(False)和“未知”(Unknown)三種。 NodeController通過(guò)APIServer實(shí)時(shí)獲取Node的相關(guān)信息,實(shí)現(xiàn)管理和監(jiān)控集群中的各個(gè)Node節(jié)點(diǎn)的相關(guān)控制功能,NodeController的核心工作流程如圖所示。ControllerManager:負(fù)責(zé)集群中資源對(duì)象管理同步Scheduler:集群中資源對(duì)象的調(diào)度控制器 KubernetesScheduler在整個(gè)系統(tǒng)中承擔(dān)了“承上啟下”的重要功能,“承上”是指它負(fù)責(zé)接收ContollerManager創(chuàng)建的新Pod,為其安排-一個(gè)落腳的“家”一目標(biāo)Node;“啟下”是指安置工作完成后,目標(biāo)Node上的kubelet服務(wù)進(jìn)程接管后繼工作,負(fù)責(zé)Pod生命周期中的“下半生”。在整個(gè)調(diào)度過(guò)程中涉及三個(gè)對(duì)象,分別是:待調(diào)度Pod列表、可用Node列表,以及調(diào)度算法和策略。簡(jiǎn)單地說(shuō),就是通過(guò)調(diào)度算法調(diào)度為待調(diào)度Pod列表的每個(gè)Pod從Node列表中選擇一個(gè)最適合的Node。流程:0.通過(guò)apiserver來(lái)進(jìn)行主節(jié)點(diǎn)選舉,成功者進(jìn)行調(diào)度業(yè)務(wù)流程處理1.通過(guò)apiserver感知集群的資源數(shù)據(jù)和pod數(shù)據(jù),更新本地schedulerCache2.通過(guò)apiserver感知用戶或者controller的pod調(diào)度請(qǐng)求,加入本地調(diào)度隊(duì)列SchedulingQueue3.通過(guò)調(diào)度算法來(lái)進(jìn)行pod請(qǐng)求的調(diào)度,分配合適的node節(jié)點(diǎn),此過(guò)程可能會(huì)發(fā)生搶占調(diào)度4.將調(diào)度結(jié)果返回給apiserver,然后由kubelet組件進(jìn)行后續(xù)pod的請(qǐng)求處理Scheduler之預(yù)選算法和優(yōu)選算法KubernetesScheduler當(dāng)前提供的默認(rèn)調(diào)度流程分為以下兩步。(1)預(yù)選調(diào)度過(guò)程,即遍歷所有目標(biāo)Node,篩選出符合要求的候選節(jié)點(diǎn)。為此,Kubernetes內(nèi)置了多種預(yù)選策略(xxxPredicates)供用戶選擇。(2)確定最優(yōu)節(jié)點(diǎn),在第1步的基礎(chǔ)上,采用優(yōu)選策略(xxxPriority)計(jì)算出每個(gè)候選節(jié)點(diǎn)的積分,積分最高者勝出。預(yù)選調(diào)度NoDiskConflict:判斷備選Pod的GCEPersistentDisk和備選節(jié)點(diǎn)已存在的Pod是否沖突PodFitsResources:判斷備選節(jié)點(diǎn)的資源是否滿足備選Pod的需求,PodSelectorMatches:判斷備選節(jié)點(diǎn)是否包含備選Pod的標(biāo)簽選擇器指定的標(biāo)簽。PodFitsHost:判斷備選Pod的spec.nodeName域指定的節(jié)點(diǎn)名稱和備選節(jié)點(diǎn)名稱是否一致,PodFitsPorts:判斷備選Pod所用的端口列表中的端口是否在備選節(jié)點(diǎn)中已被占用優(yōu)選調(diào)度LeastRequestedPriority:該優(yōu)選策略用于從備選節(jié)點(diǎn)列表中選出資源消耗最小的節(jié)點(diǎn)CalculateNodeLabelPriority:判斷策略列出的標(biāo)簽在備選節(jié)點(diǎn)中是否存在,存在+10分BalancedResourceAllocation:該優(yōu)選策略用于從備選節(jié)點(diǎn)列表中選出各項(xiàng)資源使用率最均衡的節(jié)點(diǎn)。Kubelet運(yùn)行機(jī)制分析
在Kubernetes集群中,在每個(gè)Node節(jié)點(diǎn)(又稱Minion)上都會(huì)啟動(dòng)一個(gè)kubelet服務(wù)進(jìn)程。該進(jìn)程用于處理Master節(jié)點(diǎn)下發(fā)到本節(jié)點(diǎn)的任務(wù),管理Pod及Pod中的容器。每個(gè)kubelet進(jìn)程會(huì)在APIServer.上注冊(cè)節(jié)點(diǎn)自身信息,定期向Master節(jié)點(diǎn)匯報(bào)節(jié)點(diǎn)資源的使用情況,并通過(guò)cAdvisor監(jiān)控容器和節(jié)點(diǎn)資源。節(jié)點(diǎn)管理kubelet在啟動(dòng)時(shí)通過(guò)APIServer注冊(cè)節(jié)點(diǎn)信息,并定時(shí)向APIServer發(fā)送節(jié)點(diǎn)的新消息,APIServer在接收到這些信息后,將這些信息寫入etcd。Pod管理kubelet監(jiān)聽(tīng)etcd所有針對(duì)Pod的操作將會(huì)被kubelet監(jiān)聽(tīng)到。如果發(fā)現(xiàn)有新的綁定到本節(jié)點(diǎn)的Pod,則按照Pod清單的要求創(chuàng)建該P(yáng)od。如果發(fā)現(xiàn)本地的Pod被修改,則kubelet會(huì)做出相應(yīng)的修改,比如刪除Pod中的某個(gè)容器時(shí),則通過(guò)DockerClient刪除該容器。容器健康檢查cAdvisor資源監(jiān)控
監(jiān)控的對(duì)象包括容器、Pod、Service和整個(gè)集群。通過(guò)暴露RESTAPI暴露這些資源的使用情況的。cAdvisor被集成到Kubernetes代碼中,可以自動(dòng)查找所有在其所在節(jié)點(diǎn)上的容器,自動(dòng)采集CPU、內(nèi)存、文件系統(tǒng)和網(wǎng)絡(luò)使用的統(tǒng)計(jì)信息,并全面分析該節(jié)點(diǎn)機(jī)的使用情況。Pod的健康檢查(Kubelet)LivenessProbe探針
用于判斷容器是否存活(running狀態(tài)),如果LivenessProbe探針探測(cè)到容器不健康,則kubelet將殺掉該容器,并根據(jù)容器的重啟策略做相應(yīng)的處理。如果一個(gè)容器不包含LivenessProbe探針,那么kubelet認(rèn)為該容器的LivenessProbe探針?lè)祷氐闹涤肋h(yuǎn)是“Success“。LivenessProbe探針的三種實(shí)現(xiàn)方式(1)ExecAction:在容器內(nèi)部執(zhí)行一個(gè)命令,如果該命令的返回碼為0,則表明容器健康。(2)TCPSocketAction:通過(guò)容器的IP地址和端口號(hào)執(zhí)行TCP檢查,如果能夠建立TCP連接,則表明容器健康。(3)HTTPGetAction:通過(guò)容器的IP地址、端口號(hào)及路徑調(diào)用HTTPGet方法,如果響應(yīng)的狀態(tài)碼大于等于200且小于等于400,則認(rèn)為容器狀態(tài)健康。Kube-proxy運(yùn)行機(jī)制分析前面提到,Service是對(duì)一組Pod的抽象,它會(huì)根據(jù)訪問(wèn)策略(如負(fù)載均衡策略)來(lái)訪問(wèn)這組Pod。Kubernetes在創(chuàng)建服務(wù)時(shí)會(huì)為服務(wù)分配一個(gè)虛擬的IP地址,客戶端通過(guò)訪問(wèn)這個(gè)虛擬的IP地址來(lái)訪問(wèn)服務(wù),而服務(wù)則負(fù)責(zé)將請(qǐng)求轉(zhuǎn)發(fā)到后端的Pod上。這就類似于一個(gè)反向代理。
而Kubelet-proxy正是這樣一個(gè)透明代理兼負(fù)載均衡器。Kube-proxy運(yùn)行機(jī)制分析Kube-proxy通過(guò)查詢和監(jiān)聽(tīng)APIServer中Service與Endpoints的變化,為每個(gè)Service都建立了一個(gè)“服務(wù)代理對(duì)象”,并自動(dòng)同步。服務(wù)代理對(duì)象是kube-proxy程序內(nèi)部的一種數(shù)據(jù)結(jié)構(gòu),它包括一個(gè)用于監(jiān)聽(tīng)此服務(wù)請(qǐng)求的SocketServer,,SocketServer的端口是隨機(jī)選擇的一個(gè)本地空閑端口。此外,kubeproxy內(nèi)部也創(chuàng)建了一個(gè)負(fù)載均衡器——LoadBalancer,LoadBalancer上保存Service到對(duì)應(yīng)的后端Endpoint列表的動(dòng)態(tài)轉(zhuǎn)發(fā)路由表,而具體的路由選擇則取決于RoundRobin負(fù)載均衡算法及Service的Session會(huì)話保持(SessionAffinity)這兩個(gè)特性。透明代理訪問(wèn)Service的請(qǐng)求,不論是用ClusterIP+TargetPort的方式,還是用節(jié)點(diǎn)機(jī)IP+NodePort的方式,都被節(jié)點(diǎn)機(jī)的Iptables規(guī)則重定向到kube-proxy監(jiān)聽(tīng)Service服務(wù)代理端口。負(fù)載均衡——LoadBalancer
Kube-proxy接收到service的請(qǐng)求后,如何選擇后端的Pod呢?
目前kubeproxy的負(fù)載均衡器只支持RoundRobin算法。RoundRobin算法按照成員列表逐個(gè)選取成員,如果一輪循環(huán)完,便從頭開(kāi)始下一輪,如此循環(huán)往復(fù)。Kubernetes網(wǎng)絡(luò)原理Kubernetes網(wǎng)絡(luò)模型設(shè)計(jì)基礎(chǔ)原則:每個(gè)Pod都擁有一個(gè)獨(dú)立的IP地址,而且假定所有Pod都在一個(gè)可以直接連通的、扁平的網(wǎng)絡(luò)空間中。所以不管它們是否運(yùn)行在同一個(gè)Node(宿主機(jī))中,都要求它們可以直接通過(guò)對(duì)方的IP進(jìn)行訪問(wèn)。設(shè)計(jì)這個(gè)原則的原因是,用戶不需要額外考慮如何建立Pod之間的連接,也不需要考慮將容器端口映射到主機(jī)端口等問(wèn)題。容器到容器的通信在同一個(gè)Pod內(nèi)的容器(Pod內(nèi)的容器是不會(huì)跨宿主機(jī)的)共享同一個(gè)網(wǎng)絡(luò)命名空間,共享同一個(gè)Linux協(xié)議棧。所以對(duì)于網(wǎng)絡(luò)的各類操作,就和它們?cè)谕慌_(tái)機(jī)器上一樣,它們甚至可以localhost地址訪問(wèn)彼此的端口。Kubernetes網(wǎng)絡(luò)原理同一Node上Pod間的通信通過(guò)網(wǎng)橋把veth0和veth1組成為一個(gè)以太網(wǎng),它們直接是可以直接通信的,另外這里通過(guò)veth對(duì)讓Pod1的eth0和veth0、Pod2的eth0和veth1關(guān)聯(lián)起來(lái),從而讓Pod1和Pod2相互通信;Pod1通過(guò)自己默認(rèn)的以太網(wǎng)設(shè)備eth0發(fā)送一個(gè)數(shù)據(jù)包,eth0把數(shù)據(jù)傳遞給veth0,數(shù)據(jù)包到達(dá)網(wǎng)橋后,網(wǎng)橋通過(guò)轉(zhuǎn)發(fā)表把數(shù)據(jù)傳遞給veth1,然后虛擬設(shè)備veth1直接把包傳遞給Pod2網(wǎng)絡(luò)命名空間中的虛擬設(shè)備eth0。Kubernetes網(wǎng)絡(luò)原理不同Node上Pod間的通信首先Po
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年婚禮化妝造型合同
- 2024大數(shù)據(jù)中心存儲(chǔ)設(shè)備采購(gòu)合同
- 2024年度分包合作協(xié)議書(shū)
- 中考狀語(yǔ)課件教學(xué)課件
- 2024年度版權(quán)返租及授權(quán)使用協(xié)議
- 2024年國(guó)際皮毛市場(chǎng)交易合同
- 鄉(xiāng)鎮(zhèn)防汛抗旱救災(zāi)的應(yīng)急預(yù)案(5篇)
- (2024版)灑水車團(tuán)隊(duì)租賃合同(2024版)
- 2024年度軟件許可及技術(shù)支持服務(wù)合同
- 2024年度互聯(lián)網(wǎng)金融服務(wù)平臺(tái)合作協(xié)議
- 走開(kāi)大黑兔“十校聯(lián)賽”一等獎(jiǎng)
- 腫瘤科運(yùn)用PDCA降低癌痛患者爆發(fā)性疼痛發(fā)生率品管圈成果匯報(bào)
- 動(dòng)脈血?dú)夥治霾杉n件
- 10KV供配電工程施工組織設(shè)計(jì)
- 《小學(xué)教育政策與法規(guī)》總資料
- 張愛(ài)玲及《金鎖記》
- 云南花燈教案
- 信任五環(huán):超級(jí)銷售拜訪技巧
- 2023年國(guó)家電網(wǎng)公司電力安全工作規(guī)程版
- 2022年山東菏澤醫(yī)專附院招聘11人筆試備考題庫(kù)及答案解析
- 國(guó)網(wǎng)基建各專業(yè)考試題庫(kù)大全-技經(jīng)專業(yè)(考題匯總)
評(píng)論
0/150
提交評(píng)論