91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何簡潔優雅地實現Kubernetes的服務暴露

發布時間:2021-11-15 17:10:41 來源:億速云 閱讀:180 作者:柒染 欄目:云計算

這篇文章將為大家詳細講解有關如何簡潔優雅地實現Kubernetes的服務暴露,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

如何使用端口映射在Rancher 2.0中暴露Kubernetes工作負載。

小編將介紹Kubernetes中用于為工作負載暴露公共端口的選項及其優缺點。


使用容器部署應用程序時,常常需要將外部流量路由到應用程序容器。

要提供外部訪問,通常使用的標準方法是在部署應用程序的節點上公開公共端口,或在應用程序容器前放置負載均衡器。

相信使用Rancher 1.6的Cattle的用戶,都熟悉如何使用端口映射來暴露服務。在本文中,我們將探討如何使用端口映射在Rancher 2.0中暴露Kubernetes工作負載。使用負載均衡解決方案是一個更大的主題,我們日后會有專門的文章來探討它。

Rancher 1.6中的端口映射

Rancher 1.6中,用戶能夠通過端口映射來部署容器化應用并暴露它們。

如何簡潔優雅地實現Kubernetes的服務暴露

用戶可以選擇主機上的特定端口,或讓Rancher分配一個隨機端口,并打開該端口以允許外部訪問。 此公共端口會將流量路由到該主機上運行的服務容器的專用端口。

Rancher 2.0中的端口映射

Rancher 2.0還支持將端口映射添加到部署在Kubernetes集群上的工作負載中。Kubernetes中用于為工作負載暴露公共端口的選項有:

  • HostPort

  • NodePort

如何簡潔優雅地實現Kubernetes的服務暴露

如上所示,Rancher 2.0中端口映射的UI與1.6體驗非常相似。Rancher在為Kubernetes集群創建部署時,會在內部添加必要的Kubernetes HostPort或NodePort規范。

下面讓我們更詳細地來分別看一下HostPort和NodePort。

什么是HostPort?

創建Kubernetes中的工作負載時,你必須在“容器”部分的Kubernetes YAML規范中指定HostPort設置。當您選擇HostPort進行映射時,Rancher會在內部執行此操作。

指定HostPort后,在部署pod容器的主機上,該端口會暴露給外部訪問。在<host IP>:<HostPort>上的流量將會被路由到pod容器的專用端口。

如何簡潔優雅地實現Kubernetes的服務暴露

如下是我們的Nginx工作負載的Kubernetes YAML如何指定'ports'部分下的HostPort設置:

如何簡潔優雅地實現Kubernetes的服務暴露

將HostPort用于Kubernetes pod,相當于在Rancher 1.6中為Docker容器暴露一個公共端口。

HostPort的優點:

  • 通過HostPort設置,您可以請求暴露主機上的任何可用端口。

  • 配置很簡單,HostPort設置直接放在Kubernetes pod規范中。與NodePort相比,不需要創建其他對象來暴露應用程序。

HostPort的缺點:

  • 使用HostPort會限制pod的調度,因為只有那些具有指定端口可用的主機才能用于部署。

  • 如果工作負載的規模大于Kubernetes集群中的節點數,部署會失敗。

  • 指定了相同HostPort的任何兩個工作負載,都將無法部署在同一節點上。

  • 如果運行pod的主機出現故障,Kubernetes將不得不將pod重新安排到不同的節點。如此一來,可以訪問工作負載的IP地址將發生變化,從而破壞應用程序的外部客戶端。當pod重新啟動時也會發生同樣的事情,Kubernetes會在不同的節點上重新安排它們。

什么是NodePort?

在我們深入研究如何創建NodePort來暴露Kubernetes工作負載之前,讓我們先了解一些Kubernetes服務的背景知識。

Kubernetes服務

Kubernetes服務是一個REST對象,它抽象了對Kubernetes pod的訪問。Kubernetes pod監聽的IP地址不能用作公共訪問工作負載的可靠端點,因為pod有可能被動態地銷毀和重新創建,從而更改其IP地址。

Kubernetes服務為pod提供靜態端點。因此,通過Kubernetes服務的界面,即使pod切換IP地址,依賴于通過這些pod啟動的工作負載的外部客戶端也能夠繼續訪問工作負載,不會中斷,也對后端pod的重新創建無感。

默認情況下,你可以在內部IP上的Kubernetes集群中訪問服務。此內部作用域使用服務規范的type參數定義。因此,默認情況下,對于服務,yaml是type:ClusterIP。

如果你想在Kubernetes集群外部暴露服務,請參閱Kubernetes中的這些ServiceType選項:

https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types。

而ServiceType中的其中一種類型就是我們下文要說的NodePort,它提供對為工作負載窗口創建的Kubernetes服務的外部訪問。

如何定義NodePort

再回過頭來看運行Nginx鏡像的工作負載。對于此工作負載,我們需要對外暴露私有容器端口80。

要實現這一目的,我們可以為工作負載創建NodePort服務。NodePort服務規范如下所示:

如何簡潔優雅地實現Kubernetes的服務暴露

如果我們指定NodePort服務,Kubernetes將在每個節點上分配一個端口。 選擇的NodePort將在創建后在服務規范中可見,正如上所示。或者,我們也可以在創建服務時指定要在規范中用作NodePort的特定端口。如果未指定特定的NodePort,將隨機選取Kubernetes集群上配置的范圍(默認值:30000-32767)中的端口。

從Kubernetes集群外部,進入<NodeIP>:<NodePort>的流量將被定向到工作負載(由kube-proxy組件完成這項工作)。NodeIP可以是Kubernetes集群中任何節點的IP地址。

如何簡潔優雅地實現Kubernetes的服務暴露

NodePort的優點:

  • 創建NodePort服務將為工作負載pod提供靜態的公共端點。因此,即使pod被動態銷毀,Kubernetes也可以在集群中的任何位置部署工作負載,而無需更改公共端點。

  • pod的規模不受集群中節點數量的限制。Nodeport允許將公共訪問與pod的數量和位置分離。

NodePort的缺點:

  • 使用NodePort時,即使工作負載從未在該節點上部署,<NodeIP>:<NodePort>也會在Kubernetes集群中為每個節點保留。

  • 您只能從配置的范圍中指定端口,而不能指定任何隨機端口。

  • 需要額外的Kubernetes對象(類型為NodePort的Kubernetes服務)來暴露您的工作負載。因此,了解您的應用程序是如何暴露的并不簡單。

從Docker Compose到Kubernetes YAML

上文的內容介紹了與1.6相比,Cattle用戶能如何在Rancher 2.0 UI中添加端口映射。現在讓我們看看我們如何通過compose文件和Rancher CLI來做同樣的事情。

我們可以使用Kompose工具將docker-compose.yml文件從Rancher 1.6轉換為Kubernetes YAML,然后使用Rancher CLI在Kubernetes集群中部署應用程序。

這是在1.6上運行的上述Nginx服務的docker-compose.yml配置:

如何簡潔優雅地實現Kubernetes的服務暴露

Kompose會為在Rancher 2.0中部署Nginx工作負載所需的Kubernetes部署和服務對象生成YAML文件。Kubernetes部署規范定義了pod和容器規范,而服務規范定義了對pod的公共訪問。

如何簡潔優雅地實現Kubernetes的服務暴露

通過Kompose和Rancher CLI添加HostPort

即使docker-compose.yml指定了暴露的端口,Kompose也不會將所需的HostPort構造添加到我們的部署規范中。因此,為了復制Rancher 2.0集群中的端口映射,我們可以手動將HostPort構造添加到nginx-deployment.yaml中的pod容器規范中,并使用Rancher CLI進行部署。

如何簡潔優雅地實現Kubernetes的服務暴露

如何簡潔優雅地實現Kubernetes的服務暴露

通過Kompose和Rancher CLI添加NodePort

要通過Kompose為部署添加NodePort服務,應根據Kompose文檔將標簽kompose.service.type添加到docker-compose.yml文件中:

https://github.com/kubernetes/kompose/blob/master/docs/user-guide.md#labels

如何簡潔優雅地實現Kubernetes的服務暴露

現在docker-compose.yml已經包含了所需的NodePort服務以及部署規范了,那么我們就可以開始使用這一docker-compose.yml運行Kompose了。使用Rancher CLI,我們可以通過NodePort成功部署以暴露工作負載了。

如何簡潔優雅地實現Kubernetes的服務暴露


這里探討了如何在Rancher 2.0中使用端口映射來將應用程序工作負載暴露給公共訪問。Rancher 1.6中端口映射的功能可以輕松轉換到Kubernetes平臺。此外,Rancher 2.0 UI在創建或升級工作負載時為映射端口提供了相同的直觀體驗。

關于如何簡潔優雅地實現Kubernetes的服務暴露就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

文水县| 泸州市| 古田县| 鸡西市| 开化县| 兴海县| 琼结县| 治县。| 芮城县| 朝阳区| 沐川县| 萝北县| 南溪县| 进贤县| 陆良县| 福泉市| 灵丘县| 武穴市| 玛曲县| 宁安市| 新建县| 平南县| 凤冈县| 交口县| 大田县| 济南市| 莆田市| 弋阳县| 五河县| 鸡西市| 盐池县| 绵阳市| 茌平县| 安图县| 太白县| 谷城县| 温州市| 柳林县| 麦盖提县| 广水市| 鞍山市|