日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

容器技术之快速了解K8S各抽象资源及组件架构

發(fā)布時(shí)間:2025/3/11 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 容器技术之快速了解K8S各抽象资源及组件架构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

帶你快速了解Kubernetes主要概念和組件架構(gòu)。

Kubernetes的組件和架構(gòu)比較多,功能也比較多。

如果詳細(xì)探討,每個(gè)Kubernetes組件都可以單獨(dú)寫篇博客詳細(xì)講解。

我們這里是快速了解,就寫的相對(duì)比較簡(jiǎn)單一些。

主要是針對(duì)不熟悉Kubernetes的朋友,能夠快速的了解一下Kubernetes的組件功能。對(duì)Kubernetes有一個(gè)直觀的印象。

?


目錄

一、快速了解kubernetes的主要概念

1、Pod

2、ReplicaSet

3、Deployment

4、Label

5、Service

二、快速了解kubernetes的主要架構(gòu)

1、Master

2、Worker Node


一、快速了解kubernetes的主要概念

kubernetes架構(gòu)中主要分為兩個(gè)角色:Master和Worker Node。

在這兩個(gè)角色中,都分別存在多個(gè)組件來支持Kubernetes的內(nèi)部邏輯。

要熟悉這些組件,我們先要了解Kubernetes的一些常見的抽象概念及資源類型。

?

1、Pod

Pod是kubernetes中最小的調(diào)度單位,可以把他理解成在集群上運(yùn)行的進(jìn)程。

Pod里面可以運(yùn)行單個(gè)容器或者運(yùn)行多個(gè)需要協(xié)同工作的容器。

Pod運(yùn)行在一個(gè)Worker Node中,這個(gè)Worker Node可以是物理機(jī),也可以是虛擬機(jī)。

一個(gè)Worker Node中可能會(huì)有很多個(gè)Pod同時(shí)運(yùn)行。

多個(gè)Pod可以協(xié)同工作。

在Pod中,有一個(gè)容器叫pause,這個(gè)是當(dāng)前pod中所有容器的父容器,也叫基礎(chǔ)容器。

pause啟用PID的命名空間,pause的PID為1。

pause負(fù)責(zé)Pod中的容器的健康檢查。

如果我們?cè)赑od中部署兩個(gè)容器,分別叫Container1和Container2。

那么Container1和Container2就會(huì)共享pause容器的網(wǎng)絡(luò)棧,他們之間的通訊就會(huì)更快。

他們之間的關(guān)系是這樣的:

?

2、ReplicaSet

ReplicaSet是一個(gè)副本集,簡(jiǎn)稱RS。

它的作用就類似于Pod的負(fù)載均衡器。

通常情況下,ReplicaSet用于實(shí)現(xiàn)Pod的高可用性。

就是說呢,如果有Pod異常退出,會(huì)自動(dòng)創(chuàng)建新的 Pod 來代替;并且自動(dòng)回收異常退出的Pod。

?

3、Deployment

Deployment一般是用于滾動(dòng)部署更新的組件。

更新Deployment的時(shí)候,會(huì)自動(dòng)創(chuàng)建ReplicaSet,并自動(dòng)啟動(dòng)新的pod

Deployment會(huì)自動(dòng)實(shí)現(xiàn)ReplicaSet的創(chuàng)建和銷毀的過程,并自動(dòng)對(duì)新老Pod進(jìn)行替換。

?

4、Label

Label是以key/value鍵值對(duì)的方式存在,比如app:nginx。

Label就像一個(gè)標(biāo)簽,可以貼到很多對(duì)象上。比如Pod,Service,Node,ReplicaSet等等。

Label可以在創(chuàng)建對(duì)象的時(shí)候貼上去;也可以在對(duì)象創(chuàng)建以后再添加或者修改。

貼上Label以后,我們就可以通過調(diào)用Label,來調(diào)用對(duì)象。

每個(gè)Label必須是唯一的。

?

5、Service

Service是一個(gè)抽象的api對(duì)象。

Service可以成為多個(gè)后端Pod代理。

Service可以通過Selector指定Label名稱,通過Label Selector來調(diào)用對(duì)象,比如調(diào)用Pod。

Service可以通過ClusterIP,讓外部的客戶端client可以直接訪問到內(nèi)部的Pod。

我們可以把Service理解成一個(gè)橋梁,對(duì)內(nèi)串聯(lián)Pod或Pod組,對(duì)外串聯(lián)客戶端。

Service的本質(zhì)是一個(gè)四層代理服務(wù)。

?

二、快速了解kubernetes的主要架構(gòu)

Kubernetes是主從分布式架構(gòu)。

Kubernetes主要包括兩種角色:Master Node和Worker?Node。

Master Node是主節(jié)點(diǎn),也叫控制節(jié)點(diǎn)。

Worker?Node是工作節(jié)點(diǎn)。

有時(shí)候,也會(huì)直接把主節(jié)點(diǎn)叫做Master,工作節(jié)點(diǎn)叫做Node。

我們分別說一下這兩類節(jié)點(diǎn):

?

1、Master

Master負(fù)責(zé)Kubernetes集群的控制和管理,是整個(gè)Kubernetes的控制中心。

Master通常至少都需要占據(jù)單獨(dú)一臺(tái)服務(wù)器,生產(chǎn)環(huán)境建議部署三臺(tái)以實(shí)現(xiàn)高可用。

Master中包含了四種重要的服務(wù),分別是:ApiServer、Scheduler、Controller?Manager和Etcd。

?

1.1、ApiServer

ApiServer提供HTTP/HTTPS RESTful API。

ApiServer是整個(gè)kubernetes集群的中樞神經(jīng),是整個(gè)集群增刪改查的唯一入口。

ApiServer串聯(lián)了其他組件之間的數(shù)據(jù)交互。

ApiServer提供集群管理的授權(quán)、訪問控制、發(fā)現(xiàn)、認(rèn)證等等功能。

ApiServer是Etcd唯一的代理。

ApiServer部署在master節(jié)點(diǎn)上。生產(chǎn)環(huán)境中master節(jié)點(diǎn)通常會(huì)做成高可用。

?

1.2、Scheduler

Scheduler是一種調(diào)度器。

Scheduler會(huì)收集每個(gè)Worker資源的詳細(xì)信息及運(yùn)行情況,包括CPU、內(nèi)存等。

Scheduler會(huì)收集每個(gè)Worker上運(yùn)行什么服務(wù)。

Scheduler有自己的算法,在調(diào)度前會(huì)進(jìn)行分析,然后會(huì)安排Pod到具體的worker節(jié)點(diǎn)上。

?

1.3、Controller?Manager

Controller Manager包括了很多的Controller,它可以對(duì)Pod進(jìn)行副本管理。

Controller Manager是處理kubernetes集群中常規(guī)任務(wù)的后臺(tái)線程,它也是一個(gè)守護(hù)進(jìn)程。

Controller Manager通過ApiServer監(jiān)視kubernetes集群的共享狀態(tài),確保整個(gè)集群處于預(yù)期的工作狀態(tài)。

Controller Manager是kubernetes高可用的保證。

?

1.4、Etcd

Etcd是一個(gè)存儲(chǔ)組件,就像是Kubernetes集群的數(shù)據(jù)庫(kù)。

Etcd會(huì)存儲(chǔ)整個(gè)kubernetes集群狀態(tài)。比如各個(gè)Node的信息和狀態(tài)等。

Etcd作為一個(gè)節(jié)點(diǎn)是相對(duì)獨(dú)立的。

只有ApiServer才能和Etcd進(jìn)行通訊,Etcd會(huì)為ApiServer的操作記錄持久化。

Etcd不光可以存儲(chǔ),還可以監(jiān)聽。

Etcd的鍵值發(fā)生變化會(huì)通知ApiServer,由ApiServer去通知客戶端。

因?yàn)镋tcd的重要性,生產(chǎn)環(huán)境中Etcd最好部署多臺(tái),實(shí)現(xiàn)高可用。

?

?

2、Worker Node

Worker Node也叫Node,顧名思義,就是工作節(jié)點(diǎn)。我們Kubernetes的程序應(yīng)用就會(huì)部署在這里。

Node主要就是為Pod提供一個(gè)運(yùn)行的環(huán)境,以及可以對(duì)Pod進(jìn)行操作的空間。

Node受Master的管理。

Node主要由Kuberlet、Container Runtime、kube-proxy組件構(gòu)成。

下面快速說一下這三個(gè)組件:

?

2.1、Kubelet

每個(gè)Worker Node上都有Kubelet,Kubelet就像是Node的客戶端。

Kubelet會(huì)監(jiān)聽和維護(hù)Pod的生命周期。

當(dāng)Master上的Scheduler確定了某個(gè)Node后,就會(huì)把Pod的配置信息發(fā)送給這個(gè)Node的kubelet,

kubelet就會(huì)根據(jù)這些配置信息自動(dòng)創(chuàng)建和運(yùn)行容器。

?

2.2、Container Runtime

每個(gè)Worker Node上都有Container Runtime。

Container Runtime負(fù)責(zé)下載image并運(yùn)行容器,它提供一個(gè)容器運(yùn)行環(huán)境

Kubernetes的Container Runtime支持的容器有很多,最常見的就是Docker

?

2.3、kube-proxy

kube-proxy就是一個(gè)代理,它可以轉(zhuǎn)發(fā)Service的請(qǐng)求到Pod。

kube-proxy可以實(shí)現(xiàn)一個(gè)內(nèi)部Pod的負(fù)載均衡。

?

?

參考文章:

  • https://blog.csdn.net/fangfu123/article/details/105792826

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的容器技术之快速了解K8S各抽象资源及组件架构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。