日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
五分鐘搞懂Kubernetes:輕松理解所有組件

之前我曾經(jīng)提到了一系列關(guān)于服務(wù)網(wǎng)格的內(nèi)容。然而,我意識(shí)到有些同學(xué)可能對(duì)Kubernetes的了解相對(duì)較少,更不用說(shuō)應(yīng)用服務(wù)網(wǎng)格這個(gè)概念了。因此,今天我決定帶著大家快速理解Kubernetes中的一些專有名詞,以便在短時(shí)間內(nèi)入門,并減少學(xué)習(xí)的時(shí)間。我將在接下來(lái)的5分鐘內(nèi)為你介紹這些名詞,希望你能從中獲得一些收獲。如果你覺(jué)得有所幫助,請(qǐng)給個(gè)贊來(lái)鼓勵(lì)我吧!你的支持是我前進(jìn)的動(dòng)力~

成都創(chuàng)新互聯(lián)公司主營(yíng)烏蘇網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,烏蘇h5微信平臺(tái)小程序開發(fā)搭建,烏蘇網(wǎng)站營(yíng)銷推廣歡迎烏蘇等地區(qū)企業(yè)咨詢

Kubernetes

首先,我想強(qiáng)調(diào)的是,在學(xué)習(xí)任何一項(xiàng)知識(shí)時(shí),官方文檔都是最重要的資源:https://kubernetes.io/zh-cn/docs/home/

官方文檔提供了詳盡、準(zhǔn)確的信息,幫助我們深入了解和掌握這個(gè)技術(shù)。因此,如果你真的對(duì)Kubernetes感興趣,我強(qiáng)烈建議你花些時(shí)間仔細(xì)閱讀官方文檔。

談到Kubernetes,它是一個(gè)開源的容器編排引擎,旨在實(shí)現(xiàn)容器化應(yīng)用的自動(dòng)化部署、擴(kuò)縮和管理。簡(jiǎn)而言之,它能夠集中控制多個(gè)Docker容器,而不僅限于單獨(dú)操作每個(gè)容器。在沒(méi)有Kubernetes之前,如果我們想要同時(shí)操作多個(gè)Docker容器,可能需要學(xué)習(xí)并執(zhí)行Shell腳本,這需要花費(fèi)一些時(shí)間。因此,如果你希望實(shí)現(xiàn)批量管理Docker容器,Kubernetes就是一個(gè)不錯(cuò)的選擇,當(dāng)然也可以考慮其他類似的產(chǎn)品。

Kubernetes 組件

假設(shè)你已經(jīng)順利完成Kubernetes的安裝。一旦你部署好Kubernetes,你就擁有了一個(gè)完整的集群。下面是官方提供的架構(gòu)圖,我們可以參考一下。圖中列出了許多組件的名稱,包括:Node、Pod、kubelet、kube-proxy、kube-apiserver、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager等一系列專有名詞。接下來(lái),我們將逐一解釋這些名詞的含義。

圖片

Node

根據(jù)架構(gòu)圖,你可能已經(jīng)猜到Node實(shí)際上就是一臺(tái)機(jī)器,它負(fù)責(zé)運(yùn)行容器化的應(yīng)用程序。然而,一個(gè)Node上可以運(yùn)行多個(gè)Pod。Pod是Kubernetes的最小調(diào)度單位,通常情況下,一個(gè)Pod代表一個(gè)微服務(wù)。下面是一個(gè)Pod的YAML示例:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: nginx:latest

然而,這并不意味著一個(gè)Pod只能支持一個(gè)docker鏡像。例如,我們的服務(wù)網(wǎng)格中存在邊車模式,允許在同一個(gè)Pod中定義多個(gè)微服務(wù)。但為什么不在同一個(gè)Pod中定義多個(gè)微服務(wù)呢?這是因?yàn)镻od是最小的調(diào)度單位,它們需要一起啟動(dòng)和重啟。這種綁定關(guān)系非常嚴(yán)格,因此如果你已經(jīng)有一個(gè)集群,為什么不將它們分開定義呢?因此,即使定義多個(gè)鏡像,也只需要定義一些輔助功能,如日志收集等。

kubelet

kubelet這個(gè)組件在整個(gè)Kubernetes系統(tǒng)中扮演著重要的角色。具體而言,控制平面將Pod的定義發(fā)送給kubelet,然后kubelet根據(jù)這些定義來(lái)創(chuàng)建和管理Pod中的容器。kubelet負(fù)責(zé)監(jiān)控Pod和容器的狀態(tài),并將這些狀態(tài)信息報(bào)告給控制平面??刂破矫婵梢愿鶕?jù)這些狀態(tài)信息來(lái)做出調(diào)度和管理決策,以確保整個(gè)系統(tǒng)的高效運(yùn)行。

你可以將Pod理解為每個(gè)項(xiàng)目組的招聘HR,類似于一個(gè)項(xiàng)目的招聘負(fù)責(zé)人。而控制平面則可以理解為上層的公司領(lǐng)導(dǎo),他們制定了招聘要求和招聘人數(shù),具體的招聘工作由HR來(lái)執(zhí)行。HR的職責(zé)是確保項(xiàng)目有足夠的人員,并且符合公司領(lǐng)導(dǎo)的要求。他們會(huì)持續(xù)監(jiān)視項(xiàng)目的人員情況,一旦有人離職,他們會(huì)向上級(jí)報(bào)告,滿足上層的控制平面要求。同時(shí),上層的公司領(lǐng)導(dǎo)與項(xiàng)目人員是沒(méi)有直接溝通的,所有的溝通都通過(guò)HR進(jìn)行。HR在這個(gè)過(guò)程中起到了項(xiàng)目人員與上層領(lǐng)導(dǎo)之間的聯(lián)絡(luò)人的作用,負(fù)責(zé)傳遞信息、解決問(wèn)題和協(xié)調(diào)工作。

kube-proxy

加長(zhǎng)優(yōu)化語(yǔ)句:我們?cè)诩軜?gòu)圖中看到kube-proxy也是與上層有聯(lián)系的。它通過(guò)服務(wù)代理和負(fù)載均衡功能,實(shí)現(xiàn)了集群內(nèi)部的網(wǎng)絡(luò)通信和流量轉(zhuǎn)發(fā),確保了服務(wù)的可用性和可靠性。

在我們的項(xiàng)目組中,他是誰(shuí)呢?他是那位真正指導(dǎo)Pod要執(zhí)行哪些任務(wù)的人??梢哉f(shuō),他擔(dān)任著項(xiàng)目組中開發(fā)leader的角色,或者像項(xiàng)目經(jīng)理一樣的角色。他負(fù)責(zé)指導(dǎo)我們要做什么任務(wù),一旦有需求,他會(huì)負(fù)責(zé)轉(zhuǎn)發(fā)和分配工作。

然而,需要注意的是,他并不直接與Pod進(jìn)行網(wǎng)絡(luò)通信,而是與Service對(duì)象進(jìn)行溝通。

Service

在上述情況中,我們引入了Service對(duì)象。實(shí)際上,Service對(duì)象代表了一組Pod資源。在生產(chǎn)環(huán)境中,我們通常不會(huì)只部署一個(gè)服務(wù)來(lái)處理請(qǐng)求,而是會(huì)有多個(gè)Pod副本同時(shí)處理。因此,我們需要一個(gè)Service對(duì)象將它們歸類在一起,以便kube-proxy可以進(jìn)行負(fù)載均衡轉(zhuǎn)發(fā)等操作。只要Pod中的labels標(biāo)簽后面的key:value匹配,就可以將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的Pod副本。metadata下的labels字段可以包含任何鍵值對(duì),只要符合key:value的格式即可。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app.kubernetes.io/name: proxy
spec:
  containers:
  - name: nginx
    image: nginx:stable
    ports:
      - containerPort: 80
        name: http-web-svc

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app.kubernetes.io/name: proxy
  ports:
  - name: name-of-service-port
    protocol: TCP
    port: 80
    targetPort: http-web-svc

控制平面組件

控制平面組件在集群中扮演著重要角色,它們負(fù)責(zé)做出全局決策,例如資源的調(diào)度,以及監(jiān)測(cè)和響應(yīng)集群事件,比如當(dāng)部署的replicas字段不滿足時(shí),啟動(dòng)新的Pod??刂破矫娼M件可以在集群中的任何節(jié)點(diǎn)上運(yùn)行。然而,為了簡(jiǎn)化設(shè)置和管理,通常會(huì)在同一臺(tái)計(jì)算機(jī)上啟動(dòng)所有控制平面組件,并且不會(huì)在該計(jì)算機(jī)上運(yùn)行用戶容器??梢詫⑵漕惐葹楣径聲?huì),他們負(fù)責(zé)決策和管理,與實(shí)際執(zhí)行工作的Pod之間關(guān)系不直接。

kube-apiserver

通過(guò)這個(gè)名字,你可以推斷出他負(fù)責(zé)處理并調(diào)用其他組件來(lái)完成所有API請(qǐng)求。舉個(gè)例子,我們之前定義了一個(gè)Pod的YAML格式文件。通過(guò)在后臺(tái)執(zhí)行kubectl apply -f your-pod.yaml,kube-apiserver就會(huì)接收到你的請(qǐng)求,并將其轉(zhuǎn)發(fā)給誰(shuí)呢?正如我們之前提到的,它會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給kubelet,kubelet負(fù)責(zé)與Docker進(jìn)行交互并進(jìn)行創(chuàng)建等操作。因此,kube-apiserver就像是我們的控制器一樣,直接接收請(qǐng)求但不處理它們。

etcd

etcd是一種用作Kubernetes所有集群數(shù)據(jù)的后臺(tái)數(shù)據(jù)庫(kù)。不僅可以存儲(chǔ)你能想到的所有數(shù)據(jù),而且采用分布式存儲(chǔ)方式,基于Raft算法確保數(shù)據(jù)的一致性。這使得所有節(jié)點(diǎn)都能保持?jǐn)?shù)據(jù)的一致性,因?yàn)閑tcd存儲(chǔ)了集群的配置數(shù)據(jù)、狀態(tài)信息和元數(shù)據(jù)。作為集群的“大腦”,etcd存儲(chǔ)了關(guān)于容器、節(jié)點(diǎn)、Pod、服務(wù)和其他資源的信息。通過(guò)監(jiān)視etcd中的數(shù)據(jù)變化,服務(wù)發(fā)現(xiàn)機(jī)制能夠?qū)崿F(xiàn)自動(dòng)的服務(wù)注冊(cè)和發(fā)現(xiàn)。當(dāng)新的Pod或服務(wù)被創(chuàng)建時(shí),它們會(huì)在etcd中注冊(cè)相關(guān)信息。其他組件或應(yīng)用程序可以通過(guò)查詢etcd來(lái)獲取這些信息,從而實(shí)現(xiàn)服務(wù)之間的通信和協(xié)調(diào)。

kube-scheduler

我們當(dāng)時(shí)說(shuō)kubelet是負(fù)責(zé)管理該節(jié)點(diǎn)上的容器和Pod,那么誰(shuí)來(lái)調(diào)度呢?就是由kube-scheduler負(fù)責(zé)。kube-scheduler的主要職責(zé)是從可用節(jié)點(diǎn)中選擇最優(yōu)節(jié)點(diǎn)來(lái)運(yùn)行Pod,以確保資源的均衡分配,避免機(jī)器資源的浪費(fèi)。由于控制平面組件較多,為了更好地理解它們各自的作用,我還額外準(zhǔn)備了一張圖來(lái)清晰地展示。

圖片

kube-controller-manager

kube-controller-manager是Kubernetes集群中不可或缺的核心組件之一,它的主要職責(zé)是運(yùn)行一系列控制器,以確保集群的狀態(tài)始終維持在預(yù)期的狀態(tài)。為了更好地理解其功能,我們以Deployment Controller管理器為例進(jìn)行說(shuō)明,而其他控制器的詳細(xì)信息則可以通過(guò)自行查詢來(lái)獲取。

Deployment Controller是一個(gè)負(fù)責(zé)管理應(yīng)用部署的組件。它的主要功能是根據(jù)用戶定義的期望狀態(tài)來(lái)控制ReplicaSet的創(chuàng)建、更新和刪除操作,從而實(shí)現(xiàn)應(yīng)用的滾動(dòng)升級(jí)和回滾。舉一個(gè)例子。當(dāng)一個(gè)Pod掛掉時(shí),kubelet會(huì)首先監(jiān)測(cè)到該P(yáng)od的狀態(tài)改變,并將這個(gè)信息傳遞給kube-controller-manager中的Replication Controller(如果該P(yáng)od是由Replication Controller創(chuàng)建的)。Replication Controller是負(fù)責(zé)維護(hù)Pod副本數(shù)量的控制器之一。

一旦Replication Controller接收到關(guān)于Pod狀態(tài)改變的通知,它將檢查集群中當(dāng)前的Pod副本數(shù)量,并根據(jù)其定義的副本數(shù)量進(jìn)行調(diào)整。如果發(fā)現(xiàn)當(dāng)前的Pod數(shù)量少于所需的副本數(shù)量,Replication Controller將發(fā)出指令給kubelet,在相應(yīng)的節(jié)點(diǎn)上重新創(chuàng)建缺失的Pod來(lái)滿足副本數(shù)量的要求。之前我們不是一直說(shuō)將kubelet比作是HR嗎?上層領(lǐng)導(dǎo)找到了就是Deployment Controller。

注意不管是什么管理層Controller都要走kube-apiserver這一層。只有他才有資格調(diào)用其他組件kube-apiserver。

cloud-controller-manager

cloud-controller-manager是一個(gè)可選的組件,它提供了與云平臺(tái)相關(guān)的控制器。對(duì)于我們來(lái)說(shuō),它可能看起來(lái)與我們的工作無(wú)關(guān)。cloud-controller-manager在與云平臺(tái)的API進(jìn)行交互時(shí),能夠管理云資源,例如負(fù)載均衡器、節(jié)點(diǎn)組、存儲(chǔ)卷等。這使得我們能夠獲得更豐富的云資源管理功能。需要注意的是,cloud-controller-manager的具體功能和行為是根據(jù)所使用的云平臺(tái)而定的。因此,它可以根據(jù)我們所用的云平臺(tái)提供適當(dāng)?shù)慕鉀Q方案。

總結(jié)

在本文中,我向大家介紹了Kubernetes中的一些專有名詞。Kubernetes是一個(gè)非常強(qiáng)大的容器編排引擎,可以幫助我們自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序。通過(guò)了解這些專有名詞,我們可以更好地理解Kubernetes的工作原理和架構(gòu)。


新聞名稱:五分鐘搞懂Kubernetes:輕松理解所有組件
標(biāo)題鏈接:http://m.5511xx.com/article/dhpgpjd.html