掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:qaseven 2022-10-08 07:36:08
云計(jì)算 開(kāi)始使用 Kubernetes 并不容易。本文將幫助您了解 Kubernetes 的一些最重要的概念。

Kubernetes 是最流行的開(kāi)源容器編排解決方案。
開(kāi)始使用 Kubernetes并不容易。
本文將幫助您了解 Kubernetes 的一些最重要的概念。
大多數(shù)企業(yè)都在采用微服務(wù)架構(gòu)。
微服務(wù)提供了創(chuàng)新的靈活性。
然而,微服務(wù)并不是免費(fèi)的。我們沒(méi)有部署幾個(gè)應(yīng)用程序,而是部署了數(shù)百個(gè)微服務(wù)。這導(dǎo)致復(fù)雜性增加。
容器可以幫助簡(jiǎn)化您的部署和可觀察性挑戰(zhàn)。但是,在管理基礎(chǔ)架構(gòu)和部署方面仍然存在挑戰(zhàn)。示例:我想要 10 個(gè)微服務(wù) A 容器實(shí)例,15 個(gè)微服務(wù) B 容器實(shí)例,......等等多個(gè)微服務(wù)。此外,我的微服務(wù)還需要一些其他功能。一些典型特征包括:
容器編排解決方案提供了微服務(wù)架構(gòu)所需的大部分技術(shù)特性。您將能夠創(chuàng)建一個(gè)包含多個(gè) VM 實(shí)例的集群并將微服務(wù)部署到該集群。容器編排解決方案將管理集群和部署。
有許多容器編排平臺(tái):Docker Swarm、Mesosphere 和 Kubernetes 等。在過(guò)去的幾年里,Kubernetes 已經(jīng)成為容器編排領(lǐng)域的贏家。
假設(shè)您想使用 Kubernetes 建立一個(gè)微服務(wù)架構(gòu)。以下是工作流程的樣子:
現(xiàn)在讓我們深入研究其中的每一個(gè)。
集群是一組虛擬機(jī)。在集群中,有兩種類(lèi)型的節(jié)點(diǎn):
以下是一些重要的主節(jié)點(diǎn)(控制平面)組件:
工作節(jié)點(diǎn)的工作是運(yùn)行您的微服務(wù)。此外,一個(gè)名為 Kubelet 的 Kubernetes 組件在每個(gè) pod 上運(yùn)行。Kubelet 使工作節(jié)點(diǎn)能夠與主節(jié)點(diǎn)通信。
假設(shè)我要部署微服務(wù) A 的 V1 的 5 個(gè)實(shí)例。發(fā)出創(chuàng)建部署并為其設(shè)置多個(gè)實(shí)例的命令類(lèi)似于您在下面看到的:
**create deployment** hello-world-rest-api --image=in28min/hello-world-rest-api:0.0.1.RELEASE
scale deployment hello-world-rest-api --replicas=5
這會(huì)將具有 5 個(gè)實(shí)例的微服務(wù) A 的 v1 部署到 Kubernetes 集群。
在內(nèi)部,Kubernetes 將創(chuàng)建
為什么 Kubernetes 會(huì)這樣做?
讓我們深入挖掘。
Pod 是 Kubernetes 中最小的可部署單元。一個(gè) pod 代表你的微服務(wù)的一個(gè)實(shí)例。每個(gè) Pod 都分配有一個(gè)臨時(shí)IP 地址。
如果我在 Kubernetes 集群中運(yùn)行 10 個(gè)微服務(wù) A 實(shí)例和 12 個(gè)微服務(wù) B 實(shí)例,那么我總共將運(yùn)行 10 + 12 = 22 個(gè) Pod。
我們將具有 5 個(gè)實(shí)例的微服務(wù) A 部署到 Kubernetes 集群。這意味著您有 5 個(gè) pod 正在運(yùn)行。假設(shè)你殺死了一個(gè)豆莢。Kubernetes 會(huì)自動(dòng)識(shí)別這一點(diǎn)并創(chuàng)建一個(gè)替換 pod。Kubernetes 監(jiān)控您的 pod 的健康狀況并替換不健康的 pod。Kubernetes 如何做到這一點(diǎn)?
這是 ReplicaSet 的工作。
ReplicaSet 確保指定數(shù)量的 pod 始終在運(yùn)行。在上面的例子中,一個(gè) ReplicaSet 確保了微服務(wù) A 的 5 個(gè)實(shí)例始終在運(yùn)行。
如果一個(gè) ReplicaSet 保證了特定數(shù)量的 pod,那么 Deployment 的作用是什么?
部署可確保您在發(fā)布微服務(wù)的新版本時(shí)具有靈活性。
部署代表微服務(wù)的所有版本。
目前,我們只有一個(gè)版本的微服務(wù)。但是,您可以部署新版本。比方說(shuō),我想在不停機(jī)的情況下部署微服務(wù) V2。
這就是部署的工作。
當(dāng)您部署現(xiàn)有微服務(wù)的新版本時(shí),部署將為微服務(wù) A 的 V2 創(chuàng)建一個(gè)新的 ReplicaSet。
你將會(huì)有:
部署英國(guó)
kubectl create deployment microservice1 --image=microservice1:v1?
為每個(gè)微服務(wù)創(chuàng)建一個(gè)部署。Deployment 代表一個(gè)微服務(wù)(及其所有版本)。部署管理新版本,確保零停機(jī)時(shí)間。
副本集確保為特定微服務(wù)版本運(yùn)行特定數(shù)量的 pod 。即使其中一個(gè) pod 被殺死,副本集也會(huì)啟動(dòng)一個(gè)新的。
kubectl set image deployment microservice1 microservice1=microservice1:v2?
當(dāng)你部署一個(gè) V2 的微服務(wù)時(shí),會(huì)創(chuàng)建一個(gè)新的 ReplicaSet(V2 ReplicaSet)。
部署根據(jù)配置的發(fā)布策略更新 V1 副本集和 V2 副本集。
在 Kubernetes 中,每個(gè) Pod 都有自己的 IP 地址。在以下情況下,您如何確保外部用戶(hù)不受影響:
解決方案:創(chuàng)建一個(gè)服務(wù)。
expose deployment name --type=LoadBalancer --port=80?
服務(wù)使用穩(wěn)定的 IP 地址將您的部署暴露給外部世界。這可確保您的用戶(hù)不會(huì)在 pod 上下移動(dòng)時(shí)受到影響。
服務(wù)分為三類(lèi):

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流