Kubernetes Ingress 与 Nginx Ingress 的区别

阅读时长 4 分钟读完

随着微服务的普及,越来越多的应用在 Kubernetes 集群中运行。在 Kubernetes 中,Ingress 是一种特殊的 Kubernetes 资源,用于路由 HTTP 和 HTTPS 请求到应用程序。 Kubernetes 支持各种类型的 Ingress 控制器,其中最流行的是 Nginx Ingress 和 Kubernetes Ingress。

Kubernetes Ingress 是什么?

Kubernetes Ingress 是 Kubernetes 中的一种资源对象,它允许将 HTTP 和 HTTPS 流量路由到 Kubernetes 集群中的不同服务。使用 Kubernetes Ingress Controller 可以轻松地管理和配置多个应用程序的路由规则。相比于 Nginx Ingress,Kubernetes Ingress 配置更加简单,并且与 Kubernetes API 直接交互。

Nginx Ingress 是什么?

Nginx Ingress 是一个开源的 Ingress 控制器,它基于 Nginx Web 服务器并扩展了其功能。与 Kubernetes Ingress 不同,使用 Nginx Ingress 需要在 Kubernetes 集群之外部署和管理 Nginx Ingress 控制器和 Web 服务器。

区别

Kubernetes Ingress 和 Nginx Ingress在以下方面存在差异:

部署方式

Kubernetes Ingress 与 Kubernetes API 直接进行交互,因此不需要在 Kubernetes 集群外部部署控制器。而 Nginx Ingress 需要在 Kubernetes 集群外部部署 Nginx 控制器。

配置

Kubernetes Ingress 支持一组简单而清晰的配置选项,包括规则、tls、服务、后端等。与之相比,Nginx Ingress 支持更多的高级选项,例如自定义插件,但配置更加复杂。

性能

Nginx 是业内通用的 Web 服务器和负载均衡器,具有出色的性能和可靠性。与之相比,Kubernetes Ingress 相对较新,尚未广泛使用和验证,因此可能不够稳定和成熟。

灵活性

Nginx Ingress 提供了灵活的配置选项,可以自定义负载均衡、缓存、重定向、HTTPS 和其他功能的行为。与之相比,Kubernetes Ingress 配置较为简单,仅支持基本的路由和负载平衡。

示例代码

以下是使用 Nginx Ingress 部署应用程序的 Kubernetes 配置文件示例:

-- -------------------- ---- -------
----------- ------------------
----- -------
---------
  ----- ----------
  ------------
    ------------------------------------------- ---
-----
  ------
  - -----
      ------
        - ----- ------------
          --------
            ------------ ------
            ------------ --
展开代码

该文件定义了一个名为 my-ingress 的 Ingress 资源,使用 Nginx Ingress 控制器将所有 /my-app/* 的流量转发到服务 my-app 的端口号为 80 的后端。 nginx.ingress.kubernetes.io/rewrite-target 注释是 Nginx Ingress 控制器的指令,告诉控制器如何重新写请求 URL。

使用 Kubernetes Ingress,你只需要创建一个 Ingress 资源即可:

-- -------------------- ---- -------
----------- --------------------
----- -------
---------
  ----- ----------
-----
  ------
  - ----- ----------
    -----
      ------
        - ----- --------- 
          --------- ------
          --------
            --------
              ----- ------
              -----
                ----- ----
展开代码

该配置文件指定了一个名为 my-ingress 的 Ingress 资源,其中 /my-app/* 将被重定向到 my-app 服务的名称为 http 的端口。pathType 将前缀模式设置为掉主机名和路径。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d644cfa941bf7134bf7807

纠错
反馈

纠错反馈