微服务(一)


文章目录

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

项目地址

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

    dbt
    airflow

一、微服务

1.1 分析User的Domian Verb和Nouns

  1. 根据用户行为分析用户需要的实体和查询条件

  2. 列出所有的实体

    Customer
    Order
    Order Details
    Product
    Shopping Cart
    Shopping Cart ltems
    Supplier
    User
    Address
    Brand
    Category

  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

  2. 在部署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

  2. 删除

    kubectl delete deployment platforms-depl

相关推荐
咕白m6251 小时前
C# 将多张图片转换到一个 PDF 文档
c#·.net
唐青枫5 小时前
C#.NET FluentValidation 全面解析:优雅实现对象验证
c#·.net
Aevget11 小时前
DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(二)
.net·wpf·界面控件·devexpress·ui开发·数据网格
从孑开始14 小时前
ManySpeech.MoonshineAsr 使用指南
人工智能·ai·c#·.net·私有化部署·语音识别·onnx·asr·moonshine
玩泥巴的21 小时前
.NET驾驭Word之力:基于规则自动生成及排版Word文档
c#·word·.net·com互操作
专注VB编程开发20年21 小时前
VB.NET多线程排序算法实现:LINQ与正则表达式方法
排序算法·.net·linq
EQ-雪梨蛋花汤1 天前
【踩坑记录】从“正在还原所需的工具包”说起:一次 .NET 工程包还原失败的完整排查实录
.net
喵叔哟1 天前
63.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--预算告警
运维·微服务·.net
专注VB编程开发20年1 天前
VB.NET2003和VB2008可以导入VB6项目
.net·vb.net·vb6·vb2008
喵叔哟1 天前
62.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--自训练ML模型
微服务·架构·.net