基于 Kubernetes 搭建 Nginx 服务的实现 —— 详细步骤

阅读时长 8 分钟读完

简介

随着互联网技术的发展,Web 服务已经成为了人们日常工作、学习、生活中不可或缺的一部分。而作为 Web 服务的首要组成部分,Nginx 的作用不可小觑。为了提高 Web 服务的质量和效率,Kubernetes(简称 K8s)已经成为了目前最火热的容器编排工具。本文将详细介绍如何基于 Kubernetes 平台搭建 Nginx 服务,让读者能够快速上手搭建自己的 Web 服务。

步骤

1. 环境准备

首先需要准备一台 Kubernetes 集群的环境。Kubernetes 集群环境的搭建可以参考官方文档进行操作。在确保环境无误之后,需要在工作节点上安装 Docker 容器环境。

安装完成后,再安装 Kubernetes 所必须的 kubelet 和 kubeadm 等组件。

2. 安装 Nginx

在 Kubernetes 环境下,我们需要安装一个容器化的 Nginx,这样才能支持多节点部署,并具备快速扩展的能力。我们将通过 Dockerfile 文件构建一个 Nginx 镜像,然后通过 Kubernetes 管理该镜像的运行状态。

首先在工作节点上创建一个 nginx 目录,进入该目录后新建一个 Dockerfile 文件,其内容如下:

这里的 Dockerfile 基于最新版本的 Nginx 镜像,再将我们自定义的 nginx.conf 文件拷贝到容器内 Nginx 的配置目录。创建该文件的目的是将 Nginx 的监听端口设置为 8888 端口,以避免和其它服务端口冲突。

接着,创建 nginx.conf 文件。

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

该配置文件包含一个监听端口为 8888 的虚拟主机,并将其指向容器内的 /usr/share/nginx/html 目录。此时,我们需要在该目录下创建一个 index.html 文件,在 Web 服务中访问时将会显示该文件的内容。

构建 Nginx 镜像:

创建该镜像后,我们需要将其推送到 Docker Hub 或其它容器镜像仓库中。这里我们使用 Docker Hub 进行演示。

在完成以上步骤后,我们已经成功地将我们自己创建的 Nginx 镜像推送到 Docker Hub上。

3. 编写 Kubernetes 部署配置

为了让 Kubernetes 管理 Nginx 镜像,需要编写 Kubernetes 的配置文件以指导 K8s 如何运行 Nginx。

首先,在工作节点上新建一个文件夹 nginx,进入该文件夹后新建 deploment.yaml 和 service.yaml 两个文件,其内容如下。

deployment.yaml

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

在该文件中,我们定义了一个名为 nginx 的 Deployment,使用的镜像为刚刚推送到 Docker Hub 上的 nginx-test:v1,该镜像会在 Docker 在容器中的 8888 端口上启动 Nginx 服务。

同时,我们将该部署实例的 Replication 数量定义为 1,即只在一个 Pod 中开启一个容器。这里为了方便,我们直接将 Pod 的 IP 地址暴露出去,如果生产环境可以使用 Kubernetes Service 来代替。

service.yaml

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

在该文件中,我们定义了一个名为 nginx 的 Service,将在 Kubernetes 中提供该服务的访问。该服务通过标签选择器关联到了我们刚刚部署的 Nginx 镜像,使用的端口号为 80。

在实际运行中,Kubernetes 会自动将该 Kubernetes Service 转换为一个 NodePort 或 LoadBalancer 类型的 Service,并自动生成一个随机端口。因此,在设置完成后,我们可以使用以下命令获取该服务在 Node 上的访问端口。

4. 运行 Nginx 服务

为了运行 Nginx 服务,我们需要使用 Kubernetes Client 连接到 Kubernetes 控制节点,并使用 kubectl 命令对我们刚刚定义的部署配置进行操作。

连接到 Kubernetes 控制节点

我们需要打开 Kubernetes 控制节点的 Web 界面,使用 token 登录。

然后,我们需要将 Kubernetes 配置文件中的 Docker Hub 用户名和密码设置为我们自己的镜像仓库用户名和密码。

然后,将配置文件中 auths 的 username 和 password 分别修改为 Docker Hub 的用户名和密码。

启动服务

执行以下命令,完成成下图中的配置:

在 Kubernetes 的 Web 界面中,我们可以看到 Nginx 服务的状态,并查看到它运行的云主机 IP 地址和随机端口号。在浏览器中输入该地址和端口号,就可以见到 Nginx 默认的欢迎页面,证明我们已经成功地搭建了一个基于 Kubernetes 的 Nginx 服务。

结论

本篇教程简要介绍了如何基于 Kubernetes 平台搭建 Nginx 服务,包括环境准备、Nginx 镜像构建和 Kubernetes 部署配置等主要步骤。该教程虽然简短,但是已经足够让读者能够快速上手搭建自己的 Web 服务。本文所提到的内容仅作为参考,具体实现还需要根据读者的实际需求进行调整。

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

纠错
反馈