一、Kubernetes是什么


            要說到Docker就不得不說說Kubernetes。當(dāng)Docker容器在微服務(wù)的環(huán)境下數(shù)量一多,那么統(tǒng)一的,自動(dòng)化的管理自然少不了。而Kubernetes就是一個(gè)這樣的工具,它不僅僅提供了健康檢查和自修復(fù),還有自動(dòng)擴(kuò)容縮容,以及服務(wù)發(fā)現(xiàn)和負(fù)載均衡等等功能。
          總的來說它使我們對于大量的Docker容器管理更加的方便。

          二、Kubernetes整體架構(gòu)圖及對應(yīng)功能分析



          ?

            1、kubectl:
          這是相當(dāng)于用戶客戶端一樣,也是我們較常使用的命令行工具,通過這個(gè)工具可以發(fā)起對應(yīng)的請求到master節(jié)點(diǎn)中,當(dāng)然自己開發(fā)的客戶端同樣可以
          通過HTTP協(xié)議發(fā)起對應(yīng)的RESTAPI請求訪問APIServer。

            2、Master:
          Master節(jié)點(diǎn)是整個(gè)Kubernetes的核心節(jié)點(diǎn),主要職責(zé)是負(fù)責(zé)調(diào)度,即應(yīng)用放在哪里運(yùn)行,同樣為了高可用可運(yùn)行多個(gè)Master。而Master中主要有APIServer,ControllerManager,Scheduler,Etcd,Kube-dns。對應(yīng)的職責(zé)分別如下:

            2.1、APIServer:
          提供了資源操作的唯一入口,注意其他節(jié)點(diǎn)是無法被外面請求操作的(不是說內(nèi)部運(yùn)行的容器無法被訪問,而是說無法通過發(fā)請求的方式直接操作Node),只有Master節(jié)點(diǎn)才能接受外面的請求進(jìn)行操作Node節(jié)點(diǎn),其中主要提供了認(rèn)證、授權(quán)、訪問控制整個(gè)集群
          。而dashboard是提供了一個(gè)展示界面。

            2.2、Scheduler:負(fù)責(zé)資源的調(diào)度,根據(jù)一定的調(diào)度策略,將對應(yīng)Node上面的Pod運(yùn)行起來。

            2.3、ControllerManager:
          負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測,擴(kuò)縮容,滾動(dòng)更新。在Pod運(yùn)行起來,就由ControllerManager負(fù)責(zé)管理其狀態(tài)

            2.4、ETCD:
          用于一致性存儲(chǔ),保存pod,service等等的Kubernetes狀態(tài)。這里可以理解為MySQL在我們?nèi)粘m?xiàng)目中的存儲(chǔ)作用,只要是用于存取Kubernetes中所有的持久化數(shù)據(jù)。

            2.5、Kube-dns:DNS組件負(fù)責(zé)整個(gè)集群的DNS服務(wù)。使得內(nèi)部Pod相互之間可通過名字訪問
          。有了這個(gè)功能就不需要寫繁瑣的IP地址,通過服務(wù)的名字即可訪問對方。

            3、Node:理解為分支節(jié)點(diǎn),
          主要作用在于提供Kubernetes運(yùn)行時(shí)的環(huán)境,以及維護(hù)Pod。內(nèi)部主要有Kubblet,kube-proxy,docker等

            3.1、Kubblet:
          通過Master發(fā)送的請求到Node分支上的Kubblet,然后就由Kubblet負(fù)責(zé)維護(hù)當(dāng)前節(jié)點(diǎn)上容器的生命周期,也負(fù)責(zé)維護(hù)當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)卷及網(wǎng)絡(luò)。

            3.2、Kube-proxy:提供內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡??梢栽趫D上看見虛線框起來的三個(gè)框,可以認(rèn)為這三個(gè)Pod算是一個(gè)服務(wù),即service,
          而外部可通過Kube-proxy暴露的端口來進(jìn)行統(tǒng)一的訪問。并且默認(rèn)是使用輪詢的負(fù)載均衡策略來訪問。

          三、Pod詳解

            Pod作為Kubernetes的核心資源,這里單獨(dú)拿出來解釋。在Kubernetes集群中,Pod是所有業(yè)務(wù)類型的基礎(chǔ),
          它是一個(gè)或多個(gè)容器的組合,也就是Pod內(nèi)部可以有多個(gè)Docker容器存在,不是一個(gè)Pod代表一個(gè)容器,注意區(qū)分概念
          。在其中的這些容器共享存儲(chǔ)、網(wǎng)絡(luò)和命名空間,以及如何運(yùn)行的規(guī)范。在Pod中,所有容器都被同一安排和調(diào)度,并運(yùn)行在共享的上下文中。對于具體應(yīng)用而言,Pod是它們的邏輯主機(jī),Pod包含業(yè)務(wù)相關(guān)的多個(gè)應(yīng)用容器。這些容器可以通過localhost發(fā)現(xiàn)彼此。
          每一個(gè)Pod有自己的一個(gè)IP地址。

            1、Pod工作方式


              在Kubernetes中一般不會(huì)直接創(chuàng)建一個(gè)獨(dú)立的Pod,這是因?yàn)镻od是臨時(shí)存在的一個(gè)實(shí)體。當(dāng)直接創(chuàng)建一個(gè)獨(dú)立的Pod時(shí),如果缺少資源或者所被調(diào)度到的Node失敗,則Pod會(huì)直接被刪除。這里需要注意的是,
          重起Pod和重起Pod中的容器不是一個(gè)概念,Pod自身不會(huì)運(yùn)行,它只是容器所運(yùn)行的一個(gè)環(huán)境
          。Pod本身沒有自愈能力,如果Pod所在的Node失敗,或者如果調(diào)度操作本身失敗,則Pod將會(huì)被刪除;同樣的,如果缺少資源,Pod也會(huì)失敗。Kubernetes使用高層次的抽象,即控制器來管理臨時(shí)的Pod。通過控制器能夠創(chuàng)建和管理多個(gè)Pod,并在集群范圍內(nèi)處理副本、部署和提供自愈能力。

            2、重啟策略


              Pod既然內(nèi)部運(yùn)行著容器,那么免不了會(huì)因?yàn)楫惓5仍驅(qū)е缕浣K止退出,Pod支持三種重啟策略,需要在配置文件中通過restartPolicy字段設(shè)置重啟策略:

              Always:只要退出就會(huì)重啟

              OnFailure:只有在失敗退出(即exit code不等于0時(shí)),才會(huì)重啟

              Never:只要退出就不再重啟

            3、鏡像拉取策略


              前一篇博客有講容器與鏡像的概念,在Kubernetes中運(yùn)行容器時(shí),需要為容器獲取鏡像。Pod中容器的鏡像有三個(gè)來源,即Docker公共鏡像倉庫、私有鏡像倉庫和本地鏡像。當(dāng)在內(nèi)網(wǎng)使用的Kubernetes場景下,就需要搭建和使用私有鏡像倉庫。Pod支持三種鏡像拉取策略,在配置文件中通過imagePullPolicy字段設(shè)置鏡像拉取策略:

              Always:不管本地是否存在鏡像都會(huì)進(jìn)行一次拉取

              Never:不管本地是否存在鏡像都不會(huì)進(jìn)行拉取

              IfNotPresent:僅在本地鏡像不存在時(shí),才會(huì)進(jìn)行鏡像拉取


            這里有需要注意的點(diǎn):鏡像拉取策略的默認(rèn)值IfNotPresent,但:lastest標(biāo)簽的鏡像默認(rèn)為Always。所以生產(chǎn)環(huán)境中避免使用:lastest標(biāo)簽。還有就是拉取鏡像時(shí)docker會(huì)進(jìn)行校驗(yàn),如果鏡像中的MD5碼沒有變,則不會(huì)拉取鏡像數(shù)據(jù)。

            4、資源限制


              Kubernetes通過cgroups來限制容器的CPU和內(nèi)存等計(jì)算資源,在創(chuàng)建Pod時(shí),可以為Pod中的每個(gè)容器設(shè)置資源請求(request)和資源限制(limit),
          資源請求是容器需要的最小資源要求,資源限制為容器所能使用的資源上限。CPU的單位是核(core),內(nèi)存(Memory)的單位是字節(jié)(byte)。

            5、終止Pod


              在集群中,Pod代表運(yùn)行的進(jìn)程,但不再需要這些進(jìn)程時(shí),如何優(yōu)雅的終止這些進(jìn)程是非常重要的。當(dāng)用戶請求刪除一個(gè)Pod時(shí),Kubernetes將會(huì)發(fā)送一個(gè)終止信號(hào)給每個(gè)容器,一旦過了優(yōu)雅期,就會(huì)發(fā)送kill信號(hào),從而通過APIServer刪除Pod。
          通常默認(rèn)的優(yōu)雅退出時(shí)間為30s。緩慢關(guān)閉的Pod依然可以對外繼續(xù)服務(wù),直到負(fù)載均衡器將其移除,當(dāng)超過優(yōu)雅的退出時(shí)間,在Pod中任何正在運(yùn)行的進(jìn)程都會(huì)被kill。

          四、Pod的生命周期

            1、Pending

              Pod已經(jīng)被Kubernetes系統(tǒng)接受,但是還有一個(gè)或者多個(gè)容器鏡像未被創(chuàng)建。這包括Pod正在被調(diào)度和從網(wǎng)絡(luò)上下載鏡像的時(shí)間。

            2、Running

              Pod已經(jīng)被綁定到了一個(gè)Node,所有容器已經(jīng)被創(chuàng)建,至少有一個(gè)容器在運(yùn)行

            3、Succeeded

              在Pod中所有容器已經(jīng)被成功停止,并且不再重啟

            4、Failed

              在Pod中所有容器已經(jīng)被終止,并且至少有一個(gè)容器是非正常終止的,即容器以非零狀態(tài)退出或者被系統(tǒng)強(qiáng)行終止的。

            5、Unknown

              Pod在某些原因下不能被獲取。通常是網(wǎng)絡(luò)問題。

          五、service圖


            前面有說到Docker目前在微服務(wù)架構(gòu)運(yùn)行的很廣泛,而Kubernetes作為編排Docker容器的強(qiáng)大工具自然是我們的首選。而Kubernetes又是怎么和微服務(wù)結(jié)合起來的呢?



          ?

            上面有說到Pod擁有自己的IP地址,實(shí)際上在Pod外面還包裹著一層Service,
          這個(gè)Service是邏輯存在的,在最上面的架構(gòu)圖中就類似kube-proxy串在一起的三個(gè)Pod,而service的IP是由kube-proxy給我們提供。
          這就是與微服務(wù)之間能夠連起來了。其中同一個(gè)service的Pod應(yīng)該是相同的,kube-proxy會(huì)自動(dòng)給我們做負(fù)載均衡,默認(rèn)使用輪詢
          。同樣與Docker不相同的是Pod之間是可以通過名字直接訪問的,Node同樣也是,這就為我們的服務(wù)調(diào)用提供了很便利的方式。

          六、總結(jié)


            Kubernetes是一個(gè)容器編排及其自動(dòng)化管理的工具。隨著業(yè)務(wù)增長Docker容器越來越多,如果需要每一個(gè)自己手動(dòng)管理,那么將會(huì)翻倍的增加我們的工作量。所以Kubernetes是我們在學(xué)習(xí)Docker中需要進(jìn)階的知識(shí)。

           

          ?

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                成人做爰黄A片免费看直播室动漫 | 超碰在线播 | 不伦 的搜索结果 - 91n | 啃咬揉捏胸乳bl 啊啊啊好爽好深 | 9色在线视频 |