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

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

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

k8s架構(gòu)篇:服務(wù)部署模式是如何變遷的

馬哥Linux運維 ? 來源:csdn ? 2023-10-15 15:39 ? 次閱讀

kubernetes,簡稱 K8s,是用 8 代替中間 8 個字符 “ubernete” 而成的縮寫,是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,Kubernetes 的目標是讓部署容器化的應(yīng)用簡單并且高效(powerful),Kubernetes 提供了應(yīng)用部署,規(guī)劃,更新,維護的一種機制。

k8s 在企業(yè)中的應(yīng)用場景

首先我們了解一下 k8s 的三個基本特點:

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可擴展: 模塊化,插件化,可掛載,可組合

自動化: 自動部署,自動重啟,自動復(fù)制,自動伸縮/擴展

自動化運維平臺

對于中小型企業(yè),為了降本增效,使用 k8s 來構(gòu)建一套自動化運維平臺,提供了應(yīng)用部署,規(guī)劃,更新,維護的一種機制。 對于大型互聯(lián)網(wǎng)公司更要使用容器化部署?,F(xiàn)在服務(wù)器越來越多,不可能都人工部署,需要使用自動化的運維平臺來監(jiān)控服務(wù),來實現(xiàn)自動服務(wù)化的部署、運維。

充分利用服務(wù)器資源

假設(shè)現(xiàn)在有一個開發(fā)量為 200 個的請求,服務(wù)器配置為 2cpus 4G

靜態(tài)請求:150(訪問 CDN,Nginx,cache 等)

動態(tài)請求:50(訪問數(shù)據(jù)庫,需要把數(shù)據(jù)讀入內(nèi)存)

估算服務(wù)器資源(只考慮內(nèi)存,不考慮程序響應(yīng)時間RT,不考慮CPU切換時間) 假設(shè)一個靜態(tài)請求進程占用2M,一個動態(tài)請求進程占用10M,則這200個請求并發(fā)占用:150×2M + 50×10M = 800M 內(nèi)存 可以支持的 QPS (批發(fā)量,每秒查詢率) 為:200×4=800(因為 800 M× 4 < 4G) 因此如果要充分利用服務(wù)器資源,需要達到 QPS=800,此時占用內(nèi)存 3.2G(剩下 0.8G 給 OS 等) 實際上:800QPS 無法達到,還要考慮 RT、CPU 切換、內(nèi)存等因素,那就保守把 QPS=300,但這時沒能充分利用服務(wù)器的資源。更何況當下服務(wù)器配置可不止 2cpus 4G 容器化解決方案,在服務(wù)器部署多個容器,容器當中運行著我們部署的各種服務(wù)

0b90baaa-6a68-11ee-939d-92fbcf53809c.png

服務(wù)無縫遷移

在開發(fā)環(huán)境開發(fā),然后拿到測試環(huán)境去測試,但往往一上線就會有 bug,因為應(yīng)用的運行、配置、管理、所有生存周期將與當前操作系統(tǒng)綁定,所以生產(chǎn)環(huán)境的不一致就可能導致錯誤。 使用容器化解決方案,每個應(yīng)用可以被打包成一個容器鏡像(紅色圈起來表示把服務(wù)部署在容器中),使用容器可以在 開發(fā) 或 測試 的階段,為應(yīng)用創(chuàng)建容器鏡像,這些鏡像能夠完全脫離環(huán)境,每個應(yīng)用不需要與其余的應(yīng)用堆棧組合,也不依賴于生產(chǎn)環(huán)境基礎(chǔ)結(jié)構(gòu),這使得從研發(fā)到測試、生產(chǎn)能提供一致環(huán)境。使用 kubernetes 來管理這些容器,便能夠?qū)崿F(xiàn)服務(wù)的無縫遷移。

0ba1fee6-6a68-11ee-939d-92fbcf53809c.png

服務(wù)部署模式變遷 & 服務(wù)部署變化問題的思考

服務(wù)部署模式是如何變遷的

物理機:傳統(tǒng)的應(yīng)用部署方式是通過插件或腳本來安裝應(yīng)用。這樣做的缺點是應(yīng)用的運行、配置、管理、所有生存周期將與當前操作系統(tǒng)綁定,這樣做并不利于應(yīng)用的升級更新/回滾等操作。

虛擬化 (虛擬機):當然上面的問題可以通過創(chuàng)建虛擬機的方式來實現(xiàn)某些功能,但是虛擬機本身就很占用資源,并不利于可移植性。(就是把服務(wù)部署在虛擬機中,達到分隔物理資源的作用——充分利用服務(wù)器資源)

容器部署:每個容器之間互相隔離,每個容器有自己的文件系統(tǒng) ,容器之間進程不會相互影響,能區(qū)分計算資源。相對于虛擬機,容器能快速部署,由于容器與底層設(shè)施、機器文件系統(tǒng)解耦的,所以它能在不同云、不同版本操作系統(tǒng)間進行遷移。而且更輕量級、運行效率更快。

服務(wù)部署模式變化,帶來了哪些問題

前提條件:SOA 架構(gòu),微服務(wù)架構(gòu)模式下,服務(wù)拆分越來越多,部署維護的服務(wù)越來越多,該如何管理? 虛擬機服務(wù)部署方式(通過 openstack 軟件提供可視化的方式來管理虛擬機) 容器化部署模式(通過 k8s 軟件管理容器,其實容器也可以看成一個虛擬機,只不過更輕量級) 容器化部署問題:

如何對服務(wù)橫向擴展?

容器宕機怎么辦?如何恢復(fù)?

重新發(fā)布版本如何更新且更新后不影響業(yè)務(wù)?

如何監(jiān)控容器?

容器如何調(diào)度創(chuàng)建?

數(shù)據(jù)安全性如何保證?

使用 k8s 管理容器,以上問題都能夠完美的解決

云架構(gòu) & 云原生

云 和 k8s 的關(guān)系

云:使用容器構(gòu)建的一套服務(wù)集群網(wǎng)絡(luò),云是由很多的容器構(gòu)成。 k8s:用來管理云中的容器

云架構(gòu)

iaas:基礎(chǔ)設(shè)施即服務(wù)

用戶角度:租用(購買或分配權(quán)限)云主機,用戶不用考慮網(wǎng)絡(luò)、DNS、存儲和硬件環(huán)境等方面的問題。 運營商角度:提供網(wǎng)絡(luò)、DNS、存儲等這樣的服務(wù)就叫做基礎(chǔ)設(shè)置服務(wù)

paas:平臺即服務(wù)

在平臺上提供了很多服務(wù),如 MySQL 服務(wù)、Redis 服務(wù)、MQ 服務(wù)、Elasticsearch 服務(wù)等等

saas:軟件即服務(wù)

釘釘、財務(wù)管理等等,一些軟件維護工作都是由運行商來做,用戶只管體驗軟件提供的服務(wù)就行了。

serverless:server 服務(wù),less 無 —— 無服務(wù) 不需要服務(wù)器

站在用戶角度考慮問題,用戶只需要使用云服務(wù)器即可。 在云服務(wù)器上的所有的基礎(chǔ)環(huán)境、軟件環(huán)境都不需要考慮和維護,非常方便。 未來開發(fā)的趨勢都是 severless,企業(yè)都構(gòu)建了自己的私有云或者公有云環(huán)境。使用 k8s 構(gòu)建非常方便。

云原生

為了讓應(yīng)用程序(項目,服務(wù)軟件)都運行在云上的解決方案,這樣方案叫做云原生,有以下特點:

容器化:所有的服務(wù)都必須部署在容器中。

微服務(wù):web 服務(wù)架構(gòu)是微服務(wù)架構(gòu)

CI/CD:可持續(xù)交互和可持續(xù)部署

DevOps:開發(fā)和運維密不可分

kubernetes 架構(gòu)原理

k8s 的歷史

k8s 是由 Google 公司 用go 語言開發(fā)的。google 在全球有相當多的服務(wù)器,當然需要一個管理軟件。Google內(nèi)部本身就有一個叫 borg 的系統(tǒng)云平臺管理工具,已經(jīng)使用了十幾年。后來參照 borg 系統(tǒng)架構(gòu)開發(fā)了 k8s,主要用它來編排、管理容器,為容器化的應(yīng)用提供部署運行、資源調(diào)度、服務(wù)發(fā)現(xiàn)和動態(tài)伸縮等一系列完整功能,提高了大規(guī)模容器集群管理的便捷性。

k8s 的架構(gòu)

k8s 集群(Cluster)

0bae4dc2-6a68-11ee-939d-92fbcf53809c.png

一個 master 對應(yīng)一群 node 節(jié)點

master 節(jié)點

0bbc2410-6a68-11ee-939d-92fbcf53809c.png

api server:相當于 k8s 的網(wǎng)關(guān),所有的指令請求都必須經(jīng)過 api server

scheduler:調(diào)度器,使用調(diào)度算法,把請求資源調(diào)度到某個 node 節(jié)點

controller:控制器,維護 k8s 資源對象(CRUD:添加、刪除、更新、修改)

etcd:存儲資源對象(可以服務(wù)注冊、發(fā)現(xiàn)等等)

node 節(jié)點

0bc7e976-6a68-11ee-939d-92fbcf53809c.png

docker:運行容器的基礎(chǔ)環(huán)境,容器引擎

kubelet:每個 node 節(jié)點都有一份kubelet,在 node 節(jié)點上的資源操作指令由 kuberlet 來執(zhí)行,scheduler 把請求交給api ,然后 api sever 再把信息指令數(shù)據(jù)存儲在 etcd 里,于是 kuberlet 會掃描 etcd 并獲取指令請求,然后去執(zhí)行

kube-proxy:代理服務(wù),負載均衡

fluentd:日志收集服務(wù)

pod:k8s 管理的基本單元(最小單元),pod 內(nèi)部是容器。k8s 不直接管理容器,而是管理 pod

回顧架構(gòu)特點

k8s 是用來管理容器的,但是不直接操作容器,最小的操作單元是 pod(間接管理容器)

一個 master 對應(yīng)一群 node 節(jié)點。

master 節(jié)點不存儲容器,只負責調(diào)度,網(wǎng)關(guān),控制器,資源對象存儲等

容器存儲在 node 節(jié)點 的 pod 內(nèi)部

pod 內(nèi)部可以有一個或多個容器

kubelet 負責本地的 pod 的維護,CRUD

kube-proxy 負責負載均衡,在多個 pod 間負載均衡
編輯:黃飛

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

    關(guān)注

    68

    文章

    11006

    瀏覽量

    215086
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9585

    瀏覽量

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

    關(guān)注

    0

    文章

    503

    瀏覽量

    22312
  • 進程
    +關(guān)注

    關(guān)注

    0

    文章

    206

    瀏覽量

    14178
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    236

    瀏覽量

    8905

原文標題:通俗易懂 k8s ——架構(gòu)篇

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    全面提升,阿里云Docker/Kubernetes(K8S) 日志解決方案與選型對比

    摘要: 今天,日志服務(wù)再次升級Kubernetes(k8s)的日志解決方案。1分鐘內(nèi)即可完成整個集群部署,支持動態(tài)擴容,提供采集宿主機日志、容器日志、容器stdout等所有數(shù)據(jù)源的一站式采集。點此
    發(fā)表于 02-28 12:49

    如何利用K8S全面擁抱微服務(wù)架構(gòu)?

    K8S是第一個將“一切以服務(wù)為中心,一切圍繞服務(wù)運轉(zhuǎn)”作為指導思想的創(chuàng)新型產(chǎn)品,它的功能和架構(gòu)設(shè)計自始至終都遵循了這一指導思想,構(gòu)建在K8S
    的頭像 發(fā)表于 10-08 15:59 ?2.7w次閱讀

    OpenStack與K8s結(jié)合的兩種方案的詳細介紹和比較

    OpenStack與K8S結(jié)合主要有兩種方案。一是K8S部署在OpenStack平臺之上,二是K8S和OpenStack組件集成。
    的頭像 發(fā)表于 10-14 09:38 ?2.8w次閱讀

    Docker不香嗎為什么還要用K8s

    。 關(guān)于 K8s 的基本概念我們將會圍繞如下七點展開: Docker 的管理痛點 什么是 K8s? 云架構(gòu) 云原生 K8s 架構(gòu)原理
    的頭像 發(fā)表于 06-02 11:56 ?3588次閱讀

    簡單說明k8s和Docker之間的關(guān)系

    這篇文章主要介紹了k8s和Docker關(guān)系簡單說明,本文利用圖文講解的很透徹,有需要的同學可以研究下 最近項目用到kubernetes(以下簡稱k8s,ks之間有
    的頭像 發(fā)表于 06-24 15:48 ?3583次閱讀

    K8S集群服務(wù)訪問失敗怎么辦 K8S故障處理集錦

    問題1:K8S集群服務(wù)訪問失??? ? ? 原因分析:證書不能被識別,其原因為:自定義證書,過期等。 解決方法:更新證書即可。 問題2:K8S集群服務(wù)訪問失??? curl: (7) Fa
    的頭像 發(fā)表于 09-01 11:11 ?1.6w次閱讀
    <b class='flag-5'>K8S</b>集群<b class='flag-5'>服務(wù)</b>訪問失敗怎么辦 <b class='flag-5'>K8S</b>故障處理集錦

    mysql部署k8s上的實現(xiàn)方案

    的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。這里主要講 mysql 部署k8s 上,mysql 部署
    的頭像 發(fā)表于 09-26 10:39 ?2715次閱讀

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes簡稱K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用,Kubernetes的目標是讓部署容器化的應(yīng)用簡單并且高效(powerful
    發(fā)表于 07-19 13:14 ?1244次閱讀

    什么是K3sK8s?K3sK8s有什么區(qū)別?

    Kubernetes,通??s寫為 K8s,是領(lǐng)先的容器編排工具。該開源項目最初由 Google 開發(fā),幫助塑造了現(xiàn)代編排的定義。該系統(tǒng)包括了部署和運行容器化系統(tǒng)所需的一切。
    的頭像 發(fā)表于 08-03 10:53 ?8079次閱讀

    K8S落地實踐經(jīng)驗分享

    k8s 即 Kubernetes,是一個開源的容器編排引擎,用來對容器化應(yīng)用進行自動化部署、 擴縮和管理。
    的頭像 發(fā)表于 01-02 11:45 ?1410次閱讀
    <b class='flag-5'>K8S</b>落地實踐經(jīng)驗分享

    常用的k8s容器網(wǎng)絡(luò)模式有哪些?

    常用的k8s容器網(wǎng)絡(luò)模式包括Bridge模式、Host模式、Overlay模式、Flannel模式
    的頭像 發(fā)表于 09-19 11:29 ?463次閱讀

    服務(wù)部署k8s需要什么配置?

    服務(wù)部署K8s需要至少2核CPU、4GB內(nèi)存、50GBSSD存儲的主節(jié)點用于管理集群,工作節(jié)點建議至少2核CPU、2GB內(nèi)存、20GBSSD。還需安裝Docker,選擇兼容的Kubernetes版本,配置網(wǎng)絡(luò)插件,以及確保系
    的頭像 發(fā)表于 10-09 15:31 ?372次閱讀

    混合云部署k8s集群方法有哪些?

    混合云部署k8s集群方法是首先需在本地與公有云分別建立K8s集群,并確保網(wǎng)絡(luò)連接。接著,配置kubeconfig文件連接兩集群,并安裝云服務(wù)插件以實現(xiàn)資源互通。然后,編寫Deploym
    的頭像 發(fā)表于 11-07 09:37 ?370次閱讀

    k8s服務(wù)架構(gòu)就是云原生嗎?兩者是什么關(guān)系

    k8s服務(wù)架構(gòu)就是云原生嗎?K8s服務(wù)架構(gòu)并不等同于云原生,但兩者之間存在密切的聯(lián)系。Kub
    的頭像 發(fā)表于 11-25 09:39 ?379次閱讀

    k8s和docker區(qū)別對比,哪個更強?

    部署、擴展、管理和應(yīng)用生命周期管理能力,可實現(xiàn)高可用性和自動伸縮,兩者常結(jié)合使用以優(yōu)化容器化和應(yīng)用管理。UU云小編將對k8s和docker區(qū)別進行詳細對比:
    的頭像 發(fā)表于 12-11 13:55 ?446次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品