Kubernetes 中服务的外部暴露

在 Kubernetes 中,想要让服务能够被外部访问,需要对服务进行外部暴露。下面将介绍 Kubernetes 中三种常用的服务外部暴露方式,以及它们的使用场景和具体操作方法。

1. ClusterIP

ClusterIP 是 Kubernetes 中默认的服务类型。它会在集群内创建一个虚拟 IP 地址,只有在集群内部才能访问到这个 IP 地址。如果我们想要在集群外部访问这个服务,那么就需要将这个服务的 ClusterIP 暴露到外部。

使用场景

在需要将服务暴露到集群外部时使用 ClusterIP。

操作方法

在创建服务时,需要将服务类型设置为 ClusterIP。示例代码如下:

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

创建服务后,使用 kubectl 命令将该服务的端口暴露出去,如下:

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

这里使用的是 LoadBalancer 类型,将服务的端口映射到了 LoadBalancer 上,从而使服务能够被外部访问。kubectl 命令会返回一个 LoadBalancer 的 IP 地址,我们就可以使用这个 IP 地址访问该服务了。

2. NodePort

NodePort 是一个简单的方式,允许我们将服务暴露到集群外部。它会在所有节点上,分配一个固定的端口,可以通过任意节点的 IP 地址和该端口号访问该服务。

使用场景

当需要在集群外部访问服务时,或希望使用固定端口的方式访问服务时使用 NodePort。

操作方法

在创建服务时,需要将服务类型设置为 NodePort。示例代码如下:

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

创建服务后,使用 kubectl 命令获取该服务的 NodePort,如下:

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

kubectl 将返回服务的 NodePort,我们就可以使用任何节点的 IP 地址和 NodePort 访问该服务了。

3. LoadBalancer

LoadBalancer 是一种非常常见的服务暴露方式,它借助云服务商提供的负载均衡器,将服务暴露到集群外部。在使用 LoadBalancer 的方式时,Kubernetes 将会在云服务商上部署负载均衡器,以便将流量转发到服务所在的节点上。

使用场景

当需要使用单独的负载均衡器来管理服务的流量时使用 LoadBalancer。

操作方法

在创建服务时,需要将服务类型设置为 LoadBalancer。示例代码如下:

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

创建服务后,服务将自动创建一个负载均衡器,并将服务暴露到外部。我们可以使用 kubectl 命令获取该服务的外部 IP 地址,如下:

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

kubectl 将返回服务的外部 IP 地址,我们就可以使用该 IP 地址访问该服务了。

结论

Kubernetes 提供了不同的方式来暴露服务。ClusterIP 是默认的方式,NodePort 是一个简单的方式,LoadBalancer 则使用负载均衡器来管理服务流量。开发人员需要根据应用的需求选择适当的方式。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670a5110d91dce0dc8805cd4