中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes(k8s)基礎介紹

發布時間:2020-08-22 11:47:12 來源:腳本之家 閱讀:256 作者:Stavros Korokithakis 欄目:服務器

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

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

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

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

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

基本概念

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

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

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

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

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

The Pod

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

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

Kubernetes(k8s)基礎介紹

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

Kubernetes官方文檔中提供了更多關于Pod的信息。

The Deployment

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

Kubernetes(k8s)基礎介紹

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

Kubernetes官方文檔中提供了更多關于Deployments的信息。

The Service

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

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

Kubernetes(k8s)基礎介紹

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

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

The Ingress

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

Kubernetes(k8s)基礎介紹

這一節配置是告訴Traefik你希望所有名為redis.yourdomain.com的主機上的流量都轉發到我的服務端口6379。據我所知,這只是針對Traefik的配置。 在應用配置后,Pod將通過redis.yourdomain.com上的Traefik暴露到互聯網。

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

現在你應該懂Kubernetes是什么了!

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

呼伦贝尔市| 三都| 夏河县| 桐庐县| 临沂市| 依安县| 高邑县| 沙雅县| 富民县| 巴林右旗| 宁安市| 通辽市| 罗城| 牙克石市| 中方县| 比如县| 杭锦旗| 江陵县| 伊宁市| 东光县| 青州市| 辰溪县| 安化县| 荥经县| 苗栗市| 洛隆县| 晴隆县| 涟源市| 会东县| 会同县| 台安县| 克山县| 齐齐哈尔市| 天台县| 冕宁县| 赤水市| 五指山市| 徐汇区| 衡南县| 右玉县| 永年县|