精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么實現一個容器編排系統呢?

jf_TEuU2tls ? 來源:阿里云云原生 ? 2024-01-08 09:46 ? 次閱讀

1 故事開始

隨著消費者購買力的不斷提升,用戶擁有越來越多的電子快消品。小李預計在未來五年內,二手電子快消品市場將會迅速擴張。小李覺得這是一個創業的好機會,于是找到了我和幾個志同道合的小伙伴開始了創業,決定做一個叫“XX”的平臺。

2 故事發展

旗魚一開始是一個 all in one 的 Java 應用,部署在一臺物理機上,隨著業務的發展,發現機器已經快扛不住了,就趕緊對服務器的規格做了升級,從 64C256G 一路升到了 160C1920G,雖然成本高了點,但是系統至少沒出問題。

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

分布式改完了后,我們管理的服務器又多起來了,不同批次的服務器,硬件規格、操作系統版本等等都不盡相同,于是應用運行和運維的各種問題就出來了。

還好有虛擬機技術,把底層各種硬件和軟件的差異,通過虛擬化技術都給屏蔽掉啦,雖然硬件不同,但是對于應用來說,看到的都是一樣的啦,但是虛擬化又產生了很大的性能開銷。

嗯,不如使用類似 docker 的技術,比如 podman,因為容器技術在屏蔽底層差異的同時,也沒有明顯的性能影響,真是一個好東西。而且基于容器鏡像的業務交付,使得 CI/CD 的運作也非常的容易啦~

隨著容器數量的增長,又不得不面對新的難題,就是大量的容器如何調度與通信?畢竟隨著業務發展,公司規模日益增長,線上運行著幾千個容器,并且按照現在的業務發展趨勢,馬上就要破萬了。

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

我們給這個系統取一個名字,就叫做容器編排系統吧。

3 容器編排系統

那么問題來了,面對一堆的服務器,我們要怎么實現一個容器編排系統呢?

先假設已經實現了這個編排系統,那么服務器就會有一部分會用來運行這個編排系統,剩下的服務器用來運行業務容器,我們將運行編排系統的服務器叫做 master 節點,把運行業務容器的服務器叫做 worker 節點。

既然 master 節點負責管理服務器集群,那它就必須要提供出相關的管理接口,一個是方便運維管理員對集群進行相關的操作,另一個就是負責和 worker 節點進行交互,比如進行資源的分配、網絡的管理等。

我們把 master 上提供管理接口的組件稱為 kube apiserver,對應的還需要兩個用于和 api server 交互的客戶端,一個是提供給集群的運維管理員使用的,我們稱為 kubectl;一個是提供給 worker 節點使用的,我們稱為 kubelet。

那 master 又是怎么知道各個 worker 上的資源消耗和容器的運行情況的呢?這個簡單,我們可以通過 worker 上的 kubelet 周期性的主動上報節點資源和容器運行的情況,然后 master 將這個數據存儲下來,后面就可以用來做調度和容器的管理使用了。

至于數據怎么存儲,我們可以寫文件、寫 db 等等,不過有一個開源的存儲系統叫 etcd,滿足數據一致性和高可用的要求,同時安裝簡單、性能又好,我們就選 etcd 吧。

現在我們已經有了所有 worker 節點和容器運行的數據,我們可以做的事情就非常多了。比如前面所說的,我們使用用戶中心 2.0 版本的鏡像創建了 1000 個容器,其中有5個容器都是運行在 A worker 節點上,如果 A 這個節點突然出現了硬件故障,導致節點不可用了,這個時候 master 就要將 A 從可用 worker 節點中摘除掉,并且還需要把原先運行在這個節點上的 5 個用戶中心 2.0 的容器重新調度到其他可用的 worker 節點上,使得用戶中心 2.0 的容器數量能夠重新恢復到 1000 個,并且還需要對相關的容器進行網絡通信配置的調整,使得容器間的通信還是正常的。

我們把這一系列的組件稱為控制器,比如節點控制器、副本控制器、端點控制器等等,并且為這些控制器提供一個統一的運行組件,稱為控制器管理器(kube-controller-manager)。

那 master 又該如何實現和管理容器間的網絡通信呢?首先每個容器肯定需要有一個唯一的 ip 地址,通過這個 ip 地址就可以互相通信了,但是彼此通信的容器有可能運行在不同的 worker 節點上,這就涉及到 worker 節點間的網絡通信,因此每個 worker 節點還需要有一個唯一的 ip 地址,但是容器間通信都是通過容器 ip 進行的,容器并不感知 worker 節點的 ip 地址,因此在 worker 節點上需要有容器 ip 的路由轉發信息,我們可以通過 iptables、ipvs 等技術來實現。

那如果容器 ip 變化了,或者容器數量變化了,這個時候相關的 iptables、ipvs 的配置就需要跟著進行調整,所以在 worker 節點上我們需要一個專門負責監聽并調整路由轉發配置的組件,我們把這個組件稱為 kube proxy(此處為了便于理解,就不展開引入 Service 的內容了)。

我們已經解決了容器間的網絡通信,但是在我們編碼的時候,我們希望的是通過域名或者 vip 等方式來調用一個服務,而不是通過一個可能隨時會變化的容器 ip。因此我們需要在容器 ip 之上在封裝出一個 Service 的概念,這個 Service 可以是一個集群的 vip,也可以是一個集群的域名,為此我們還需要一個集群內部的 DNS 域名解析服務。

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

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

至此,我們已經成功構建了一個容器編排系統,我們來簡單總結下上面提到的各個組成部分:

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

Node 組件:kubelet、kube-proxy

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

審核編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    15886

    瀏覽量

    175390
  • DNS
    DNS
    +關注

    關注

    0

    文章

    211

    瀏覽量

    19700
  • 網絡通信
    +關注

    關注

    4

    文章

    770

    瀏覽量

    29695
  • 容器
    +關注

    關注

    0

    文章

    490

    瀏覽量

    21986

原文標題:【老司機略過】這是我見過的最容易理解的K8S知識了~

文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    數據編排支持人工智能(AI)的下步發展

    深度學習的快速發展給大規模實現該技術所需的硬件架構帶來了巨大壓力。盡管由于意識到性能是絕對要求,因此業界高度關注峰值TOPS分數,但智能數據編排和管理策略提供了
    發表于 09-24 16:14 ?4004次閱讀
    數據<b class='flag-5'>編排</b>支持人工智能(AI)的下<b class='flag-5'>一</b>步發展

    100容器周邊項目,點亮你的容器集群技能樹

    摘要: 大規模的容器技術運用從來不是項獨立工程,而是匯集虛擬化技術、容器編排、任務調度、操
    發表于 05-22 18:39

    K8S容器編排的互通測試

    K8S容器編排之NetWorkPolicy官方實例
    發表于 06-06 11:28

    kubernetes系統基本概念

    文帶你看透kubernetes 容器編排系統
    發表于 11-05 08:26

    LCD漢字編排軟件

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

    基于DOCKER容器的ELK日志收集系統分析

    針對Docker容器集群中日志的收集和集中處理的問題。本文采用Docker Swarm和Etcd實現容器的管理、服務發現以及調度,并為分布式系統提供支撐。使用主流的開源日志收集
    發表于 11-06 14:15 ?3次下載
    基于DOCKER<b class='flag-5'>容器</b>的ELK日志收集<b class='flag-5'>系統</b>分析

    平臺式慣導系統的力學編排詳細資料說明

    平臺式慣導系統的力學編排是指實現正確控制慣性平臺和解算導航參數的方案和方程,包括平臺指令角速度的計算公式、速度和位置的解算方程。
    發表于 03-30 08:00 ?0次下載
    平臺式慣導<b class='flag-5'>系統</b>的力學<b class='flag-5'>編排</b>詳細資料說明

    異構容器云應用遷移系統研究綜述

    和 Docker Swarm的應用編排調度策略,給出兩者之間編排信息轉換的可行方法,并提出基于鏡像預同步的應用遷移技術。實驗結果表明,A- Migrator異構容器云應用遷移系統
    發表于 06-09 14:15 ?8次下載

    如何實現秒殺系統

    實現秒殺系統,采用spring boot 2.x + mybatis+ redis + swagger2 + lombok實現
    的頭像 發表于 09-15 09:56 ?2040次閱讀

    什么是流程/規則編排

    以上兩種基本代表了傳統的編排思想,在簡單的例子下,看起來也是非常直觀,但,當變動發生時,尤其是需要靈活調整的場景,他們的表現又如何
    的頭像 發表于 09-21 10:04 ?1837次閱讀

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

    薄膜電容器通用的優點,那就是可以自愈,別的電子元器件內部如果損壞,可能就無法正常使用,但薄膜電容器卻可以自動修復內部的瑕疵點,它具體是怎么實現
    的頭像 發表于 06-08 17:13 ?698次閱讀

    應用容器化后性能下降怎么辦?

    隨著越來越多的公司擁抱云原生,從原先的單體應用演變為微服務,應用的部署方式也從虛機變為容器化,容器編排組件k8s也成為大多數公司的標配。然而在容器化以后,我們發現應用的性能比原先在虛擬
    發表于 08-28 09:52 ?273次閱讀
    應用<b class='flag-5'>容器</b>化后性能下降怎么辦?

    Jenkins pipeline是如何連接Kubernetes的

    Kubernetes 是開源的容器編排平臺,可以幫助開發團隊管理和部署容器化的應用程序。
    的頭像 發表于 10-23 11:13 ?1711次閱讀
    Jenkins pipeline是如何連接Kubernetes的<b class='flag-5'>呢</b>?

    iSulad Sandbox API簡化容器調用鏈

    沙箱隔離技術是種將進程隔離到獨立環境中運行的技術,可以有效地隔離進程間的相互影響,提高系統的安全性。隨著容器技術的興起,沙箱隔離技術也在云原生領域中得到了廣泛的應用。例如容器
    的頭像 發表于 11-20 17:08 ?530次閱讀
    iSulad Sandbox API簡化<b class='flag-5'>容器</b>調用鏈

    Docker容器實現開機自動啟動策略

    如果你的容器依賴于其他服務(例如數據庫或其他容器),你需要確保這些服務在你的容器啟動之前就已經可用。這可以通過編排工具如Docker Compose來管理,或者通過編寫自定義的啟動腳本
    的頭像 發表于 03-11 10:33 ?2218次閱讀