Kubernetes 中使用 Ingress 实现服务暴露详解

阅读时长 13 分钟读完

在 Kubernetes 中,我们需要将应用程序暴露给外部。传统上,这可以通过 NodePort 或 LoadBalancer 类型的服务实现。但是,在生产环境中使用 Ingress 类型的服务可以更好地满足需求。这篇文章将介绍 Kubernetes 中使用 Ingress 实现服务暴露的详细过程,并包含示例代码,以帮助读者更好地了解 Ingress 的使用。

Ingress 是什么?

Ingress 是一种 Kubernetes 资源类型,用于将入站的 HTTP(S) 流量路由到后端服务。Ingress 是一种 API 对象,允许您定义如何将流量路由到 Kubernetes 集群中的服务。

如何使用 Ingress?

在 Kubernetes 中使用 Ingress 的步骤如下:

第一步:安装 Ingress Controller

Ingress Controller 是一个实现了 Ingress 标准的反向代理服务。在 Kubernetes 中,有很多 Ingress Controller 的实现,如 Nginx、Traefik 等。在这里,我们以 Nginx Ingress Controller 为例。

首先,我们需要安装 Ingress Controller,可以参考下面代码:

-- -------------------- ---- -------
----------- --
----- ---------
---------
  ----- -------------
  -------
    ----------------------- -------------
    -------------------------- -------------
---
----------- --
----- ---------
---------
  ----- -------------------
  ---------- -------------
-----
  ------------------- -------
  ---------------------- ------
  ------------- -
    - ---- ------- -- -------- --------
    ---------- ---------------- --- ----------- -------
    ---------- ---------------------- --------- -------
    ---------- ------------------------- ------------------ ------------------ -------- -------
    - ----- ----- ---------- ---- ------
    -- ----------------- -- ---------------- --------------------------------------------------------- ------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------- --------------- ------------ -------------------------- ----------------- ---- ---------------------------- ------------------ ------------ ------------------------------------------- ------------------------------- ----------------- --------------------------- -------------------------------------------------------------------------------------------------------------- ---------------- ------ -------------- ---------------------------------------- ------------------------------------------ ------------------ ---------------------------------------------------------- - -
      ------ ----
    -
    - ----- -------- ---- ---- ------ ---------
    -- ---------------- -- --------------------- -
      ------ ----
    -
    - ----- ---- ---- -------- ---- ------- ------- ---------
    -- ---------------- - ----- -
      ------ ----
    -
---
----------- --
----- ---------
---------
  ----- ------------
  ---------- -------------
-----
  ------- ------------------------------
---
----------- --
----- ---------
---------
  ----- ------------
  ---------- -------------
-----
  ----- ------------------------------
---
----------- --
----- --------------
---------
  ----- ----------------------------
  ---------- -------------
---
----------- ----------------------------
----- -----------
---------
  ----- ------------------
------
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - ----------
      - ---------
      - -------
      - -----
      - ----
      - -------
      - --------
    ------
      - ---
      - ----
      - -----
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - -----
    ------
      - ---
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - --------
    ------
      - ---
      - ----
      - -----
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - ----------
    ------
      - ------
      - ---
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - ---------
    ------
      - ------
      - ---
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - -------
    ------
      - ------
      - ---
  - ----------
      - --
      - ----------
      - -----------------
    ----------
      - ----
    ------
      - ---
  - ----------
      - --
      - ----------
    ----------
      - ------
    ------
      - ------
      - -----
---
----------- ----------------------------
----- ------------------
---------
  ----- -------------------------------
--------
  --------- -------------------------
  ----- -----------
  ----- ------------------
---------
  - ----- --------------
    ----- ----------------------------
    ---------- -------------
---
----------- ------------------
----- ----------
---------
  ----- ------------------------
  ---------- -------------
-----
  --------- -
  ---------
    ------------
      ---- -------------
  ---------
    ---------
      -------
        ---- -------------
    -----
      - ------------------- ----------------------------
      ------------------------------ --
      -----------
        - ----- ------------------------
          ------ ---------------------------------------------------------------------
          -----
            - -------------------------
            - ------------------------------------------------
            - ------------------------------------------------------
            - ------------------------------------------------------
            - -----------------------------------------------------------
            - ------------------------------------------------
          ----
            - ----- --------
              ----------
                ---------
                  ---------- -------------
            - ----- -------------
              ----------
                ---------
                  ---------- ------------------
          ------
            - ----- ----
              -------------- --
              --------- --
            - ----- -----
              -------------- ---
              --------- ---
            - ----- --------------------
              -------------- ----
---
----------- --
----- -------
---------
  ----- ------------------------
  ---------- -------------
-----
  ----- ---------
  ------
    - ----- ----
      ----- --
      ----------- --
    - ----- -----
      ----- ---
      ----------- ---
  ---------
    ---- -------------

第二步:创建服务

创建一个后端服务,以便为访问者提供应用程序的实例。可以参考下面代码:

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- -----------
  -------
    ---- -----------
-----
  --------- -
  ---------
    ------------
      ---- -----------
  ---------
    ---------
      -------
        ---- -----------
    -----
      -----------
        - ----- -----------
          ------ -----
          ------
            - -------------- --
---
----------- --
----- -------
---------
  ----- ---------------
-----
  ---------
    ---- -----------
  ------
    - ----- ----
      ----------- --

第三步:定义 Ingress

定义 Ingress 的规则以将访问路由到服务。在这个例子中,我们将通过域名访问应用程序,该应用程序已映射到 Kubernetes 中的 NodePort 30000。在宿主机器的 /etc/hosts 文件中,将域名指向 NodePort 30000。可以参考下面代码:

-- -------------------- ---- -------
----------- -------------------------
----- -------
---------
  ----- ---------------
-----
  ------
    - ----- -----------
      -----
        ------
          - ----- --------
            --------
              ------------ ---------------
              ------------ --

第四步:测试

现在可以通过浏览器访问 http://example.com/example,应该可以看到该应用程序的页面。

总结

本文介绍了 Kubernetes 中使用 Ingress 实现服务暴露的详细过程,并提供了示例代码以帮助读者更好地了解 Ingress 的使用。使用 Ingress 可以更好地管理和控制流量,并为应用程序提供更稳定和更安全的服务,值得我们在实践中深入应用。

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

纠错
反馈