使用 Docker 和 Kubernetes 管理微服务

阅读时长 7 分钟读完

在创建和部署微服务应用程序时,容器化已经成为一种被广泛接受的好方法。容器化允许您将应用程序和它们的依赖项打包在一起,以使应用程序可以在任何环境中运行,这是容器的主要优势之一。然而,如果您正在使用多个容器,管理和协调它们可能会有点棘手。这就是 Kubernetes 的用武之地。本文将讨论如何使用 Docker 和 Kubernetes 管理微服务。

Docker

Docker 是一个非常流行的容器运行时,它使得打包和部署应用程序非常容易。它允许您创建 Docker 映像,这是一个打包应用程序和所有依赖项的单一文件。映像是轻量级的,并且可以在本地机器上运行,也可以在云上的服务器上运行。

安装 Docker

要安装 Docker,请访问 Docker 官网 https://www.docker.com/,然后根据您所使用的操作系统进行安装。

创建 Docker 映像

要创建 Docker 映像,您需要编写一个 Dockerfile,它指导 Docker 如何构建映像。以下是一个简单的 Dockerfile 示例:

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

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

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

---- - -

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

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

这个 Dockerfile 使用官方的 Node.js 12 映像,并在其中建立应用程序所需的目录和环境。它通过将当前目录中的 package.json 文件复制到映像中来安装应用程序依赖项。然后,它将当前目录复制到映像中,设置了环境变量 PORT,并暴露了它。

接下来,它使用 CMD 命令指定映像的默认命令。在这种情况下,它运行 npm start,这是启动应用程序所需的命令。

一旦编写了 Dockerfile,就可以使用 docker build 命令构建映像,如下所示:

在这里,-t 标志指定了新映像的名称和标签,这里是 my-app。

运行 Docker 映像

要在 Docker 中运行映像,请使用 docker run 命令,如下所示:

在这里,-p 标志指定应将容器的端口映射到主机的端口,并且 my-app 是要运行的 Docker 映像的名称。

您还可以在运行容器时使用其他标志,例如 -e 标志来设置环境变量。

Kubernetes

Kubernetes 是一个负责协调和管理多个容器的框架。它可以自动扩展您的应用程序并确保它们可靠地运行。它能够让运行应用程序变得更加高效和简单。

安装 Kubernetes

要在本地机器上安装 Kubernetes,请使用 Minikube。Minikube 是一种轻量级 Kubernetes 实现,可将 Kubernetes 单节点集群运行在本地。

要安装 Minikube,请访问 https://kubernetes.io/docs/tasks/tools/install-minikube/ 并根据您所使用的操作系统进行安装。

创建 Kubernetes 配置

要在 Kubernetes 中运行应用程序,您需要编写一个 Kubernetes 配置文件,其中包含 Kubernetes 资源(例如 Deployment 和 Service)。以下是一个简单的 Kubernetes 配置示例:

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

这个配置文件包含 Deployment 和 Service,它们将在 Kubernetes 中创建一个名为 my-app 的应用程序。

Deployment 与 Docker 中的容器相当。它指定要在 Kubernetes 中运行的映像,以及要在运行映像的 pod 数量。在这个例子中,它将使用名为 my-app 的 Docker 映像,并创建 3 个 pod。

Service 是一个将流量路由到运行 pod 的 Kubernetes 资源。它使用 label selector 来确定它应该从哪些 pod 中路由流量。在这个例子中,它将流量路由到带有标签 app=my-app 的 pod。

部署 Kubernetes 配置

要在 Kubernetes 中部署配置,请使用 kubectl 命令。您需要在运行这个命令之前启动 Minikube。

然后,运行以下命令来部署配置:

在这里,-f 标志指定要使用的 Kubernetes 配置文件的路径。在这个例子中,它是 kubernetes.yaml。

然后,Kubernetes 将使用您的配置文件创建 Deployment 和 Service 并运行它们。

水平扩展 Kubernetes

要水平扩展 Kubernetes,您需要更改配置文件中的 Deployment 中的 replica 数量。例如,要将 pod 数量增加到 5 个,请编辑配置文件并将 replicas 设置为 5。

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

然后,运行以下命令来更新 Deployment:

Kubernetes 将自动扩展您的应用程序并将其带在线。

故障转移 Kubernetes

Kubernetes 提供可靠的故障转移功能。如果容器崩溃或 pod 在某个节点上失败,Kubernetes 会自动将 pod 转移到另一个节点。

停止 Kubernetes

要停止 Minikube,请使用以下命令:

总结

使用 Docker 和 Kubernetes 管理微服务是一种高效而易于扩展的方式。Docker 可以打包应用程序和依赖项,并将它们部署到任何地方。Kubernetes 可以自动扩展应用程序,确保它们可靠地运行,并提供故障转移功能。

有了 Docker 和 Kubernetes,您可以轻松管理微服务,并轻松地部署和扩展它们。本文提供了示例 Dockerfile 和 Kubernetes 配置文件,帮助您入门。

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

纠错
反馈