最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

如何理解K8S的體系架構(gòu)?

2023-11-20 17:01 作者:北京IT學(xué)院  | 我要投稿

K8S架構(gòu)定義

K8S是一個(gè)開源的容器部署和管理平臺(tái)。它提供容器編排、容器運(yùn)行時(shí)、以容器為中心的基礎(chǔ)設(shè)施編排、負(fù)載平衡、自我修復(fù)機(jī)制和服務(wù)發(fā)現(xiàn)。K8S體系結(jié)構(gòu),有時(shí)也稱為K8S應(yīng)用程序部署體系結(jié)構(gòu)或K8S客戶端-服務(wù)器體系結(jié)構(gòu),用于跨主機(jī)集群組成、擴(kuò)展、部署和管理應(yīng)用程序容器。

運(yùn)行K8S的環(huán)境由以下基本組件組成:控制平面(K8Scontrolplane)、用于保持集群狀態(tài)一致性的分布式密鑰值存儲(chǔ)系統(tǒng)(etcd)和集群節(jié)點(diǎn)(Kubelets,也稱為工作節(jié)點(diǎn)或小黃人)。


圖中描繪了一個(gè)K8S體系結(jié)構(gòu)圖,其中包含不同的組件,如控制平面、節(jié)點(diǎn)、pod等等。


有關(guān)K8S技術(shù)的相關(guān)技術(shù)講解, 你可以在中培IT學(xué)院的虛擬化容器技術(shù)Docker+K8s課程中找到。課程收益包括但不限于Kubernetes(K8s)的架構(gòu)與應(yīng)用;掌握基于Docker和Kubernetes的企業(yè)應(yīng)用架構(gòu);掌握基于虛擬化容器Docker與Kubernetes的體系架構(gòu)、管理、部署,以及相應(yīng)組件的原理和應(yīng)用場(chǎng)景;讓學(xué)員具備部署基于企業(yè)虛擬化云平臺(tái)環(huán)境的能力。以下是有關(guān)K8S架構(gòu)的常見問題:


什么是K8S架構(gòu)?

K8S集群是K8S部署體系結(jié)構(gòu)的一種形式。K8S的基本架構(gòu)分為兩部分:控制平面和節(jié)點(diǎn)或計(jì)算機(jī)。每個(gè)節(jié)點(diǎn)可以是物理機(jī),也可以是虛擬機(jī),并且是自己的Linux環(huán)境。每個(gè)節(jié)點(diǎn)還運(yùn)行由容器組成的pod。

K8S架構(gòu)組件或K8s組件包括K8S控制平面和集群中的節(jié)點(diǎn)??刂破矫鏅C(jī)組件包括K8Sneneneba API服務(wù)器、K8S調(diào)度程序、Kuberneses控制器管理器等。K8S節(jié)點(diǎn)組件包括一個(gè)容器運(yùn)行時(shí)引擎或docker、一個(gè)Kubelet服務(wù)和一個(gè)K8S代理服務(wù)。

K8S控制平面

控制平面是控制集群的K8S集群架構(gòu)組件所在的神經(jīng)中樞。它還維護(hù)集群所有K8S對(duì)象的配置和狀態(tài)的數(shù)據(jù)記錄。

K8S控制平面與計(jì)算機(jī)保持持續(xù)聯(lián)系,以確保集群按配置運(yùn)行??刂破黜憫?yīng)集群更改來管理對(duì)象狀態(tài),并驅(qū)動(dòng)系統(tǒng)對(duì)象的實(shí)際、觀察到的狀態(tài)或當(dāng)前狀態(tài)以匹配所需的狀態(tài)或規(guī)范。

幾個(gè)主要組件包括控制平面:API服務(wù)器、調(diào)度程序、控制器管理器等等。這些核心K8S組件確保容器在足夠數(shù)量的必要資源下運(yùn)行。這些組件都可以在一個(gè)主節(jié)點(diǎn)上運(yùn)行,但許多關(guān)心容錯(cuò)的企業(yè)會(huì)在多個(gè)節(jié)點(diǎn)上復(fù)制它們,以實(shí)現(xiàn)高可用性。

K8S?API服務(wù)器

作為K8S控制平面的前端,API服務(wù)器通過為各種類型的應(yīng)用程序提供API來支持更新、擴(kuò)展和其他類型的生命周期編排??蛻舳吮仨毮軌驈募和獠吭L問API服務(wù)器,因?yàn)樗洚?dāng)網(wǎng)關(guān),支持每個(gè)階段的生命周期編排。在這個(gè)角色中,客戶端使用API服務(wù)器作為通向pod、服務(wù)和節(jié)點(diǎn)的隧道,并通過API服務(wù)器進(jìn)行身份驗(yàn)證。

K8S調(diào)度器

K8S調(diào)度器存儲(chǔ)每個(gè)計(jì)算節(jié)點(diǎn)的資源使用數(shù)據(jù);確定集群是否健康;并確定是否應(yīng)該部署新容器,如果應(yīng)該,則確定它們應(yīng)該放置在哪里。調(diào)度器通常會(huì)考慮集群的健康狀況以及pod的資源需求,例如CPU或內(nèi)存。然后,它選擇適當(dāng)?shù)挠?jì)算節(jié)點(diǎn)并調(diào)度任務(wù)、pod或服務(wù),同時(shí)考慮資源限制或保證、數(shù)據(jù)位置、服務(wù)質(zhì)量要求、反親和性和親和性規(guī)范以及其他因素。

K8S控制器管理器

K8S生態(tài)系統(tǒng)中有各種控制器,它們驅(qū)動(dòng)端點(diǎn)(pod和服務(wù))、令牌和服務(wù)帳戶(命名空間)、節(jié)點(diǎn)和復(fù)制(自動(dòng)縮放)的狀態(tài)。控制器管理器——有時(shí)被稱為云控制器管理器或簡(jiǎn)稱為控制器——是一個(gè)使用多個(gè)控制器函數(shù)運(yùn)行K8S集群的守護(hù)進(jìn)程。

控制器在運(yùn)行K8S核心控制循環(huán)時(shí)監(jiān)視它在集群中管理的對(duì)象。它通過API服務(wù)器觀察它們的期望狀態(tài)和當(dāng)前狀態(tài)。如果被管理對(duì)象的當(dāng)前狀態(tài)和所需狀態(tài)不匹配,則控制器采取糾正措施將對(duì)象狀態(tài)推向所需狀態(tài)。K8S控制器還執(zhí)行核心生命周期功能。

ETCD


分布式和容錯(cuò)etcd是一個(gè)開源的鍵值存儲(chǔ)數(shù)據(jù)庫(kù),用于存儲(chǔ)配置數(shù)據(jù)和有關(guān)集群狀態(tài)的信息。etcd可以在外部配置,盡管它通常是K8S控制平面的一部分。

etcd基于Raft一致性算法存儲(chǔ)集群狀態(tài)。這有助于處理在復(fù)制的狀態(tài)機(jī)上下文中出現(xiàn)的常見問題,并涉及多個(gè)服務(wù)器就值達(dá)成一致。Raft定義了三個(gè)不同的角色:領(lǐng)導(dǎo)者、候選人和追隨者,并通過選舉領(lǐng)導(dǎo)者來達(dá)成共識(shí)。

通過這種方式,etcd充當(dāng)所有K8S集群組件的單一真值源(SSOT),響應(yīng)來自控制平面的查詢,并檢索容器、節(jié)點(diǎn)和pods狀態(tài)的各種參數(shù)。etcd還用于存儲(chǔ)配置詳細(xì)信息,如ConfigMaps、子網(wǎng)和Secrets,以及集群狀態(tài)數(shù)據(jù)。


K8S集群體系結(jié)構(gòu)

由控制平面管理的集群節(jié)點(diǎn)是運(yùn)行容器的機(jī)器。每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)代理,用于與控制平面通信,kubelet是主K8S控制器。每個(gè)節(jié)點(diǎn)還運(yùn)行容器運(yùn)行時(shí)引擎,如Docker或rkt。該節(jié)點(diǎn)還運(yùn)行用于監(jiān)視、日志記錄、服務(wù)發(fā)現(xiàn)和可選附加的其他組件。

下面是一些重點(diǎn)關(guān)注的K8S集群組件:

節(jié)點(diǎn)

K8S集群必須至少有一個(gè)計(jì)算節(jié)點(diǎn),盡管它可能有許多計(jì)算節(jié)點(diǎn),這取決于對(duì)容量的需求。已編排并計(jì)劃在節(jié)點(diǎn)上運(yùn)行Pods,因此需要更多節(jié)點(diǎn)來擴(kuò)展集群容量。

節(jié)點(diǎn)為K8S集群執(zhí)行工作。它們連接應(yīng)用程序和網(wǎng)絡(luò)、計(jì)算和存儲(chǔ)資源。

節(jié)點(diǎn)可以是數(shù)據(jù)中心中的云本機(jī)虛擬機(jī)(VM)或裸機(jī)服務(wù)器。

容器運(yùn)行時(shí)引擎

每個(gè)計(jì)算節(jié)點(diǎn)使用容器運(yùn)行時(shí)引擎運(yùn)行和管理容器生命周期。K8S支持開放容器計(jì)劃兼容的運(yùn)行時(shí),如Docker、CRI-O和rkt。Kubelet服務(wù)

每個(gè)計(jì)算節(jié)點(diǎn)都包括一個(gè)kubelet,這是一個(gè)與控制平面通信的代理,以確保pod中的容器正在運(yùn)行。當(dāng)控制平面需要在節(jié)點(diǎn)中發(fā)生特定操作時(shí),kubelet通過API服務(wù)器接收pod規(guī)范并執(zhí)行該操作。然后,它確保相關(guān)的容器是健康和運(yùn)行的。

Kube代理服務(wù)

每個(gè)計(jì)算節(jié)點(diǎn)都包含一個(gè)稱為kube代理的網(wǎng)絡(luò)代理,該代理有助于K8S網(wǎng)絡(luò)服務(wù)。kube代理要么自己轉(zhuǎn)發(fā)流量,要么依賴操作系統(tǒng)的數(shù)據(jù)包過濾層來處理集群內(nèi)外的網(wǎng)絡(luò)通信。

kube代理在每個(gè)節(jié)點(diǎn)上運(yùn)行,以確保服務(wù)對(duì)外部方可用,并處理單個(gè)主機(jī)子網(wǎng)。它在其節(jié)點(diǎn)上充當(dāng)網(wǎng)絡(luò)代理和服務(wù)負(fù)載均衡器,管理UDP和TCP數(shù)據(jù)包的網(wǎng)絡(luò)路由。事實(shí)上,kube代理為所有服務(wù)端點(diǎn)路由流量。

Pods

到目前為止,我們已經(jīng)涵蓋了內(nèi)部和以基礎(chǔ)設(shè)施為重點(diǎn)的概念。相比之下,pod是K8S的核心,因?yàn)樗鼈兪情_發(fā)人員交互的關(guān)鍵外向結(jié)構(gòu)。

pod表示應(yīng)用程序的單個(gè)實(shí)例,也是K8S對(duì)象模型中最簡(jiǎn)單的單元。然而,pod是K8S的核心和關(guān)鍵。每個(gè)pod由一個(gè)容器或一系列緊密耦合的容器組成,這些容器在邏輯上結(jié)合在一起,以及控制容器運(yùn)行方式的規(guī)則。

吊艙的壽命有限,在升級(jí)或縮小規(guī)模后最終會(huì)死亡。然而,盡管pod是短暫的,但它們可以通過連接到持久存儲(chǔ)來運(yùn)行有狀態(tài)的應(yīng)用程序。

Pods還能夠水平自動(dòng)縮放,這意味著它們可以增加或減少運(yùn)行的實(shí)例數(shù)量。它們還可以執(zhí)行滾動(dòng)更新和金絲雀部署。

pod在節(jié)點(diǎn)上一起運(yùn)行,因此它們共享內(nèi)容和存儲(chǔ),并可以通過localhost訪問其他pod。容器可能跨越多臺(tái)機(jī)器,因此吊艙也可能。一個(gè)節(jié)點(diǎn)可以運(yùn)行多個(gè)pod,每個(gè)pod收集多個(gè)容器。

pod是K8S生態(tài)系統(tǒng)中的核心管理單元,是共享資源和上下文的容器的邏輯邊界。pod分組機(jī)制減輕了虛擬化和容器化方面的差異,該機(jī)制允許同時(shí)運(yùn)行多個(gè)依賴進(jìn)程。

通過創(chuàng)建副本集在運(yùn)行時(shí)實(shí)現(xiàn)pod的擴(kuò)展,副本集通過不斷維護(hù)預(yù)定義的pod集來提供可用性,確保部署始終運(yùn)行所需數(shù)量。服務(wù)可以向外部或內(nèi)部消費(fèi)者公開單個(gè)pod或復(fù)制集。

服務(wù)將特定的標(biāo)準(zhǔn)與pod相關(guān)聯(lián),以實(shí)現(xiàn)它們的發(fā)現(xiàn)。播客和服務(wù)通過稱為選擇器和標(biāo)簽的鍵值對(duì)進(jìn)行關(guān)聯(lián)。pod標(biāo)簽和選擇器之間的任何新匹配都將由服務(wù)自動(dòng)發(fā)現(xiàn)。


其他K8S Web應(yīng)用程序體系結(jié)構(gòu)組件

K8S管理應(yīng)用程序的容器,但它也可以管理集群附加的應(yīng)用程序數(shù)據(jù)。K8S用戶可以在不了解底層存儲(chǔ)基礎(chǔ)結(jié)構(gòu)詳細(xì)信息的情況下請(qǐng)求存儲(chǔ)資源。

K8S卷只是pod可以訪問的目錄,pod可以保存數(shù)據(jù)。卷的內(nèi)容、形成方式以及支持它的介質(zhì)由卷類型決定。永久卷(PV)是特定于集群的,通常由管理員提供,并綁定到現(xiàn)有存儲(chǔ)資源中。因此,PV可以比特定吊艙更耐用。

K8S依賴于存儲(chǔ)在容器注冊(cè)表中的容器映像。它可以是第三方注冊(cè)中心,也可以是組織配置的注冊(cè)中心。

命名空間是物理集群中的虛擬集群。它們旨在為多個(gè)用戶、團(tuán)隊(duì)提供虛擬分離的工作環(huán)境,并通過限制他們可以訪問的K8S對(duì)象來防止團(tuán)隊(duì)相互阻礙。

在pod級(jí)別,pod中的K8S容器可以通過localhost訪問其他端口,并共享它們的IP地址和網(wǎng)絡(luò)名稱空間。


K8S架構(gòu)最佳實(shí)踐


K8S體系結(jié)構(gòu)以可用性、可擴(kuò)展性、可移植性和安全性為前提。它的設(shè)計(jì)旨在更有效地在可用資源中分配工作負(fù)載,從而優(yōu)化基礎(chǔ)設(shè)施的成本。

高可用性

大多數(shù)容器編排引擎都提供應(yīng)用程序可用性,但K8S的高可用性架構(gòu)旨在實(shí)現(xiàn)應(yīng)用程序和基礎(chǔ)設(shè)施的可用性。

K8S體系結(jié)構(gòu)使用復(fù)制控制器、副本集和寵物集確保了應(yīng)用程序前端的高可用性。用戶可以隨時(shí)設(shè)置運(yùn)行pod的最小數(shù)量。如果pod或容器崩潰,聲明性策略可以將部署返回到所需的配置。使用pet集配置有狀態(tài)工作負(fù)載以實(shí)現(xiàn)高可用性。

K8S HA架構(gòu)還支持各種存儲(chǔ)后端的基礎(chǔ)設(shè)施可用性,從谷歌計(jì)算引擎持久磁盤和亞馬遜彈性塊存儲(chǔ)(EBS)等塊存儲(chǔ)設(shè)備,到GlusterFS和網(wǎng)絡(luò)文件系統(tǒng)(NFS)等分布式文件系統(tǒng),以及Flocker等專用容器存儲(chǔ)插件。

此外,每個(gè)K8S集群組件都可以進(jìn)行高可用性配置。運(yùn)行狀況檢查和負(fù)載均衡器可以進(jìn)一步確保容器化應(yīng)用程序的可用性。

可擴(kuò)展性

部署在K8S中的應(yīng)用程序是微服務(wù),由許多容器組成,這些容器以pod的形式分組成一系列。每個(gè)容器在邏輯上都被設(shè)計(jì)為執(zhí)行單個(gè)任務(wù)。

K8S 1.4支持集群自動(dòng)伸縮,谷歌云上的K8S也支持自動(dòng)伸縮。在自動(dòng)擴(kuò)展過程中,當(dāng)沒有可用的節(jié)點(diǎn)可以擴(kuò)展pod時(shí),K8S和底層基礎(chǔ)設(shè)施會(huì)協(xié)調(diào)向集群添加額外的節(jié)點(diǎn)。

便攜性

K8S旨在為云平臺(tái)、容器運(yùn)行時(shí)、操作系統(tǒng)、處理器架構(gòu)和PaaS提供選擇。例如,您可以在各種Linux發(fā)行版上配置K8S集群,包括CoreOS、Red Hat Linux、CentOS、Fedora、Debian和Ubuntu。它可以部署為在裸金屬環(huán)境中本地運(yùn)行;以及在基于vSphere、KVM和libvirt的虛擬化環(huán)境中。K8S的無(wú)服務(wù)器架構(gòu)可以在Azure、AWS和Google cloud等云平臺(tái)上運(yùn)行。還可以通過在本地和跨云提供商混合和匹配集群來創(chuàng)建混合云功能。

安全

K8S應(yīng)用程序體系結(jié)構(gòu)在多個(gè)級(jí)別上進(jìn)行了安全配置。有關(guān)K8S Security的詳細(xì)信息,請(qǐng)參閱此處的討論。


配置K8S架構(gòu)安全性

為了保護(hù)K8S集群、節(jié)點(diǎn)和容器的安全,有幾個(gè)基于DevOps實(shí)踐和云原生原則的最佳實(shí)踐需要遵循:

將K8S更新到最新版本:只有最新的三個(gè)版本的K8S才支持針對(duì)新發(fā)現(xiàn)的漏洞的安全補(bǔ)丁。

安全地配置K8S API服務(wù)器:停用匿名/未經(jīng)身份驗(yàn)證的訪問,并對(duì)API服務(wù)器和kubelets之間的連接使用TLS加密。

安全蝕刻:etcd本身是一個(gè)受信任的源,但僅通過TLS為客戶端連接提供服務(wù)。

固定kubelet:停用對(duì)kubelet的匿名訪問。使用–匿名auth=false標(biāo)志啟動(dòng)kubelet,并使用NodeRestriction準(zhǔn)入控制器限制kubelet可以訪問的內(nèi)容。

在容器生命周期的早期嵌入安全性:確保DevOps和安全團(tuán)隊(duì)之間有共同的目標(biāo)。

使用K8S本機(jī)安全控制降低操作風(fēng)險(xiǎn):在可能的情況下,利用本機(jī)K8S控件來強(qiáng)制執(zhí)行安全策略,這樣您自己的安全控件和協(xié)調(diào)器就不會(huì)發(fā)生沖突。


如何更好的學(xué)習(xí)K8S?

Docker和K8s在容器化領(lǐng)域至關(guān)重要,徹底改變了應(yīng)用程序部署、可擴(kuò)展性和管理。本質(zhì)上,Docker和K8s一起為應(yīng)用程序開發(fā)和部署實(shí)踐的現(xiàn)代化做出了重大貢獻(xiàn),使它們成為不斷發(fā)展的云計(jì)算和容器化領(lǐng)域中的關(guān)鍵技術(shù)。如果你希望更系統(tǒng)地學(xué)習(xí),可以考慮參加在中培IT學(xué)院的虛擬化容器技術(shù)Docker+K8s培訓(xùn)課程。


如何理解K8S的體系架構(gòu)?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大兴区| 沁阳市| 蓬安县| 蕉岭县| 宁陕县| 乌兰浩特市| 广东省| 北海市| 南乐县| 新营市| 莲花县| 剑阁县| 宕昌县| 社会| 南华县| 河西区| 咸宁市| 彭泽县| 黄龙县| 伽师县| 兴隆县| 舟曲县| 蒲城县| 临夏县| 杭锦旗| 武胜县| 柳州市| 牡丹江市| 新源县| 错那县| 汤原县| 宜章县| 梧州市| 无棣县| 克东县| 渑池县| 桐城市| 阿城市| 武隆县| 镇江市| 芦溪县|