Kubernetes 上部署 Nginx 的最佳实践

阅读时长 7 分钟读完

Kubernetes 是一个广泛使用的容器编排工具,能够大规模管理容器化应用程序。它可以快速扩展容器化应用程序,使其具备高可用性和弹性。部署一个 Nginx 服务在 Kubernetes 上可以让您更好地利用 Kubernetes 的能力和优势,本文将详细介绍 Kubernetes 上部署 Nginx 的最佳实践。

准备工作

在部署 Nginx 服务之前,您需要创建一个 Kubernetes 集群。如果您还没有一个 Kubernetes 集群,可以使用 Minikube 搭建一个本地的测试环境。

此外,您还需要安装 Kubernetes CLI 工具,比如 kubectl 命令行工具,以及 Helm 包管理器。

步骤一:创建 Nginx Deployment

在 Kubernetes 中,一个 Deployment 负责部署应用程序的一个副本集,并执行滚动升级和自动修复等操作。因此,我们首先需要创建一个 Nginx 的 Deployment。

使用以下 YAML 文件创建一个名为 nginx-deployment 的 Deployment:

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

这个 YAML 文件指定了一个由 3 个副本组成的 Deployment,在每个副本中都运行该 Nginx 镜像,该镜像映射到容器端口 80。该部署的 selector 属性告诉 Kubernetes 现在有一个名为 "nginx" 的应用程序,应该选择属于 "nginx" 应用程序的所有 pod。

执行以下命令创建该 Deployment:

您可以使用以下命令进行检查:

步骤二:创建 Nginx Service

在 Kubernetes 中,服务是负责将请求路由到正确的 Pod 的抽象对象。一个 Pod 可能会被创建或者销毁,并被分配到不同的 IP 地址上,但是服务通过一个固定的 IP 地址和端口号对外提供服务。这就为服务消费者提供了一个稳定的地址,而无需关心后端 Pod 的实际位置。因此,我们需要为这个 Nginx 部署创建一个服务。

使用以下 YAML 文件创建一个名为 nginx-service 的服务:

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

该 YAML 文件中的 type 属性指定了该服务的类型,您可以使用 LoadBalancer 或者 NodePort 等其他类型。

执行以下命令创建该服务:

您可以使用以下命令进行检查 Nginx 服务是否有效:

步骤三:测试 Nginx 服务

使用以下命令获取服务 IP 地址和端口:

通过该 IP 地址和端口号,可以测试 Nginx 服务是否正常工作:

您可以使用 Web 浏览器访问,应该可以看到 Nginx 的默认欢迎页面。这表明您已经成功安装 Nginx。

步骤四:使用 Helm 部署 Nginx-ingress Controller

Nginx-ingress Controller 是 Kubernetes 上的一种 Ingress Controller,特点是使用 Nginx 作为反向代理,处理所有流量,解密 SSL,并根据基于规则的 URL 转发流量到相应的服务。这是一个有效的解决方案,如果您决定将多个域名映射到不同的集群服务上。

使用以下命令安装 Helm:

使用以下命令添加 Nginx-ingress Helm 仓库:

安装 Nginx-ingress Controller:

检查 Nginx-ingress Controller 是否处于运行状态:

步骤五:创建 Ingress 资源

在 Kubernetes 中,Ingress 资源允许您定义规则将外部请求路由到集群内的服务。以下是一个例子:

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

该 YAML 文件使用 host 属性指定了要为该规则路由到的域名,以及要为该域名路由到的服务。该 YAML 文件告诉 Nginx-ingress 在针对 nginx.example.com 的所有 HTTP 请求中查找前缀为 /nginx 的路径,并将它们路由到 nginx-service 服务上。

执行以下命令创建 Ingress 资源:

步骤六:测试 Ingress

通过 Nginx-ingress 在 Kubernetes 中创建并配置的 Ingress 资源,您可以通过浏览器针对您的 Nginx 服务调用它。

要查找当前 Kubernetes 上的 IP 地址,请执行以下命令:

然后,您可以使用 Web 浏览器访问 http://IP address/nginx,以验证 Ingress 服务是否起作用。

总结

在本文中,我们详细介绍了 Kubernetes 上部署 Nginx 的最佳实践。步骤一和步骤二涵盖了如何创建 Nginx Deployment 和 Service。步骤三涵盖了如何测试 Nginx 服务是否有效。步骤四涵盖了如何使用 Helm 部署 Nginx-ingress Controller。步骤五和步骤六则涵盖了如何创建和测试 Kubernetes 中的 Ingress 规则。

通过本文,您应该了解到如何使用 Kubernetes 管理 Nginx 服务。

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

纠错
反馈