(更新时间)2021年6月5日 商城高并发秒杀系统(.NET Core版) 36-高并发秒杀项目k8s集群部署

举报
愚公搬代码 发表于 2021/10/18 23:12:39 2021/10/18
【摘要】 秒杀项目docker部署 前提准备 k8s集群网络 serviceSubnet: “10.96.0.0/16” podSubnet: “10.100.0.0/20” 初始化的时候进行设置 环境...

秒杀项目docker部署

前提准备

k8s集群网络

serviceSubnet: “10.96.0.0/16”

podSubnet: “10.100.0.0/20”

初始化的时候进行设置

环境镜像

1、mcr.microsoft.com/dotnet/core/sdk:3.1-buster镜像

docker pull mcr.microsoft.com/dotnet/core/sdk:3.1-buster

2、mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim镜像

docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

3、consul镜像

​ 镜像地址:https://hub.docker.com/_/consul

​ 下载地址:docker pull consul

​ 运行命令:kubectl create deployment consul-deploy --image=consul

​ 暴露命令:kubectl expose deployment consul-deploy --name=consul --port=8500 --target-port=8500 --type=NodePort --cluster-ip=10.96.0.2

​ 弹性伸缩命令:kubectl scale --replicas=3 deployment/my-consul

​ 连接地址:http://172.18.0.2:8500

4、rabbitmq镜像 消息队列

​ 镜像地址:https://hub.docker.com/_/rabbitmq

​ 下载地址:docker pull rabbitmq:management

​ 运行命令:kubectl create deployment rabbitmq-deploy --image=rabbitmq:management

​ 暴露命令:kubectl expose deployment rabbitmq-deploy --name=rabbitmq --port=15672 --target-port=15672 --type=NodePort --cluster-ip=10.96.0.3

​ 弹性伸缩命令:kubectl scale --replicas=3 deployment/rabbitmq-deploy

​ 连接地址:http://172.18.0.3:8500

5、mysql镜像

​ 镜像地址:https://hub.docker.com/_/mysql?tab=tags

​ 下载地址:docker pull mysql:5.7

​ 运行命令:kubectl create deployment mysql-deploy --image=mysql:5.7

​ 暴露命令:kubectl expose deployment mysql-deploy --name=mysql --port=3306 --target-port=3306 --type=NodePort --cluster-ip=10.96.0.4

​ 弹性伸缩命令:kubectl scale --replicas=3 deployment/mysql-deploy

​ 连接地址:http://172.18.0.4:3306

6、skywalking镜像

​ 6.1 apache/skywalking-base 镜像(这个镜像用于构建ui和oap-server)不进行使用

​ 镜像地址:https://hub.docker.com/r/apache/skywalking-base

​ 下载地址:docker pull apache/skywalking-base:6.6.0-es6

​ 运行命令:

​ 连接地址:http://172.18.0.5:3306

​ 6.2 apache/skywalking-ui:6.6.0 镜像

​ 镜像地址:https://hub.docker.com/r/apache/skywalking-ui

​ 下载地址:docker pull apache/skywalking-ui:6.6.0

​ 运行命令:docker run --name skywalking-ui -d -e SW_OAP_ADDRESS=oap:12800 --restart=always --network seckillservice --ip 172.18.0.6 skywalking-ui:6.6.0

​ 连接地址:http://172.18.0.6:8090

​ 6.3 apache/skywalking-oap-server 镜像

​ 镜像地址:https://hub.docker.com/r/apache/skywalking-oap-server

​ 下载地址:docker pull apache/skywalking-oap-server:6.6.0-es6

​ 运行命令:docker run --name skywalking-oap-server -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 --restart=always --network seckillservice --ip 172.18.0.7 apache/skywalking-oap-server:6.6.0-es6

​ 连接地址:http://172.18.0.7:12800

7、elasticsearch镜像

​ 镜像地址:https://hub.docker.com/_/elasticsearch

​ 下载地址:docker pull elasticsearch:6.6.0

​ 运行命令:docker run --name elasticsearch -d -p 9200:9200 -p 9300:9300 --restart=always --network seckillservice --ip 172.18.0.8 elasticsearch:6.6.0

​ 连接地址:http://172.18.0.8:9200

7、nginx镜像

​ 镜像地址:https://hub.docker.com/_/nginx?tab=tags。

​ 下载地址:docker pull nginx

​ 运行命令:kubectl create deployment nginx-deploy --image=nginx

​ 暴露命令:kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --type=NodePort --cluster-ip=10.96.0.5

​ 弹性伸缩命令:kubectl scale --replicas=3 deployment/nginx-deploy

​ 连接地址:http://172.18.0.18:80

8、redis镜像

​ 镜像地址:https://hub.docker.com/_/redis?tab=tags。

​ 下载地址:docker pull redis

​ 运行命令:kubectl create deployment redis-deploy --image=redis

​ 暴露命令:kubectl expose deployment redis-deploy --name=redis --port=6379 --target-port=6379 --type=NodePort --cluster-ip=10.96.0.6

​ 弹性伸缩命令:kubectl scale --replicas=3 deployment/redis-deploy

​ 连接地址:http://172.18.0.19:6379

项目镜像

商品微服务镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t productservices .

运行命令:kubectl create deployment productservices-deploy --image=productservices

暴露命令:kubectl expose deployment productservices-deploy --name=redis --port=5001 --target-port=80 --type=NodePort --cluster-ip=10.96.0.7

弹性伸缩命令:kubectl scale --replicas=3 deployment/productservices-deploy

订单微服务镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t orderservices .

运行命令:kubectl create deployment orderservices-deploy --image=orderservices

暴露命令:kubectl expose deployment orderservices-deploy --name=redis --port=5002 --target-port=80 --type=NodePort --cluster-ip=10.96.0.8

弹性伸缩命令:kubectl scale --replicas=3 deployment/orderservices-deploy

支付微服务镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t paymentservices .

运行命令:kubectl create deployment paymentservices-deploy --image=paymentservices

暴露命令:kubectl expose deployment paymentservices-deploy --name=redis --port=5003 --target-port=80 --type=NodePort --cluster-ip=10.96.0.9

弹性伸缩命令:kubectl scale --replicas=3 deployment/paymentservices-deploy

秒杀服务镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t seckillservices .

运行命令:kubectl create deployment seckillservices-deploy --image=seckillservices

暴露命令:kubectl expose deployment seckillservices-deploy --name=redis --port=5004 --target-port=80 --type=NodePort --cluster-ip=10.96.0.10

弹性伸缩命令:kubectl scale --replicas=3 deployment/seckillservices-deploy

用户微服务镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t userservices .

运行命令:kubectl create deployment userservices-deploy --image=userservices

暴露命令:kubectl expose deployment userservices-deploy --name=redis --port=5005 --target-port=80 --type=NodePort --cluster-ip=10.96.0.11

弹性伸缩命令:kubectl scale --replicas=3 deployment/userservices-deploy

秒杀聚合微服务镜像

ConfigurationDbContext

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t seckillaggregateservices .

运行命令:kubectl create deployment seckillaggregateservices-deploy --image=seckillaggregateservices

暴露命令:kubectl expose deployment seckillaggregateservices-deploy --name=redis --port=5006 --target-port=80 --type=NodePort --cluster-ip=10.96.0.12

弹性伸缩命令:kubectl scale --replicas=3 deployment/seckillaggregateservices-deploy

前台客户端镜像

镜像文件:Dockerfile vs2019自动生成

镜像构建:docker build -t seckillfronts.

运行命令:kubectl create deployment seckillfronts-deploy --image=seckillfronts

暴露命令:kubectl expose deployment seckillfronts-deploy --name=redis --port=5006 --target-port=80 --type=NodePort --cluster-ip=10.96.0.13

弹性伸缩命令:kubectl scale --replicas=3 deployment/seckillfronts-deploy

项目脚本

sql脚本
项目实战-生厂.sql

  
 
  • 1
  • 2

服务yaml文件

consul

consul-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: consul-deploy #资源名称
  labels: #资源标签(版本号)
    app: consul 
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: consul
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: consul
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: consul #容器名称
        image: consul #容器使用的镜像
        ports: #端口号
        - containerPort: 8500 #容器对应的端口号

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

执行命令:kubectl create -t consul-deployment.yaml

consul-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: consul # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: consul
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.2 # service ip地址
  ports:
    - port: 8500 #service 端口
      targetPort: 8500 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30001 #映射端口号
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: consul

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

执行命令:kubectl create -t consul-service.yaml

rabbitmq

rabbitmq-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: rabbitmq-deploy #资源名称
  labels: #资源标签(版本号)
    app: rabbitmq 
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: rabbitmq
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: rabbitmq
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: rabbitmq #容器名称
        image: rabbitmq:management #容器使用的镜像
        ports: #端口号
        - containerPort: 5672 #容器对应的端口号
        - containerPort: 15672

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

rabbitmq-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: rabbitmq # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: rabbitmq
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.3 # service ip地址
  ports:
    - port: 5672 #service 端口
      targetPort: 5672 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30002 #映射端口号
      name: tcp
    - port: 15672 #service 端口
      targetPort: 15672 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30003 #映射端口号
      name: http
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: rabbitmq

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

mysql

mysql-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: mysql-deploy #资源名称
  labels: #资源标签(版本号)
    app: mysql
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: mysql
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: mysql
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: mysql #容器名称
        image: mysql:5.7 #容器使用的镜像
        ports: #端口号
        - containerPort: 3306 #容器对应的端口号
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: root

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

mysql-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: mysql # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: mysql
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.4 # service ip地址
  ports:
    - port: 3306 #service 端口
      targetPort: 3306 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30004 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: mysql

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

nginx

nginx-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: nginx-deploy #资源名称
  labels: #资源标签(版本号)
    app: nginx
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: nginx
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: nginx
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: nginx #容器名称
        image: nginx #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

nginx-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: nginx # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: nginx
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.5 # service ip地址
  ports:
    - port: 80 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30005 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: nginx

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

redis

redis-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: redis-deploy #资源名称
  labels: #资源标签(版本号)
    app: redis
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: redis
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: redis
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: redis #容器名称
        image: redis #容器使用的镜像
        ports: #端口号
        - containerPort: 6379 #容器对应的端口号

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

redis-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: redis # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: redis
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.6 # service ip地址
  ports:
    - port: 6379 #service 端口
      targetPort: 6379 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30006 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: redis

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

商品微服务

productservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: productservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: productservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: productservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: productservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: productservices #容器名称
        image: productservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

productservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: productservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: productservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.7 # service ip地址
  ports:
    - port: 5001 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30007 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: productservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

订单微服务

orderservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: orderservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: orderservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: orderservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: orderservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: orderservices #容器名称
        image: orderservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

orderservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: orderservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: orderservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.8 # service ip地址
  ports:
    - port: 5002 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30008 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: orderservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

支付微服务

paymentservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: paymentservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: paymentservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: paymentservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: paymentservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: paymentservices #容器名称
        image: paymentservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

paymentservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: paymentservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: paymentservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.9 # service ip地址
  ports:
    - port: 5003 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30009 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: paymentservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

秒杀微服务

seckillservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: seckillservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: seckillservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: seckillservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: seckillservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: seckillservices #容器名称
        image: seckillservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

seckillservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: seckillservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: seckillservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.14 # service ip地址
  ports:
    - port: 5004 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30010 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: seckillservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

用户微服务

userservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: userservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: userservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: userservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: userservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: userservices #容器名称
        image: userservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

userservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: userservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: userservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.11 # service ip地址
  ports:
    - port: 5005 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30011 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: userservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

秒杀聚合微服务

seckillaggregateservices-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: seckillaggregateservices-deploy #资源名称
  labels: #资源标签(版本号)
    app: seckillaggregateservices
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: seckillaggregateservices
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: seckillaggregateservices
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: seckillaggregateservices #容器名称
        image: seckillaggregateservices #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

seckillaggregateservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: seckillaggregateservices # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: seckillaggregateservices
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.12 # service ip地址
  ports:
    - port: 5006 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30012 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: seckillaggregateservices

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

前台客户端

seckillfronts-deployment.yaml

apiVersion: apps/v1 #k8s版本号
kind: Deployment #部署类型(资源类型)
metadata: #元数据(用于定义资源信息)
  name: seckillfronts-deploy #资源名称
  labels: #资源标签(版本号)
    app: seckillfronts
spec: #资源相关信息规范
  replicas: 1 #副本数
  selector: #选择哪一个版本
    matchLabels:
      app: seckillfronts
  template: #模板
    metadata: #资源的元数据/属性
      labels: #设置资源的标签
        app: seckillfronts
    spec: #资源规范字段(规范容器配置)
      containers: #指定容器
      - name: seckillfronts #容器名称
        image: seckillfronts #容器使用的镜像
        ports: #端口号
        - containerPort: 80 #容器对应的端口号
        imagePullPolicy: IfNotPresent #镜像拉取策略,先从本地拉取,不存在从远程拉取

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

seckillaggregateservices-service.yaml

apiVersion: v1 # 指定api版本,此值必须在kubectl api-versions中
kind: Service # 指定创建资源的角色/类型
metadata: # 资源的元数据/属性
  name: seckillfronts # 资源的名字,在同一个namespace中必须唯一
  namespace: default #部署在哪个namespace中
  labels: # 设定资源的标签
    app: seckillfronts
spec: # 资源规范字段
  type: NodePort #ClusterIP 类型
  clusterIP: 10.96.0.13 # service ip地址
  ports:
    - port: 5007 #service 端口
      targetPort: 80 #容器暴露的端口
      protocol: TCP #协议
      nodePort: 30013 #映射端口号
      name: tcp
  selector: #选择器(选择什么资源进行发布给外界进行访问:pod deployment 等等资源)
    app: seckillfronts

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/117605145

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。