如何通过 NodePort 暴露 Kubernetes 服务

阅读时长 5 分钟读完

在 Kubernetes 集群的使用过程中,我们经常需要将服务暴露在集群外部,以便外部用户可以访问该服务。在 Kubernetes 的网络模型中,一个服务可以通过多种方式暴露,其中一种方式是 NodePort。

本文将介绍 NodePort 的概念、用途、配置步骤及示例代码,帮助读者深入了解 NodePort 的使用方法,方便快捷地将 Kubernetes 服务暴露给外部用户。

什么是 NodePort?

NodePort 是 Kubernetes 中一种将服务暴露给集群外部的方式,该方式会在每个节点上保留一个端口,然后将所有节点的这个端口都映射到 Kubernetes 集群中的服务。

NodePort 的端口范围是 30000-32767,这些端口是被预留出来的,由 Kubernetes 自动分配,而不需要手动配置。

NodePort 的用途

NodePort 的主要用途是将服务暴露给集群外部。当集群内部的其他服务需要访问该服务时,通常会使用服务的集群内部地址。

NodePort 的另一个优点是它非常适合测试环境和临时环境。在这些环境中,我们通常不需要为服务配置负载均衡器或其他高可用性功能,而 NodePort 可以快速方便地将服务暴露给外部用户。

配置 NodePort 的步骤

下面是配置 NodePort 的步骤:

1. 创建一个 Kubernetes 服务

首先,我们需要在 Kubernetes 中创建一个服务。我们可以使用 YAML 文件来创建服务,如下所示:

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

在这个 YAML 文件中,我们定义了一个名为 my-service 的服务,它会监视符合标签 app=my-app 的所有应用程序实例,并将服务运行在端口 80 上。服务类型为 NodePort,所以它会在每个节点上保留一个端口并将其映射到服务。

2. 暴露服务

接下来,我们可以使用 kubectl expose 命令将服务暴露到外部。

在这个命令中,我们使用 kubectl expose 命令将名为 my-deployment 的 Kubernetes 部署暴露为 NodePort 服务。服务类型为 NodePort,端口为 80。

3. 查看端口

最后,我们可以使用 kubectl get service 命令查看服务的端口:

在这个命令的输出中,我们看到 my-deployment 的类型是 NodePort,它被映射到了 32767 端口。

NodePort 示例代码

下面是一个 NodePort 示例代码:

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

在这个示例代码中,我们创建了一个名为 nginx-deployment 的 Deployment,并将其部署在 Kubernetes 集群中。该 Deployment 包含两个副本,并使用 nginx:1.17.9 镜像运行一个 nginx 容器。

然后,我们创建了一个名为 nginx-service 的 NodePort 服务,并将其映射到 30000 端口。服务的选择器选择了与 Deployment 标签相匹配的 pod,以便服务能够监视该 pod。

总结

NodePort 是 Kubernetes 中一种将服务暴露给集群外部的方式。NodePort 的主要用途是将服务暴露给集群外部,并非用于内部服务之间的通信。

配置 NodePort 的步骤包括:创建一个 Kubernetes 服务,将服务暴露到外部,查看端口。在服务类型为 NodePort 时,它会在每个节点上保留一个端口并将其映射到服务。我们也给出了一个 NodePort 示例代码,帮助读者更好地理解它的使用方法。

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

纠错
反馈