主頁 > 知識庫 > Kubernetes(k8s)基礎(chǔ)介紹

Kubernetes(k8s)基礎(chǔ)介紹

熱門標簽:新鄉(xiāng)人工智能電話機器人加盟 昆明外呼系統(tǒng) 福州呼叫中心外呼系統(tǒng)哪家好 地圖標注w是什么方向 地圖標注需要提交啥資料入駐 400電話申請找哪家公司 臨汾電銷機器人費用 七大洲地圖標注 河南省鄭州市地圖標注

之前我一直想學(xué)習(xí)Kubernetes,因為它聽起來很有意思(如果你是希臘人,你會覺得這個名字很有問題),但我從來沒有機會,因為我沒有任何東西需要運行在集群中。而最近,我的工作中開始逐步涉及Kubernetes相關(guān)的事情,所以這次我抓住機會,開始查資料,但后來我發(fā)現(xiàn)目前所有的資料(包括官方教程)都過于冗長,結(jié)構(gòu)也不合理,這讓我一開始有點沮喪。

經(jīng)過幾天的研究,我開始逐步理解Kubernetes的核心理念,并且把他部署到了生產(chǎn)環(huán)境中。因為我的簡歷現(xiàn)在說自己是個“Kubernetes專家”,一個想法立刻誕生了:為什么不把我對這個系統(tǒng)的寬泛理解以及我已經(jīng)耗費了幾個小時的研究所收集的知識讓更多人看到?雖然我無法說服自己不應(yīng)該再寫另一篇漫無目的的文章,但是我很快就明白了:
這就是那篇文章。

我在現(xiàn)有文章中遇到的主要問題是,在深入研究具體細節(jié)之前,我找不到的任何內(nèi)容總結(jié)了這些組件是什么以及它們?nèi)绾谓M合起來的高級概述。 而這種高屋建瓴的呈現(xiàn)方式是我學(xué)習(xí)最好的方式。我是以這種方式來寫的,希望它也適合你。如果你知道任何描述了Kubernetes如何工作,而且讓人容易理解的專家級的文章/教程,請不要告訴我,因為你在我需要你的時候你在哪里,現(xiàn)在我寫了我的文章而你卻沒有及早把它拿出來。

另外請記住,我實際上只學(xué)習(xí)了Kubernetes一個星期左右,所以學(xué)得不會非常深入,有些可能是不準確的,希望沒有什么錯誤,這里的信息應(yīng)該足夠讓你達到運行簡單集群的程度。

話雖如此,最后我發(fā)現(xiàn)Kubernetes中的概念還是非常簡單的,雖然我確信有很多東西我還不知道。但是,我知道的事情就足以建立一個集群并讓我們的應(yīng)用在其上運行,而且我很確定它們足以讓大多數(shù)人知道如何開始。

基本概念

我們需要做的第一件事是詳細介紹Kubernetes的各個部分:

  • 控制平面(Control plane):顧名思義,這是控制其他一切的部分,這也是我一無所知的部分,因為我們只是向亞馬遜付費,讓亞馬遜幫我們處理這部分。我的理解是,這是最好的決定,除非你是谷歌,否則你應(yīng)該付費給一些公司,讓他們?yōu)槟愎芾怼?/li>
  • 節(jié)點(Nodes):節(jié)點本質(zhì)上就是一臺服務(wù)器,就像您付費的物理機worker一樣。 這是所有代碼部署的地方,將裸服務(wù)器變成節(jié)點的方法是在其上安裝Docker,kubelet,kube-proxy和其他一些東西。本文假設(shè)您的群集中已有一些worker。
  • 容器集(Pod):Pod是容器集合。 這是您的代碼所在的位置,通常每個容器都有一個Pod,盡管您可能希望將一些密切相關(guān)的服務(wù)放在同一個Pod中。 Pod在單個節(jié)點上運行(但是一個節(jié)點可以運行許多Pod),這意味著Pod中的所有容器將具有相同的IP地址,并且它們可以通過連接到localhost上的彼此端口來相互通信。Pod在部署后無法更新,只能刪除或替換它們。
  • 部署(Deployments): Deployment是您將Pod實際部署到群集的方式。 您可以在沒有Deployment的情況下運行Pod,但如果沒有Deployment,則無法輕松指定所需的副本數(shù)量,在失敗時自動重新部署Pod,回滾到早期狀態(tài)等。Deployment使代碼生命周期管理變得更容易,并且您可以使用它來使Docker鏡像在Kubernetes上運行。
  • 服務(wù)(Service):服務(wù)允許您從一個Pod打開端口到其他Pod,并指定一個Pod的DNS名稱,以便能夠查找并連接到群集中的其他Pod。
  • 入口(Ingress):Ingresses是你如何告訴你的Ingress控制器(通常是像Traefik這樣的web server)向外界暴露什么,以及在哪個路徑或主機名上。 入口將映射到將實際應(yīng)答該請求的Pod。本教程也假設(shè)您已經(jīng)配置了入口,雖然設(shè)置Traefik來做到這一點不應(yīng)該非常困難(在用他們的教程時請使用Deployment方法)。

所有這些都可以使用命令行的kubectl創(chuàng)建,或者更安全地通過YAML文件創(chuàng)建,該文件將包含您要部署的內(nèi)容的定義和詳細信息(然后執(zhí)行kubectl apply -f <yaml file>)。

概括地講,您把容器放入pods中,這些pods將由deployment創(chuàng)建和部署,其網(wǎng)絡(luò)將由service處理,并添加ingress以便外部世界可以訪問您的服務(wù)器。

讓我們逐個介紹這些部分,看看它們的YAML配置是什么樣的。

The Pod

讓我們看一下將在容器中運行Redis鏡像的pod的YAML配置。 請記住,Pod并不是持久性的,所以你幾乎不會直接使用它。 相反,您將使用deployment間接部署Pod,我們將在下面介紹。

以下配置示例僅供您進行修改。 你只需要看看它,然后繼續(xù)閱讀,不要停下來驚嘆它的美麗。

正如您所看到的,它非常簡單,您添加了一堆Kubernetes特定的東西,每個都只是復(fù)制粘貼,然后您聲明此配置是為Pod,給它一個名稱,指定在其中運行的容器和他們監(jiān)聽的端口,請刪除整個文件吧,你已經(jīng)準備好了!

Kubernetes官方文檔中提供了更多關(guān)于Pod的信息。

The Deployment

以下是您實際運行上述Pod的方式,即使用deployment。 請記住,您根本不需要關(guān)注上面的Pod配置,我們將在deployment里重新定義它。

您會注意到這主要是上面的Pod配置,但有一些額外的配置,如副本(replica)等。這些定義了deployment的名稱以及我們要部署的副本數(shù)量。 更改副本數(shù)量,將會部署更多template部分中指定的Pod。

Kubernetes官方文檔中提供了更多關(guān)于Deployments的信息。

The Service

現(xiàn)在我們已經(jīng)部署了一個Pod,我們需要將其端口暴露給集群的其余部分。 部署中的containerPort指令暴露了Docker端口,但實際上并不轉(zhuǎn)發(fā)主機上的端口,因此多個Pod(不是同一Pod中的容器)可以使用相同的端口而不會發(fā)生沖突。

要將上面的端口實際暴露給集群上運行的其他Pod,我們需要為它創(chuàng)建一個Service。 這將創(chuàng)建轉(zhuǎn)發(fā)端口所需的規(guī)則,并為我們提供DNS條目,我們可以使用該條目來解析該Pod的IP。

這會將Redis端口暴露給集群中的其他Pod,可以通過my-service:6379連接它。

要部署你的應(yīng)用中更多部分,只需將另一個deployment和關(guān)聯(lián)的Service添加到群集即可。 您可以使用與上面的Redis完全相同的方式部署主應(yīng)用程序服務(wù)。

The Ingress

最后,我們可以使用Ingress將我們的服務(wù)暴露給互聯(lián)網(wǎng)。 這里是使用Traefik的一個例子,雖然您可能實際上并不想將Redis暴露給外面的世界,但同樣的方法適用于您自己的應(yīng)用程序。

這一節(jié)配置是告訴Traefik你希望所有名為redis.yourdomain.com的主機上的流量都轉(zhuǎn)發(fā)到我的服務(wù)端口6379。據(jù)我所知,這只是針對Traefik的配置。 在應(yīng)用配置后,Pod將通過redis.yourdomain.com上的Traefik暴露到互聯(lián)網(wǎng)。

我希望這篇文章對初學(xué)者有用。這篇文章很簡短,因為Kubernetes的基礎(chǔ)很短,但我們設(shè)法涵蓋了如何以最小的麻煩來運行服務(wù)。

現(xiàn)在你應(yīng)該懂Kubernetes是什么了!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

標簽:股票 紅河 鎮(zhèn)江 岳陽 烏海 臨沂 四川

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Kubernetes(k8s)基礎(chǔ)介紹》,本文關(guān)鍵詞  Kubernetes,k8s,基礎(chǔ),介紹,Kubernetes,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Kubernetes(k8s)基礎(chǔ)介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于Kubernetes(k8s)基礎(chǔ)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章