在创建和部署微服务应用程序时,容器化已经成为一种被广泛接受的好方法。容器化允许您将应用程序和它们的依赖项打包在一起,以使应用程序可以在任何环境中运行,这是容器的主要优势之一。然而,如果您正在使用多个容器,管理和协调它们可能会有点棘手。这就是 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 命令构建映像,如下所示:
docker build -t my-app .
在这里,-t 标志指定了新映像的名称和标签,这里是 my-app。
运行 Docker 映像
要在 Docker 中运行映像,请使用 docker run 命令,如下所示:
docker run -p 3000:3000 my-app
在这里,-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。
minikube start
然后,运行以下命令来部署配置:
kubectl apply -f kubernetes.yaml
在这里,-f 标志指定要使用的 Kubernetes 配置文件的路径。在这个例子中,它是 kubernetes.yaml。
然后,Kubernetes 将使用您的配置文件创建 Deployment 和 Service 并运行它们。
水平扩展 Kubernetes
要水平扩展 Kubernetes,您需要更改配置文件中的 Deployment 中的 replica 数量。例如,要将 pod 数量增加到 5 个,请编辑配置文件并将 replicas 设置为 5。
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- ------ ----- --------- - --------- ------------ ---- ------ --------- --------- ------- ---- ------ ----- ----------- - ----- ------ ------ ------ ------ - -------------- ----
然后,运行以下命令来更新 Deployment:
kubectl apply -f kubernetes.yaml
Kubernetes 将自动扩展您的应用程序并将其带在线。
故障转移 Kubernetes
Kubernetes 提供可靠的故障转移功能。如果容器崩溃或 pod 在某个节点上失败,Kubernetes 会自动将 pod 转移到另一个节点。
停止 Kubernetes
要停止 Minikube,请使用以下命令:
minikube stop
总结
使用 Docker 和 Kubernetes 管理微服务是一种高效而易于扩展的方式。Docker 可以打包应用程序和依赖项,并将它们部署到任何地方。Kubernetes 可以自动扩展应用程序,确保它们可靠地运行,并提供故障转移功能。
有了 Docker 和 Kubernetes,您可以轻松管理微服务,并轻松地部署和扩展它们。本文提供了示例 Dockerfile 和 Kubernetes 配置文件,帮助您入门。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d4936ab5eee0b525c231c0