大家好。我们将开始一个 Kubernetes 系列。在本系列中,我们将学习 Kubernetes 的基础知识,并尝试使用 Kubernetes 部署我们的示例微服务代码。

免责声明 :) 如果您没有 Docker 的先验知识,请参考这篇博客。它将帮助您更准确地了解 Kubernetes。

我们将在本文中实现的目标

  1. 什么是 Kubernetes?为什么以及何时应该使用它?

2.整个服务的流程。

  1. 创建基础微服务。

  2. 添加Kubernetes必要文件并解释这些文件。

  3. 运行这个 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中,我们看到代表三个服务的三个文件夹。

  1. 用户

2.网关

  1. MongoDB

步骤 4:添加 Kubernetes 必要文件并解释这些文件

  • 在Basic-Kubernetes分支中,有3个文件夹。

微服务用户、网关、mongodb服务

  • 每个文件夹除了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\。现在我们的容器和服务也被创建了。

部署,创建mongodb的服务

解释用户文件夹

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 个服务并且部署正在运行

网关文件夹解释

  1. 提到我们的路线的网关。这将使我们暴露于外部世界。

  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 上从头开始部署应用程序的基础知识。请随时提出问题或提出建议以提高内容质量。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐