一文讀懂 Kubernetes的四種服務型別!

語言: CN / TW / HK

Kubernetes 已成為管理和擴充套件雲原生應用程式的強大工具。組織需要快速部署他們的軟體,利用高度可擴充套件且始終可用的功能來保持零停機時間。隨著越來越多的應用程式被容器化和部署,任何組織管理這些容器變得越來越複雜。因此,縮放成為一個問題。這就是 Kubernetes 大放異彩的地方。藉助 Kubernetes,您可以輕鬆地自動化、部署、擴充套件和監控您的應用程式。

如果您閱讀過任何有關 Kubernetes 服務和網路的文件,您可能會遇到過 ClusterIP、NodePort、LoadBalancer 和 Ingress 等術語。這些術語似乎有很多混淆,在開始構建下一個基於 Kubernetes 的應用程式之前,您必須瞭解其中的區別。

本文將解釋這四種 Kubernetes 服務型別之間的區別,以及如何為您的應用程式選擇最好的一種。

01

瞭解您的應用程式的網路要求

Kubernetes 網路和服務是一個複雜的話題。您需要了解應用程式的需求才能成功地將其部署在 Kubernetes 上。這意味著瞭解您想要提供的服務型別、叢集的大小和位置,以及您希望應用程式接收什麼樣的流量。

Kubernetes 支援四種類型的服務:ClusterIP、NodePort、LoadBalancer 和 Ingress。每個都有自己的一組要求來為您的應用程式啟用它們,因此您必須在部署之前瞭解您需要哪一個。

例如,NodePort 允許同一節點內的 Pod 相互通訊,而無需分配 IP 地址。您的 Kubernetes 叢集必須至少有兩個節點才能使這種型別的網路通訊正常工作。此外,NodePort 僅在從叢集內部訪問時才有效,而 LoadBalancers 或 Ingress 則允許外部訪問。讓我們逐一瞭解它們的工作原理。

02

叢集IP

ClusterIP 是啟用叢集內多個 pod 通訊的預設服務。預設情況下,如果您不手動定義,您的服務將在 ClusterIP 上公開。ClusterIP 無法從外界訪問。但是,可以使用 Kubernetes 代理來訪問您的服務。此服務型別用於工作負載之間的內部網路,同時除錯服務、顯示內部儀表板等。

03

節點埠

NodePort 是最簡單的網路型別。它不需要配置,它只是將主機上隨機埠上的流量路由到容器上的隨機埠。這適用於大多數情況,但它確實有一些缺點:

  • 您可能需要使用反向代理(如 Nginx)來確保正確路由 Web 請求。
  • 每個埠只能公開一項服務。
  • 每次 Pod 啟動時,容器 IP 都會不同,因此無法解析 DNS。
  • 容器無法從 pod 外部訪問 localhost,因為沒有配置 IP。

不過,您可以在實驗期間和臨時用例(例如演示、POC 和內部培訓)中使用 NodePort,以展示流量路由的工作原理。建議不要在生產中使用 NodePort 來暴露服務。

04

負載均衡器

LoadBalancer 是 Kubernetes 網路最常用的服務型別。它是一個標準的負載均衡器服務,在每個 pod 上執行並建立與外部世界的連線,無論是與 Internet 等網路還是在您的資料中心內。

LoadBalancer 將保持對已啟動的 pod 的連線開啟,並關閉與已關閉的 pod 的連線。這類似於您在 AWS 上的 ELB 或 Azure 上的應用程式閘道器。上游為 HTTP(S) 流量提供第 4 層路由,而下游為 HTTP(S) 流量提供第 7 層路由。

您可以根據目標埠號、協議和主機名路由流量,或使用應用程式標籤。您可以將幾乎任何型別的流量傳送到此服務型別,例如 HTTP、TCP、UDP、Grpc 等。使用這種方法直接公開您的服務。

05

入口

Ingress 不被認為是官方的 Kubernetes 服務,但它可以用來暴露服務。您可以通過建立規則來配置 Ingress 服務,以定義哪些入站連線應到達哪些服務。

Ingress 是一個 Kubernetes 物件 ,它位於多個服務的前面並充當智慧路由器。它定義了外部流量如何到達叢集服務,並配置了一組規則以允許入站連線到達叢集上的服務。

入口規則通常由註釋定義。Ingress 控制器讀取這些註釋並相應地配置 iptables 或 NGINX。有許多型別的 Ingress 控制器具有不同的功能。您可以在此處找到入口控制器列表。

Ingress 是用於公開服務的最強大的服務型別,它只需要您維護一個負載均衡器,這比使用 LoadBalancer 服務型別便宜。

這是一個簡單的比較表,可幫助您快速瞭解服務型別。

06

Kubernetes

是雲原生世界的必備工具

Kubernetes 是自動化和管理IT 基礎架構的強大工具。它使您能夠對基礎架構的相關部分進行分組,在叢集中為它們提供自己的“節點”,使它們更易於管理、監控和更新。

隨著 Kubernetes 的採用率飆升,它已成為開發人員和企業在雲原生領域競爭的必備平臺。

有疑問加站長微信聯絡(非本文作者)