适合初学者的 Nodejs 应用程序 + Kubernetes
大家好。我们将开始一个 Kubernetes 系列。在本系列中,我们将学习 Kubernetes 的基础知识,并尝试使用 Kubernetes 部署我们的示例微服务代码。 免责声明 :) 如果您没有 Docker 的先验知识,请参考这篇博客。它将帮助您更准确地了解 Kubernetes。 我们将在本文中实现的目标 什么是 Kubernetes?为什么以及何时应该使用它? 2.整个服务的流程。 创建
大家好。我们将开始一个 Kubernetes 系列。在本系列中,我们将学习 Kubernetes 的基础知识,并尝试使用 Kubernetes 部署我们的示例微服务代码。
免责声明 :) 如果您没有 Docker 的先验知识,请参考这篇博客。它将帮助您更准确地了解 Kubernetes。
我们将在本文中实现的目标
- 什么是 Kubernetes?为什么以及何时应该使用它?
2.整个服务的流程。
-
创建基础微服务。
-
添加Kubernetes必要文件并解释这些文件。
-
运行这个 Kubernetes 并在 localhost 上访问它。
第 1 步:什么是 Kubernetes?为什么以及何时应该使用它?
我假设如果你来到这里,你可能对 Kubernetes 有所了解。但即使您不了解 Kubernetes,也请关注下面的资源,这将使您对 Kubernetes 有一个清晰的认识。
[
什么是 Kubernetes?
Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,...
Kubernetes.io
](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/)
第 2 步:整个流程。
让我们了解一下这个流程。因此,我们可以相应地制作 Kubernetes 清单文件。
-
MongoDB: MongoDB 只能与用户服务通信。 MongoDB 无权与网关服务通信。
-
**用户:**用户服务可以与网关服务和MongoDB服务通信,但不能从互联网共享。
-
**网关:**网关服务可以与互联网通信,然后网关将与用户服务对话。
第 3 步:创建基本微服务
-
让我们从 GitHub 克隆此存储库。
-
接下来,切换到basic-Kubernetes分支。
-
在this branch中,我们看到代表三个服务的三个文件夹。
- 用户
2.网关
- MongoDB
步骤 4:添加 Kubernetes 必要文件并解释这些文件
- 在Basic-Kubernetes分支中,有3个文件夹。
- 每个文件夹除了code还有2个.yaml文件
1\。 deployment.yaml:这个文件负责运行一个构建 docker 镜像
2\。 service.yaml: 这个文件负责将代码暴露在世界之外,甚至在同一个网络中。
- 解释MongoDB文件夹1**.** Mongodb是一个独立的服务。如上图所示,用户服务依赖于 MongoDB。
2\。因此,我们的目标是在 Kubernetes 上成功运行 MongoDB。
3\。在此之前,让我们看一下 MongoDB 的部署文件和服务文件。
部署.yaml
apiVersion: apps/v1 # 获取部署版本
kind: Deployment # Kubernetes 文件的种类
# 定义部署文件的元数据
元数据:
名称:mongodb-部署
标签:
应用程序:mongodb
# 部署文件规范
规格:
replicas: 1 # 我们尝试创建多少个副本。
选择器:
匹配标签:
应用程序:mongodb
模板:
元数据:
标签:
应用程序:mongodb
图像规格。 Docker镜像信息
规格:
容器:
- 名称:蒙哥
image: mongodb #取自 docker hub 的图像名称
服务.yaml
1\。在这个文件中,我们需要查看 **ClusterIP
**2。 ClusterIP 用于暴露同一集群内的任何 pod。
3\。我们在这里使用类型为 ClusterIP,因为 MongoDB 服务不需要暴露在集群之外。
api版本:v1
# Kubernetes 文件的种类
种类:服务
# 服务文件元数据
元数据:
名称:mongodb-服务
规格:
类型:集群IP
端口:
- 协议:
港口:27017
目标端口:27017
选择器:
应用程序:mongodb
4\。现在让我们通过运行以下命令来运行 MongoDB 服务
cdmongodb
kubectl apply -f service.yaml -f deployment.yaml
5\。现在我们的容器和服务也被创建了。
解释用户文件夹
1\。用户文件夹是所有与用户相关的逻辑所在的位置。因此,此用户服务可以与 MongoDB 服务进行通信。
2\。该服务也将在内部使用。所以,这就是为什么这个服务类型是 ClusterIP。
部署.yaml
api版本:应用程序/v1
kind: Deployment # Kubernetes 文件的种类
# 定义部署文件的元数据
元数据:
名称:用户部署
标签:
应用:用户
# 部署文件规范
规格:
replicas: 1 # 我们尝试创建多少个副本。
选择器:
匹配标签:
应用:用户
模板:
元数据:
标签:
应用:用户
图像规格。 Docker镜像信息
规格:
容器:
- 名称:用户
图片:aiirakesh/用户:最新端口:
- 容器端口:8000
环境:
- 名称:MONGODB_HOST
值:“mongodb-service.default”
服务.yaml
api版本:v1
# Kubernetes 文件的种类
种类:服务
# 服务文件元数据
元数据:
名称:用户服务
规格:
类型:集群IP
端口:
- 协议:
端口:8000
目标端口:8000
选择器:
应用:用户
让我们运行用户服务
光盘用户
kubectl apply -f deployment.yaml -f service.yaml
现在,如果我们看到我们有 2 个服务并且部署正在运行
网关文件夹解释
-
提到我们的路线的网关。这将使我们暴露于外部世界。
-
因为它要与互联网通信。这就是为什么将此服务类型保留为 LoadBalancer 的原因。
部署.yaml
api版本:应用程序/v1
kind: Deployment # Kubernetes 文件的种类
# 定义部署文件的元数据
元数据:
名称:网关部署
标签:
应用程序:网关
# 部署文件规范
规格:
replicas: 1 # 我们尝试创建多少个副本。
选择器:
匹配标签:
应用程序:网关
模板:
元数据:
标签:
应用程序:网关
图像规格。 Docker镜像信息
规格:
容器:
- 名称:网关
图片:aiirakesh/网关:最新
端口:
- 容器端口:8000
环境:
- 名称:MONGODB_HOST
value: "gateway-service.default:8001" # 这是像这样提供的格式 <nameOfService>.<namespace>:<port>
服务.yaml
api版本:v1
# Kubernetes 文件的种类
种类:服务
# 服务文件元数据
元数据:
名称:网关服务
规格:
类型:负载均衡器
端口:
- 协议:
端口:8001
目标端口:3000
选择器:
应用程序:网关
让我们运行用户服务
光盘网关/
kubectl apply -f service.yaml -f deployment.yaml
现在,如果我们看到我们有 3 个服务和 3 个部署正在运行
笔记:
在上图中,如果我们在服务部分看到。可以从 localhost:8001 访问网关服务。
接下来,我们将在 AWS EKS 上部署相同的应用程序。 AWS 托管服务
反馈:感谢您阅读本文。我希望您了解在 Kubernetes 上从头开始部署应用程序的基础知识。请随时提出问题或提出建议以提高内容质量。
更多推荐
所有评论(0)