微服务(一)


文章目录

  • 项目地址
  • 一、微服务
    • 1.1 分析User的Domian Verb和Nouns
  • 二、运行docker和k8s
    • 2.1 Docker
      • 1. 编写dockerfile
      • 2. 创建docker image
      • 3. 运行docker使用指定端口
      • 4. 查看当前运行的镜像
      • 5. 停止当前所有运行的docker
      • 6. 删除不用的docker images
      • 7. 将本地的image上传到hub里
    • 2.2 K8S
      • 1. 创建k8s的部署
      • 2. 创建node服务
      • 3. 运行当前的环境
      • 4. 查看运行状态
      • 5. 删除部署


项目地址

  • 教程作者:
  • 教程地址:
  • 代码仓库地址:
  • 所用到的框架和插件:
dbt 
airflow

一、微服务

微服务(一)_第1张图片

1.1 分析User的Domian Verb和Nouns

  1. 根据用户行为分析用户需要的实体和查询条件
    微服务(一)_第2张图片

  2. 列出所有的实体

Customer
Order
Order Details
Product
Shopping Cart
Shopping Cart ltems
Supplier
User
Address
Brand
Category
  1. 根据动词设计关系图

微服务(一)_第3张图片

二、运行docker和k8s

2.1 Docker

1. 编写dockerfile

  1. 编写好.net的dockerfile
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# 使用官方的 .NET 5 ASP.NET 基础镜像作为构建环境(base-env
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env

#设置容器中的工作目录为 /app。后续的所有命令都将在这个目录下运行。
WORKDIR /app

#将当前目录下的所有 .csproj 文件(通常是项目文件)复制到容器的工作目录中。
COPY *.csproj ./

#恢复项目的依赖项
RUN dotnet restore

#将整个项目的代码复制到容器中。
COPY . ./

#编译和打包应用程序代码,生成可以运行的 .NET 程序。输出的构建文件存储在 /app/out 目录中。
RUN dotnet publish -c Release -o out

#使用官方的 .NET 5 ASP.NET 基础运行时镜像作为生产环境(最终运行的容器)
FROM mcr.microsoft.com/dotnet/aspnet:5.0
#再次设置容器的工作目录为 /app。
WORKDIR /app
#从前面定义的 base-env 阶段复制 /app/out 文件夹的内容到当前工作目录。
COPY --from=build-env /app/out .

#设置容器的入口点为 dotnet 命令,启动 PlatformService.dll 程序。
ENTRYPOINT ["dotnet", "PlatformService.dll"]

2. 创建docker image

  • pjj521/platformservice 是镜像名称
docker build -t pjj521/platformservice .

3. 运行docker使用指定端口

  • 后面是镜像名称
 docker run -p 8080:80 -d pjj521/platformservice

4. 查看当前运行的镜像

docker ps

5. 停止当前所有运行的docker

docker stop $(docker ps -q)

6. 删除不用的docker images

  • 查看
docker images
  • 删除
docker -rmi -f 镜像ID

7. 将本地的image上传到hub里

 docker push pjj521/platformservice1          

2.2 K8S

1. 创建k8s的部署

  • 创建部署的文件platform-depl.yaml
apiVersion: apps/v1 # 自定义apps/v1 代表使用 Deployment 资源
kind: Deployment # 自定义资源类型,表示这是一个 Deployment 对象
metadata:
  name: platform-deployment # Deployment 的名称,这个名称在 Kubernetes 中唯一
spec:
  replicas: 1 # 副本数,表示部署一个 Pod 副本,Kubernetes 会确保有一个 Pod 在运行
  selector: #选择器,用于查找属于这个 Deployment 的 Pods
    matchLabels:
      app: platformservice1 # 选择标签为 app=platformservice1 的 Pods,Kubernetes 使用这个标签来选择受此 Deployment 管理的 Pods
  template: # Pod 模板,描述 Pods 应该如何创建
    metadata:
      labels:
        app: platformservice1 # Pod 的标签,用于与 selector 配合选择该 Pod
    spec: # Pod 的规格定义
      containers: #容器定义,说明该 Pod 中将运行的容器
        - name: platformservice1 # 容器的名称
          image: pjj521/platformservice1 # 容器使用的镜像,这里是一个本地镜像 "pjj521/platformservice1"
          ports:
            - containerPort: 80 #容器暴露的端口,这里表示容器会监听 80 端口

2. 创建node服务

  • platform-np-srv.yaml
apiVersion: v1
kind: Service
metadata:
  name: platformservice1-service
spec:
  type: NodePort # 使用 NodePort 类型来暴露服务
  selector:
    app: platformservice1 # 匹配 platform-depl里的标签
  ports:
    - name: platformservice1 # 给端口命名(可选,便于理解)
      protocol: TCP
      port: 80 # 对外暴露的端口
      targetPort: 80 # 容器内的端口
      nodePort: 30001 # 可以指定 NodePort 的端口范围(可选,如果没有指定,Kubernetes 会自动分配一个在 30000-32767 之间的端口)

3. 运行当前的环境

  1. 先启动环境
kubectl apply -f .\platform-depl.yaml    
  1. 在部署Node
 kubectl apply -f .\platform-np-srv.yaml

4. 查看运行状态

  • 查看部署的状态
kubectl get deployments
  • 查看pods的状态
kubectl get  pods
  • 查看服务状态
kubectl get services
  • 查看 Kubernetes 事件
kubectl get events --sort-by='.lastTimestamp'

5. 删除部署

  1. 查看当前部署的集群
kubectl get deployments
  1. 删除
kubectl delete deployment platforms-depl

你可能感兴趣的:(C#,.net)