您好,登錄后才能下訂單哦!
之前我一直想學習Kubernetes,因為它聽起來很有意思(如果你是希臘人,你會覺得這個名字很有問題),但我從來沒有機會,因為我沒有任何東西需要運行在集群中。而最近,我的工作中開始逐步涉及Kubernetes相關的事情,所以這次我抓住機會,開始查資料,但后來我發現目前所有的資料(包括官方教程)都過于冗長,結構也不合理,這讓我一開始有點沮喪。
經過幾天的研究,我開始逐步理解Kubernetes的核心理念,并且把他部署到了生產環境中。因為我的簡歷現在說自己是個“Kubernetes專家”,一個想法立刻誕生了:為什么不把我對這個系統的寬泛理解以及我已經耗費了幾個小時的研究所收集的知識讓更多人看到?雖然我無法說服自己不應該再寫另一篇漫無目的的文章,但是我很快就明白了:
這就是那篇文章。
我在現有文章中遇到的主要問題是,在深入研究具體細節之前,我找不到的任何內容總結了這些組件是什么以及它們如何組合起來的高級概述。 而這種高屋建瓴的呈現方式是我學習最好的方式。我是以這種方式來寫的,希望它也適合你。如果你知道任何描述了Kubernetes如何工作,而且讓人容易理解的專家級的文章/教程,請不要告訴我,因為你在我需要你的時候你在哪里,現在我寫了我的文章而你卻沒有及早把它拿出來。
另外請記住,我實際上只學習了Kubernetes一個星期左右,所以學得不會非常深入,有些可能是不準確的,希望沒有什么錯誤,這里的信息應該足夠讓你達到運行簡單集群的程度。
話雖如此,最后我發現Kubernetes中的概念還是非常簡單的,雖然我確信有很多東西我還不知道。但是,我知道的事情就足以建立一個集群并讓我們的應用在其上運行,而且我很確定它們足以讓大多數人知道如何開始。
基本概念
我們需要做的第一件事是詳細介紹Kubernetes的各個部分:
所有這些都可以使用命令行的kubectl創建,或者更安全地通過YAML文件創建,該文件將包含您要部署的內容的定義和詳細信息(然后執行kubectl apply -f <yaml file>)。
概括地講,您把容器放入pods中,這些pods將由deployment創建和部署,其網絡將由service處理,并添加ingress以便外部世界可以訪問您的服務器。
讓我們逐個介紹這些部分,看看它們的YAML配置是什么樣的。
The Pod
讓我們看一下將在容器中運行Redis鏡像的pod的YAML配置。 請記住,Pod并不是持久性的,所以你幾乎不會直接使用它。 相反,您將使用deployment間接部署Pod,我們將在下面介紹。
以下配置示例僅供您進行修改。 你只需要看看它,然后繼續閱讀,不要停下來驚嘆它的美麗。
正如您所看到的,它非常簡單,您添加了一堆Kubernetes特定的東西,每個都只是復制粘貼,然后您聲明此配置是為Pod,給它一個名稱,指定在其中運行的容器和他們監聽的端口,請刪除整個文件吧,你已經準備好了!
Kubernetes官方文檔中提供了更多關于Pod的信息。
The Deployment
以下是您實際運行上述Pod的方式,即使用deployment。 請記住,您根本不需要關注上面的Pod配置,我們將在deployment里重新定義它。
您會注意到這主要是上面的Pod配置,但有一些額外的配置,如副本(replica)等。這些定義了deployment的名稱以及我們要部署的副本數量。 更改副本數量,將會部署更多template部分中指定的Pod。
Kubernetes官方文檔中提供了更多關于Deployments的信息。
The Service
現在我們已經部署了一個Pod,我們需要將其端口暴露給集群的其余部分。 部署中的containerPort指令暴露了Docker端口,但實際上并不轉發主機上的端口,因此多個Pod(不是同一Pod中的容器)可以使用相同的端口而不會發生沖突。
要將上面的端口實際暴露給集群上運行的其他Pod,我們需要為它創建一個Service。 這將創建轉發端口所需的規則,并為我們提供DNS條目,我們可以使用該條目來解析該Pod的IP。
這會將Redis端口暴露給集群中的其他Pod,可以通過my-service:6379連接它。
要部署你的應用中更多部分,只需將另一個deployment和關聯的Service添加到群集即可。 您可以使用與上面的Redis完全相同的方式部署主應用程序服務。
The Ingress
最后,我們可以使用Ingress將我們的服務暴露給互聯網。 這里是使用Traefik的一個例子,雖然您可能實際上并不想將Redis暴露給外面的世界,但同樣的方法適用于您自己的應用程序。
這一節配置是告訴Traefik你希望所有名為redis.yourdomain.com的主機上的流量都轉發到我的服務端口6379。據我所知,這只是針對Traefik的配置。 在應用配置后,Pod將通過redis.yourdomain.com上的Traefik暴露到互聯網。
我希望這篇文章對初學者有用。這篇文章很簡短,因為Kubernetes的基礎很短,但我們設法涵蓋了如何以最小的麻煩來運行服務。
現在你應該懂Kubernetes是什么了!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對億速云的支持。如果你想了解更多相關內容請查看下面相關鏈接
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。