成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

『高級(jí)篇』docker之了解kubernetes(31)-創(chuàng)新互聯(lián)

原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會(huì),謝謝!
原文鏈接地址:『高級(jí)篇』docker之了解kubernetes(31)

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蒲縣免費(fèi)建站歡迎大家使用!

最后一個(gè)服務(wù)編排工具的學(xué)習(xí)k8s。kubernetes其實(shí)源于希臘語意思(舵手,領(lǐng)航員)。猶豫不太好擠也不太好寫,就有了另一個(gè)名稱叫k8s,kubernetes是谷歌在2014年開始實(shí)施的一個(gè)項(xiàng)目,當(dāng)時(shí)google已經(jīng)有了大規(guī)模服務(wù)容器管理的經(jīng)驗(yàn),內(nèi)部Borg系統(tǒng),負(fù)責(zé)對google內(nèi)部的一些服務(wù)進(jìn)行調(diào)度和管理,它的目的是讓用戶不必操心資源管理的問題,讓他們專注自己的核心業(yè)務(wù), 并且大化數(shù)據(jù)中心的利用率。

『高級(jí)篇』docker之了解kubernetes(31)

什么是k8s

我們假設(shè)有個(gè)住戶社區(qū),k8s就相當(dāng)于這個(gè)社區(qū)的大房東,社區(qū)里面有一棟一棟的大樓,大樓可以看做虛擬機(jī)器,俗稱的VM,大樓里面有很多的住戶,每個(gè)住戶就代表一個(gè)pod,那每個(gè)住戶如何找到他們的位置呢?每個(gè)住戶如何找到他們的位置就是通過門牌號(hào),我們就理解為IP的位置,在每個(gè)住戶里面有非常多的家庭成員,爸爸,媽媽,兄弟姐妹,爺爺奶奶,姥爺姥姥,女兒兒子,這些角色就可以理解為container,在這個(gè)pod里面的成員,就共享了這個(gè)房間里面的資源,水電網(wǎng)絡(luò),那些資源就可以把它理解成計(jì)算資源,ipu,內(nèi)存,硬盤。對于大房東k8s,他最主要的功能就是管理,每個(gè)住戶Pod使用多少資源,那為了就是讓整棟大樓,會(huì)更有效率的使用很多資源,舉例來說:A棟大樓住了太多的住戶,太多的Pod,他們直接肯定會(huì)相互競爭資源的問題,那它就可以協(xié)調(diào)某一些pod,就是某一些住戶搬到B大樓去,這樣會(huì)讓變得更加的均衡使用。

  • k8s

    官網(wǎng):https://kubernetes.io/ k8s是一個(gè)自動(dòng)開源系統(tǒng),自動(dòng)化部署,擴(kuò)縮容,管理容器化的應(yīng)用。
    相比前面的mesos 和swarm,k8s的目的非常的單純和明確,簡單的來說他的目的就是為了服務(wù)編排,沒有別的。這么明確的明確的目的。雖然目的簡單但專注所以專業(yè),非常靈活的使用方式,它考慮到服務(wù)服務(wù)落地過程中可能遇到的各種各樣的問題,各種各樣的場景,所以從簡單的入手,吃透它。了解它的所有組件,然后回過頭看它的架構(gòu)。

『高級(jí)篇』docker之了解kubernetes(31)

  • k8s 集群的樣子

    這張圖簡單的描述了,k8s集群的樣子,k8s肯定也需要一個(gè)集群,服務(wù)調(diào)度服務(wù)編排肯定要有機(jī)器,所以需要集群,中間的七邊行是Master節(jié)點(diǎn),可以理解為安裝了核心組件的,另外的六邊形標(biāo)識(shí)的是Node節(jié)點(diǎn),在k8s里面叫worker節(jié)點(diǎn),然后每個(gè)節(jié)點(diǎn)里面有個(gè)kubelet服務(wù)和docker服務(wù),

『高級(jí)篇』docker之了解kubernetes(31)

多了2個(gè)綠色部分,在master里面Deployment。在Node中就是Containerized app就是容器化的應(yīng)用。圖例就是在Master部署了一個(gè)Deployment,在三個(gè)節(jié)點(diǎn)選中了其中的一個(gè)部署了應(yīng)用。Node中的藍(lán)色圓圈標(biāo)識(shí)的是pod。

『高級(jí)篇』docker之了解kubernetes(31)

pod 是k8s中非常重要的一個(gè)概念,所有的應(yīng)用和服務(wù)都是運(yùn)行在pod里面的,pod是k8s中最小的一個(gè)單元,可以理解為k8s的一個(gè)原子,pod里面就是容器。

  1. 第一個(gè)pod有獨(dú)立的IP地址,一個(gè)容器
  2. 第二個(gè)pod有獨(dú)立的Ip地址,一個(gè)容器,一個(gè)磁盤存儲(chǔ)
  3. 第三個(gè)pod有獨(dú)立的Ip地址,兩個(gè)容器,一個(gè)磁盤存儲(chǔ),這2個(gè)容器可以共享IP的,共享網(wǎng)絡(luò),共享磁盤的。
  4. 第三個(gè)pod有獨(dú)立的Ip地址,三個(gè)容器,2個(gè)的磁盤存儲(chǔ),這3個(gè)容器可以共享IP的,共享網(wǎng)絡(luò),共享磁盤的。

PS:通過上邊的4個(gè)小圖,可以明白同一個(gè)pod里面可以有任意多個(gè)容器和存儲(chǔ)。

『高級(jí)篇』docker之了解kubernetes(31)

知道了pod運(yùn)行了容器,pod自己運(yùn)行在哪里啊。運(yùn)行在node,通過kubelet來進(jìn)行的,調(diào)度kuelet把pod運(yùn)行起來。一個(gè)node上面可以運(yùn)行多個(gè)pod。只要資源足夠可以建立多個(gè)pod。

『高級(jí)篇』docker之了解kubernetes(31)

service

  1. 中間是master節(jié)點(diǎn)
  2. 其余的是node節(jié)點(diǎn)
  3. 下面的這個(gè)node,里面運(yùn)行了一個(gè)pod,pod的外邊,有一層虛線,虛線標(biāo)識(shí)service,pod的Ip(10.10.10.1),service(10.10.9.1),service和pod的Ip不同,pod是具體運(yùn)行在一個(gè)node上的,如果pod或者node突然掛掉了,編排工具肯定在其他的node節(jié)點(diǎn)下重新起一個(gè)pod,這個(gè)pod肯定的ip也就變了。所以就需要一個(gè)serivce的概念,當(dāng)pod出問題了,產(chǎn)生一個(gè)新的pod,新的pod就是一個(gè)新的ip,我們就可以通過service的方式找到pod。
  4. serivce的Ip跟service的生命周期是一致的,如果service不被刪除的話,IP一直不發(fā)生變化。
  5. 上邊這個(gè)2個(gè)node,三個(gè)pod,其實(shí)就是從一個(gè)實(shí)例變成了3個(gè)實(shí)例,進(jìn)行了擴(kuò)容,對外提供想通的服務(wù),這時(shí)這個(gè)service,ip就有了另外2個(gè)作用,除了可以定位pod的地址,可以對pod地址進(jìn)行負(fù)載均衡,進(jìn)行輪詢,

『高級(jí)篇』docker之了解kubernetes(31)

service的概念基本了解了,怎么確定哪些pod屬于一個(gè)service,提出一個(gè)service的概念,service可能有一個(gè)或者是多個(gè)pod組成,如何定義service,怎么定義service。在k8s上通過Master的Label Selector的方式,比如s:app=A,s:app=B,有這種標(biāo)簽的確定輸入pod等于A 或者pod等于B,所有標(biāo)簽一樣的都屬于我的小弟。這樣service和pod的耦合就非常松。

『高級(jí)篇』docker之了解kubernetes(31)

PS:(梳理概念)pod里面包括N個(gè)容器,service里面包括pod,Deployment可能包括service或者是pod。

deployment完成應(yīng)用擴(kuò)容

  1. Master里面發(fā)布了一個(gè)Deplyment,想給service 進(jìn)行擴(kuò)容
  2. 其實(shí)內(nèi)部是擴(kuò)容的pod,service只是一個(gè)邏輯存在的東西
  3. 把一組pod形成一個(gè)邏輯組就是service,擴(kuò)容完成后,其他兩個(gè)節(jié)點(diǎn)就有了pod實(shí)例。
  4. service就開始對外的負(fù)載均衡endpoint找到對應(yīng)的pod

『高級(jí)篇』docker之了解kubernetes(31)

『高級(jí)篇』docker之了解kubernetes(31)

滾動(dòng)更新,停掉了一個(gè)舊的pod,啟動(dòng)一個(gè)新的pod,這時(shí)service既有新的,也有舊的存在,直到所有的舊的都更新完畢才結(jié)束。所有的更新和擴(kuò)容的過程serivce的Ip始終是保持不變的。

『高級(jí)篇』docker之了解kubernetes(31)

『高級(jí)篇』docker之了解kubernetes(31)

『高級(jí)篇』docker之了解kubernetes(31)

k8s的整體架構(gòu)

首先從整體上看,上邊這塊就是Master節(jié)點(diǎn),下面有兩塊都是worker節(jié)點(diǎn),master里面部署的都是k8s的核心模塊,虛線框代表的是API Server,提供了資源的核心模塊,提供了認(rèn)證授權(quán)和k8s的訪問控制,可以通過kubectl或者自己開發(fā)的userClient,restApi的形式訪問API server。從而完成整個(gè)集群的訪問。

『高級(jí)篇』docker之了解kubernetes(31)

  1. ControllerManager負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測,擴(kuò)縮容,滾動(dòng)更新等等。
  2. Scheduler負(fù)責(zé)資源的調(diào)度,按照預(yù)定的策略把pod調(diào)度到指定的node節(jié)點(diǎn)
  3. ETCD 用做已執(zhí)行存儲(chǔ),pod,service的集群等信息,k8s需要持久化的數(shù)據(jù)都存儲(chǔ)在這個(gè)上邊。
  4. Kubelet負(fù)責(zé)維護(hù)當(dāng)前節(jié)點(diǎn)上的容器的生命和volumes,網(wǎng)絡(luò)。
  5. 每個(gè)Node上可以運(yùn)行一個(gè)kube-proxy,負(fù)責(zé)service 提供內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡,為service方法做個(gè)落地的功能。
  6. kube-dns負(fù)責(zé)整個(gè)集群的dns服務(wù),這個(gè)組件不是必須的,一般通過名字訪問比較方便。
  7. dashboard集群數(shù)據(jù)的GUI界面。

PS:全過程梳理

  1. kubectl 發(fā)起一個(gè)請求,請求經(jīng)過認(rèn)證。
  2. scheduler的策略和評分計(jì)算得到目標(biāo)的node。
  3. APIServer請求Node,通過kublet把這個(gè)Node運(yùn)行pod起來。
  4. APIServer把信息發(fā)送給ETCD保存起來。
  5. pod運(yùn)行起來之后,通過ControllerManager管理每個(gè)pod的狀態(tài),如果突然掛了,就想辦法創(chuàng)建一個(gè)pod。給pod分個(gè)獨(dú)立的ip地址,可以在整個(gè)集群內(nèi)使用這個(gè)ip來訪問它。但是pod的ip是易變的,異常重啟和升級(jí)的時(shí)候,不可能關(guān)注某個(gè)pod的Ip的。
  6. 下面虛線的部分表示的是一個(gè)service,service里面有3個(gè)pod,不在虛線里面的是單獨(dú)存在的pod,并沒有提供service的入口,完成service的具體工作的模塊就是kube-proxy,在每個(gè)node上都有一個(gè)kube-proxy,然后給service分配一個(gè)ip,可以訪問service里面的pod,所以kube-proxy對應(yīng)的service都會(huì)有一個(gè)ip的指向,負(fù)載均衡的訪問他們。
  7. kube-proxy(service) 可以把端口和ip直接暴露在node上。外邊的請求可以訪問node上的ip就可以關(guān)聯(lián)到這個(gè)service上了。
  8. kube-dns 就是為了方便名字直接訪問node節(jié)點(diǎn)。任何一個(gè)pod都可以通過名字來進(jìn)行訪問。

k8s的設(shè)計(jì)理念

了解設(shè)計(jì)理念可以更深入的了解k8s,設(shè)計(jì)實(shí)在太好了,非常值得我們學(xué)習(xí)和借鑒。

  • API設(shè)計(jì)原則

    1. 所有的api都是聲明式的(對于重復(fù)的操作是穩(wěn)定的,所有的對象都是名詞,不是動(dòng)詞,用戶很容易的期望用戶的樣子,當(dāng)前的系統(tǒng)是否滿足需求,明確用戶的目的,用系統(tǒng)管理的業(yè)務(wù)意圖觸發(fā)設(shè)計(jì))
    2. 控制機(jī)的設(shè)計(jì)原則(假定各種可能存在錯(cuò)誤的可能,并做容錯(cuò)處理,出現(xiàn)局部錯(cuò)誤和臨時(shí)錯(cuò)誤是很正常的事情,錯(cuò)誤可能存在于物理故障磁盤,外部系統(tǒng)的故障啊,系統(tǒng)本身的代碼問題,考慮到任何可能的錯(cuò)誤,并且做容錯(cuò)處理,每個(gè)模塊出現(xiàn)錯(cuò)誤后,恢復(fù)處理,在系統(tǒng)中不可能保證每個(gè)模塊始終是連接的,因此任何一個(gè)模塊都要有自動(dòng)修復(fù)的能力,保證連接不到其他模塊而形成的自我崩潰。很多情況下可以做到優(yōu)雅的降級(jí),要求在設(shè)計(jì)的過程中,有基本功能和高級(jí)功能,同時(shí)不會(huì)導(dǎo)致高級(jí)功能的崩潰,影響到這個(gè)模塊 的使用,更容易的引入高級(jí)功能,而會(huì)導(dǎo)致高級(jí)功能影響基本功能。)
  • k8s網(wǎng)絡(luò)

    1. CNI
    2. Flannel,Calico,Weave
    3. Pod網(wǎng)絡(luò)
  • scheduler-preselect

    1. NodiskConflict 掛載沖突
    2. checkNodeMemMemoryPressure 內(nèi)存的壓力
    3. Nodeselect 節(jié)點(diǎn)的選擇器
    4. FitRescoure CPU,內(nèi)存的限制
    5. Affinity 滿足pod的連接狀態(tài)的限制
  • scheduler-optimize-select

    優(yōu)先規(guī)則,對node進(jìn)行打分,通過優(yōu)先函數(shù)進(jìn)行預(yù)選規(guī)則,每個(gè)優(yōu)先函數(shù)可以返回0-10的函數(shù),分?jǐn)?shù)越高,這臺(tái)主機(jī)越適合,對應(yīng)一個(gè)權(quán)重。

  1. selectorSpreadPriority
  2. LeastRequestedPriority
  3. AffinityPriority
  • pod內(nèi)部通訊
    『高級(jí)篇』docker之了解kubernetes(31)

  • 同一個(gè)node上的不同pod通訊

    通過pod的Ip來進(jìn)行訪問

『高級(jí)篇』docker之了解kubernetes(31)

  • 不同的node,不同的pod通訊

    滿足pod,ip不能沖突

『高級(jí)篇』docker之了解kubernetes(31)

k8s的服務(wù)發(fā)現(xiàn)

  • kube-proxy(ClusterIp)

    每個(gè)服務(wù),所有的pod給虛擬Ip,虛擬Ip只能在內(nèi)部訪問

  • kube-proxy(NodePort)

    服務(wù)暴露到節(jié)點(diǎn),外部的可以通過NodeIp 訪問pod

  • kube-DNS

    負(fù)責(zé)集群內(nèi)部的dns解析,內(nèi)部之間可以通過名稱訪問pod。

PS:k8s的理論就講這么多,重點(diǎn)還是實(shí)踐,下次開始搭建k8s集群

『高級(jí)篇』docker之了解kubernetes(31)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文題目:『高級(jí)篇』docker之了解kubernetes(31)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://jinyejixie.com/article14/dioide.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作、網(wǎng)站維護(hù)ChatGPT、電子商務(wù)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)
太仓市| 依兰县| 泾源县| 璧山县| 阿巴嘎旗| 商城县| 尼玛县| 安达市| 开平市| 临朐县| 建湖县| 南陵县| 金溪县| 鄂伦春自治旗| 六枝特区| 大冶市| 土默特左旗| 临朐县| 兴和县| 文山县| 京山县| 阿巴嘎旗| 永宁县| 永安市| 镇安县| 阳谷县| 区。| 晋城| 金华市| 乐山市| 塘沽区| 莲花县| 南华县| 林周县| 湾仔区| 银川市| 阿合奇县| 吴桥县| 木兰县| 天台县| 巴彦县|