在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎么實(shí)現(xiàn)一個(gè)容器編排系統(tǒng)呢?

jf_TEuU2tls ? 來(lái)源:阿里云云原生 ? 2024-01-08 09:46 ? 次閱讀

1 故事開(kāi)始

隨著消費(fèi)者購(gòu)買力的不斷提升,用戶擁有越來(lái)越多的電子快消品。小李預(yù)計(jì)在未來(lái)五年內(nèi),二手電子快消品市場(chǎng)將會(huì)迅速擴(kuò)張。小李覺(jué)得這是一個(gè)創(chuàng)業(yè)的好機(jī)會(huì),于是找到了我和幾個(gè)志同道合的小伙伴開(kāi)始了創(chuàng)業(yè),決定做一個(gè)叫“XX”的平臺(tái)。

2 故事發(fā)展

旗魚(yú)一開(kāi)始是一個(gè) all in one 的 Java 應(yīng)用,部署在一臺(tái)物理機(jī)上,隨著業(yè)務(wù)的發(fā)展,發(fā)現(xiàn)機(jī)器已經(jīng)快扛不住了,就趕緊對(duì)服務(wù)器的規(guī)格做了升級(jí),從 64C256G 一路升到了 160C1920G,雖然成本高了點(diǎn),但是系統(tǒng)至少?zèng)]出問(wèn)題。

業(yè)務(wù)發(fā)展了一年后,160C1920G 也扛不住了,不得不進(jìn)行服務(wù)化拆分、分布式改造了。為了解決分布式改造過(guò)程中的各種問(wèn)題,引入了一系列的中間件,類似 hsf、tddl、tair、diamond、metaq 這些,在艱難的業(yè)務(wù)架構(gòu)改造后,我們成功的把 all in one 的 Java 應(yīng)用拆分成了多個(gè)小應(yīng)用,重走了一遍阿里當(dāng)年中間件發(fā)展和去 IOE 的道路。

分布式改完了后,我們管理的服務(wù)器又多起來(lái)了,不同批次的服務(wù)器,硬件規(guī)格、操作系統(tǒng)版本等等都不盡相同,于是應(yīng)用運(yùn)行和運(yùn)維的各種問(wèn)題就出來(lái)了。

還好有虛擬機(jī)技術(shù),把底層各種硬件和軟件的差異,通過(guò)虛擬化技術(shù)都給屏蔽掉啦,雖然硬件不同,但是對(duì)于應(yīng)用來(lái)說(shuō),看到的都是一樣的啦,但是虛擬化又產(chǎn)生了很大的性能開(kāi)銷。

嗯,不如使用類似 docker 的技術(shù),比如 podman,因?yàn)槿萜骷夹g(shù)在屏蔽底層差異的同時(shí),也沒(méi)有明顯的性能影響,真是一個(gè)好東西。而且基于容器鏡像的業(yè)務(wù)交付,使得 CI/CD 的運(yùn)作也非常的容易啦~

隨著容器數(shù)量的增長(zhǎng),又不得不面對(duì)新的難題,就是大量的容器如何調(diào)度與通信?畢竟隨著業(yè)務(wù)發(fā)展,公司規(guī)模日益增長(zhǎng),線上運(yùn)行著幾千個(gè)容器,并且按照現(xiàn)在的業(yè)務(wù)發(fā)展趨勢(shì),馬上就要破萬(wàn)了。

不行,我們一定要做一個(gè)系統(tǒng),這個(gè)系統(tǒng)能夠自動(dòng)的管理服務(wù)器(比如是不是健康啊,剩下多少內(nèi)存和 CPU 可以使用啊等等)、然后根據(jù)容器聲明所需的 CPU 和 memory 選擇最優(yōu)的服務(wù)器進(jìn)行容器的創(chuàng)建,并且還要能夠控制容器和容器之間的通信(比如說(shuō)某個(gè)部門的內(nèi)部服務(wù),當(dāng)然不希望其他部門的容器也能夠訪問(wèn))。

我們給這個(gè)系統(tǒng)取一個(gè)名字,就叫做容器編排系統(tǒng)吧。

3 容器編排系統(tǒng)

那么問(wèn)題來(lái)了,面對(duì)一堆的服務(wù)器,我們要怎么實(shí)現(xiàn)一個(gè)容器編排系統(tǒng)呢?

先假設(shè)已經(jīng)實(shí)現(xiàn)了這個(gè)編排系統(tǒng),那么服務(wù)器就會(huì)有一部分會(huì)用來(lái)運(yùn)行這個(gè)編排系統(tǒng),剩下的服務(wù)器用來(lái)運(yùn)行業(yè)務(wù)容器,我們將運(yùn)行編排系統(tǒng)的服務(wù)器叫做 master 節(jié)點(diǎn),把運(yùn)行業(yè)務(wù)容器的服務(wù)器叫做 worker 節(jié)點(diǎn)。

既然 master 節(jié)點(diǎn)負(fù)責(zé)管理服務(wù)器集群,那它就必須要提供出相關(guān)的管理接口,一個(gè)是方便運(yùn)維管理員對(duì)集群進(jìn)行相關(guān)的操作,另一個(gè)就是負(fù)責(zé)和 worker 節(jié)點(diǎn)進(jìn)行交互,比如進(jìn)行資源的分配、網(wǎng)絡(luò)的管理等。

我們把 master 上提供管理接口的組件稱為 kube apiserver,對(duì)應(yīng)的還需要兩個(gè)用于和 api server 交互的客戶端,一個(gè)是提供給集群的運(yùn)維管理員使用的,我們稱為 kubectl;一個(gè)是提供給 worker 節(jié)點(diǎn)使用的,我們稱為 kubelet。

那 master 又是怎么知道各個(gè) worker 上的資源消耗和容器的運(yùn)行情況的呢?這個(gè)簡(jiǎn)單,我們可以通過(guò) worker 上的 kubelet 周期性的主動(dòng)上報(bào)節(jié)點(diǎn)資源和容器運(yùn)行的情況,然后 master 將這個(gè)數(shù)據(jù)存儲(chǔ)下來(lái),后面就可以用來(lái)做調(diào)度和容器的管理使用了。

至于數(shù)據(jù)怎么存儲(chǔ),我們可以寫(xiě)文件、寫(xiě) db 等等,不過(guò)有一個(gè)開(kāi)源的存儲(chǔ)系統(tǒng)叫 etcd,滿足數(shù)據(jù)一致性和高可用的要求,同時(shí)安裝簡(jiǎn)單、性能又好,我們就選 etcd 吧。

現(xiàn)在我們已經(jīng)有了所有 worker 節(jié)點(diǎn)和容器運(yùn)行的數(shù)據(jù),我們可以做的事情就非常多了。比如前面所說(shuō)的,我們使用用戶中心 2.0 版本的鏡像創(chuàng)建了 1000 個(gè)容器,其中有5個(gè)容器都是運(yùn)行在 A worker 節(jié)點(diǎn)上,如果 A 這個(gè)節(jié)點(diǎn)突然出現(xiàn)了硬件故障,導(dǎo)致節(jié)點(diǎn)不可用了,這個(gè)時(shí)候 master 就要將 A 從可用 worker 節(jié)點(diǎn)中摘除掉,并且還需要把原先運(yùn)行在這個(gè)節(jié)點(diǎn)上的 5 個(gè)用戶中心 2.0 的容器重新調(diào)度到其他可用的 worker 節(jié)點(diǎn)上,使得用戶中心 2.0 的容器數(shù)量能夠重新恢復(fù)到 1000 個(gè),并且還需要對(duì)相關(guān)的容器進(jìn)行網(wǎng)絡(luò)通信配置的調(diào)整,使得容器間的通信還是正常的。

我們把這一系列的組件稱為控制器,比如節(jié)點(diǎn)控制器、副本控制器、端點(diǎn)控制器等等,并且為這些控制器提供一個(gè)統(tǒng)一的運(yùn)行組件,稱為控制器管理器(kube-controller-manager)。

那 master 又該如何實(shí)現(xiàn)和管理容器間的網(wǎng)絡(luò)通信呢?首先每個(gè)容器肯定需要有一個(gè)唯一的 ip 地址,通過(guò)這個(gè) ip 地址就可以互相通信了,但是彼此通信的容器有可能運(yùn)行在不同的 worker 節(jié)點(diǎn)上,這就涉及到 worker 節(jié)點(diǎn)間的網(wǎng)絡(luò)通信,因此每個(gè) worker 節(jié)點(diǎn)還需要有一個(gè)唯一的 ip 地址,但是容器間通信都是通過(guò)容器 ip 進(jìn)行的,容器并不感知 worker 節(jié)點(diǎn)的 ip 地址,因此在 worker 節(jié)點(diǎn)上需要有容器 ip 的路由轉(zhuǎn)發(fā)信息,我們可以通過(guò) iptables、ipvs 等技術(shù)來(lái)實(shí)現(xiàn)。

那如果容器 ip 變化了,或者容器數(shù)量變化了,這個(gè)時(shí)候相關(guān)的 iptables、ipvs 的配置就需要跟著進(jìn)行調(diào)整,所以在 worker 節(jié)點(diǎn)上我們需要一個(gè)專門負(fù)責(zé)監(jiān)聽(tīng)并調(diào)整路由轉(zhuǎn)發(fā)配置的組件,我們把這個(gè)組件稱為 kube proxy(此處為了便于理解,就不展開(kāi)引入 Service 的內(nèi)容了)。

我們已經(jīng)解決了容器間的網(wǎng)絡(luò)通信,但是在我們編碼的時(shí)候,我們希望的是通過(guò)域名或者 vip 等方式來(lái)調(diào)用一個(gè)服務(wù),而不是通過(guò)一個(gè)可能隨時(shí)會(huì)變化的容器 ip。因此我們需要在容器 ip 之上在封裝出一個(gè) Service 的概念,這個(gè) Service 可以是一個(gè)集群的 vip,也可以是一個(gè)集群的域名,為此我們還需要一個(gè)集群內(nèi)部的 DNS 域名解析服務(wù)。

另外雖然我們已經(jīng)有了 kubectl,可以很愉快的和 master 進(jìn)行交互了,但是如果有一個(gè) web 的管理界面,這肯定是一個(gè)更好的事情。此處之外,我們可能還希望看到容器的資源信息、整個(gè)集群相關(guān)組件的運(yùn)行日志等等。

像 DNS、web 管理界面、容器資源信息、集群日志,這些可以改善我們使用體驗(yàn)的組件,我們統(tǒng)稱為插件。

至此,我們已經(jīng)成功構(gòu)建了一個(gè)容器編排系統(tǒng),我們來(lái)簡(jiǎn)單總結(jié)下上面提到的各個(gè)組成部分:

Master 組件:kube-apiserver、kube-scheduler、etcd、kube-controller-manager

Node 組件:kubelet、kube-proxy

插件:DNS、用戶界面 Web UI、容器資源監(jiān)控、集群日志

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    114

    文章

    16972

    瀏覽量

    182926
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    225

    瀏覽量

    20273
  • 網(wǎng)絡(luò)通信
    +關(guān)注

    關(guān)注

    4

    文章

    824

    瀏覽量

    30747
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    507

    瀏覽量

    22366

原文標(biāo)題:【老司機(jī)略過(guò)】這是我見(jiàn)過(guò)的最容易理解的K8S知識(shí)了~

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)據(jù)編排支持人工智能(AI)的下步發(fā)展

    深度學(xué)習(xí)的快速發(fā)展給大規(guī)模實(shí)現(xiàn)該技術(shù)所需的硬件架構(gòu)帶來(lái)了巨大壓力。盡管由于意識(shí)到性能是個(gè)絕對(duì)要求,因此業(yè)界高度關(guān)注峰值TOPS分?jǐn)?shù),但智能數(shù)據(jù)編排和管理策略提供了
    發(fā)表于 09-24 16:14 ?4114次閱讀
    數(shù)據(jù)<b class='flag-5'>編排</b>支持人工智能(AI)的下<b class='flag-5'>一</b>步發(fā)展

    100個(gè)容器周邊項(xiàng)目,點(diǎn)亮你的容器集群技能樹(shù)

    摘要: 大規(guī)模的容器技術(shù)運(yùn)用從來(lái)不是項(xiàng)獨(dú)立工程,而是個(gè)匯集虛擬化技術(shù)、容器編排、任務(wù)調(diào)度、操
    發(fā)表于 05-22 18:39

    K8S容器編排的互通測(cè)試

    K8S容器編排之NetWorkPolicy官方實(shí)例
    發(fā)表于 06-06 11:28

    kubernetes系統(tǒng)基本概念

    文帶你看透kubernetes 容器編排系統(tǒng)
    發(fā)表于 11-05 08:26

    LCD漢字編排軟件

    LCD漢字編排軟件LCD漢字編排軟件LCD漢字編排軟件LCD漢字編排軟件
    發(fā)表于 12-28 14:31 ?7次下載

    基于DOCKER容器的ELK日志收集系統(tǒng)分析

    針對(duì)Docker容器集群中日志的收集和集中處理的問(wèn)題。本文采用Docker Swarm和Etcd實(shí)現(xiàn)容器的管理、服務(wù)發(fā)現(xiàn)以及調(diào)度,并為分布式系統(tǒng)提供支撐。使用主流的開(kāi)源日志收集
    發(fā)表于 11-06 14:15 ?3次下載
    基于DOCKER<b class='flag-5'>容器</b>的ELK日志收集<b class='flag-5'>系統(tǒng)</b>分析

    異構(gòu)容器云應(yīng)用遷移系統(tǒng)研究綜述

    和 Docker Swarm的應(yīng)用編排調(diào)度策略,給出兩者之間編排信息轉(zhuǎn)換的可行方法,并提出基于鏡像預(yù)同步的應(yīng)用遷移技術(shù)。實(shí)驗(yàn)結(jié)果表明,A- Migrator異構(gòu)容器云應(yīng)用遷移系統(tǒng)
    發(fā)表于 06-09 14:15 ?8次下載

    如何實(shí)現(xiàn)個(gè)秒殺系統(tǒng)

    實(shí)現(xiàn)個(gè)秒殺系統(tǒng),采用spring boot 2.x + mybatis+ redis + swagger2 + lombok實(shí)現(xiàn)
    的頭像 發(fā)表于 09-15 09:56 ?2418次閱讀

    什么是流程/規(guī)則編排

    以上兩種基本代表了傳統(tǒng)的編排思想,在簡(jiǎn)單的例子下,看起來(lái)也是非常直觀,但,當(dāng)變動(dòng)發(fā)生時(shí),尤其是需要靈活調(diào)整的場(chǎng)景,他們的表現(xiàn)又如何
    的頭像 發(fā)表于 09-21 10:04 ?2243次閱讀

    為什么薄膜電容器可以自愈

    薄膜電容器個(gè)通用的優(yōu)點(diǎn),那就是可以自愈,別的電子元器件內(nèi)部如果損壞,可能就無(wú)法正常使用,但薄膜電容器卻可以自動(dòng)修復(fù)內(nèi)部的瑕疵點(diǎn),它具體是怎么實(shí)現(xiàn)
    的頭像 發(fā)表于 06-08 17:13 ?1162次閱讀

    應(yīng)用容器化后性能下降怎么辦?

    隨著越來(lái)越多的公司擁抱云原生,從原先的單體應(yīng)用演變?yōu)槲⒎?wù),應(yīng)用的部署方式也從虛機(jī)變?yōu)?b class='flag-5'>容器化,容器編排組件k8s也成為大多數(shù)公司的標(biāo)配。然而在容器化以后,我們發(fā)現(xiàn)應(yīng)用的性能比原先在虛擬
    發(fā)表于 08-28 09:52 ?475次閱讀
    應(yīng)用<b class='flag-5'>容器</b>化后性能下降怎么辦?

    Jenkins pipeline是如何連接Kubernetes的

    Kubernetes 是個(gè)開(kāi)源的容器編排平臺(tái),可以幫助開(kāi)發(fā)團(tuán)隊(duì)管理和部署容器化的應(yīng)用程序。
    的頭像 發(fā)表于 10-23 11:13 ?2008次閱讀
    Jenkins pipeline是如何連接Kubernetes的<b class='flag-5'>呢</b>?

    并聯(lián)電容器可以改變線路潮流嗎?

    在電力系統(tǒng)中,如何調(diào)節(jié)電路潮流直是個(gè)關(guān)鍵的問(wèn)題,而并聯(lián)電容器的應(yīng)用可以很好地解決這個(gè)問(wèn)題。那么,究竟什么是并聯(lián)電
    的頭像 發(fā)表于 11-13 14:42 ?1121次閱讀
    并聯(lián)電<b class='flag-5'>容器</b>可以改變線路潮流嗎?

    iSulad Sandbox API簡(jiǎn)化容器調(diào)用鏈

    沙箱隔離技術(shù)是種將進(jìn)程隔離到獨(dú)立環(huán)境中運(yùn)行的技術(shù),可以有效地隔離進(jìn)程間的相互影響,提高系統(tǒng)的安全性。隨著容器技術(shù)的興起,沙箱隔離技術(shù)也在云原生領(lǐng)域中得到了廣泛的應(yīng)用。例如容器
    的頭像 發(fā)表于 11-20 17:08 ?889次閱讀
    iSulad Sandbox API簡(jiǎn)化<b class='flag-5'>容器</b>調(diào)用鏈

    Docker容器實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)啟動(dòng)策略

    如果你的容器依賴于其他服務(wù)(例如數(shù)據(jù)庫(kù)或其他容器),你需要確保這些服務(wù)在你的容器啟動(dòng)之前就已經(jīng)可用。這可以通過(guò)編排工具如Docker Compose來(lái)管理,或者通過(guò)編寫(xiě)自定義的啟動(dòng)腳本
    的頭像 發(fā)表于 03-11 10:33 ?3349次閱讀
    主站蜘蛛池模板: 女人张开腿给男人桶爽免费 | 国产午夜爽爽窝窝在线观看 | 一卡二卡卡四卡无人区中文 | 久久亚洲国产精品五月天 | 亚洲国产午夜看片 | aaaa视频| 手机福利在线观看 | 天天插天天狠 | 欧美军同video69视频 | 嫩草影院入口一二三免费 | 色视频大全 | 四虎永久免费地址 | 久久视频精品线视频在线网站 | 四虎www成人影院免费观看 | 亚洲伊人电影 | 午夜操操 | 97色爱| 日本免费视频 | 激情五月综合婷婷 | 久久精品伊人波多野结 | 久久影视免费体验区午夜啪啪 | 日本在线黄 | 天天狠天天天天透在线 | 四虎永久免费网站免费观看 | 一级大片免费观看 | 97蜜桃| 免费一区二区 | 国产产一区二区三区久久毛片国语 | 97人人看 | xxxx曰本 | 日本在线视频一区二区三区 | 免费看黄色片的软件 | 四虎影院永久免费观看 | 欧美男女交性过程视频 | 四虎国产精品影库永久免费 | 久久久中文| 91精品久久久久含羞草 | 欧美一区二区三区性 | 色天使久久综合网天天 | 午夜精品久久久久久久久 | 免费爱爱网址 |