在 Kubernetes 上实现外部访问 Service

阅读时长 3 分钟读完

在 Kubernetes 集群中,Service 是作为应用程序的入口点,负责将外部的请求转发到后端的 Pod。但是默认情况下,Service 是只能在 Kubernetes 集群内部访问的,无法从外部网络进行访问。如何在 Kubernetes 集群中实现外部访问 Service 呢?本文将介绍两种方法:使用 LoadBalancer 类型的 Service 和使用 Ingress 。

使用 LoadBalancer 类型的 Service

在 Kubernetes 中,LoadBalancer 类型的 Service 允许在云服务提供商的负载均衡器中创建外部的入口,从而可以通过公网访问 Service 。但是需要注意的是,这种方式只适用于云服务提供商所支持的负载均衡器。

下面是使用 LoadBalancer 的示例代码:

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

在上面的代码中,type 设置为 LoadBalancer , ports 定义了 Service 监听的端口。将这个 Service 对象在 Kubernetes 集群中创建,即可在云服务提供商的负载均衡器中创建一个入口,从而可以通过公网访问 Service 。

使用 Ingress

Ingress 是 Kubernetes 集群中用于管理和暴露 HTTP 和 HTTPS 服务的 API 对象。通过 Ingress,可以向服务提供外部的访问入口,支持多个域名和路径,并且可以设置 HTTPS 密钥等。Ingress 需要在 Kubernetes 集群中安装 ingress-controller 才能正常工作。

下面是使用 Ingress 的示例代码:

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

在上面的代码中,通过 annotations 来设置了 nginx ingress 的参数,rules 用于指定访问规则,如域名和路径。将这个 Ingress 对象在 Kubernetes 集群中创建,即可配置外部访问 Service 的入口。

总结

通过本文的介绍,我们学习了如何在 Kubernetes 集群中实现外部访问 Service。其中使用 LoadBalancer 的方式适用于云服务提供商支持的负载均衡器,而 Ingress 则支持更加灵活的访问配置,但需要在集群中安装 ingress-controller 。不同的方式适用于不同的场景,需要根据具体情况选择。

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

纠错
反馈