概述

通过PAI工具进行远端 Kubernetes 中的应用进行部署,执行过程为:

  1. 根据项目名称拉取代码
  2. 执行Maven对代码进行编译打包成Jar包
  3. 根据项目源代码中的Dockerfile对项目进行打包生成Docker镜像
  4. 把Docker镜像推送到Harbor仓库
  5. 通过项目源代码中的Deployment.yamlService.yaml进行应用、服务部署
    6.1 通过指定命名空间部署除了会指定K8S命名空间还会覆盖nacos的注册发现命名空间,但不会覆盖nacos配置的命名空间
    6.2 如果部署服务指定了命名空间,删除服务时也须指定命名空间,请谨慎执行
    6.3 如果未指定命名空间将根据工程文件配置部署和删除
    6.4 指定的命名空间必须是已经在K8S和nacos创建的命名空间

Deployment.yaml

apiVersion: apps/v1  //接口版本
kind: Deployment    //接口类型
metadata:
  name: pai-example    //Deployment名称
  labels:
    app: pai-example  //标签
  namespace: tt     //命名空间
spec:
  replicas: 1
  selector:        //选择器
    matchLabels:
      app: pai-example //匹配 pod标签
  template:    //pod模板
    metadata:  //pod元数据
      labels:
        app: pai-example  //pod模板名称标签,必填
    spec:    //定义容器模板,该模板可以包含多个容器
      containers:
        - name: pai-example
          image: //镜像地址
          args:
            - --spring.profiles.active=test
          imagePullPolicy: Always
          ports:
            - containerPort: 8080 //对service暴露端口
      imagePullSecrets:
        - name: login

Service.yaml

apiVersion: v1
kind: Service
metadata:
  name: pai-example
  namespace: tt
  labels:
    app: pai-example
    ingress: service //主要决定在k8s上的入口
spec:
  type: NodePort //配置NodePort,外部流量可访问看k8s中的服务
  ports:
    - port: 8080   //服务访问端口
      targetPort: 8080  //容器端口
  selector:
    app: pai-example

部署代码

操作示例

1.将工程部署到Kubernetes

在这里我们以后端工程为例,利用PAI工具进行部署。利用 pai deploy service -n pai-demo 命令部署。

注意:
1.通过PAI工具创建的工程不需要指定git地址,只有外部项目才需要指定git地址。
2.部署工程不需要切换到工程所在目录。

语法:
pai deploy <命令> [参数]

命令:
 service            部署后端工程
 front              部署前端工程
 micro              上传APP小程序
 data               部署数据中台工程
 docker             部署Docker工程
 protocol           部署物联协议工程
 microapp           发布微应用

参数:
 -h,--help   使用帮助

示例:
部署后端工程
 pai deploy service -n pai-demo
 pai deploy service -n pai-demo --restart
 pai deploy service -n pai-demo -m pai-demo/pai-demo-ui {}
 pai deploy service -n pai-demo -r Git仓库地址 -u Git仓库用户名
 pai deploy service -n pai-demo -N 命名空间

部署前端工程
 pai deploy front -n pai-demo
 pai deploy front -n pai-demo --restart
 pai deploy front -n pai-demo -m pai-demo/pai-demo-ui {}
 pai deploy front -n pai-demo -r Git仓库地址 -u Git仓库用户名
 pai deploy front -n pai-demo -N 命名空间

上传APP小程序
 pai deploy micro -n pai-demo -t d:\work\__UNI__3D0884F.wgt -v 1.0.0

部署数据中台工程
 pai deploy data -n pai-demo
 pai deploy data -n pai-demo --restart
 pai deploy data -n pai-demo -m pai-demo/pai-demo-ui {}
 pai deploy data -n pai-demo -r Git仓库地址 -u Git仓库用户名
 pai deploy data -n pai-demo -N 命名空间

部署Docker工程
 pai deploy docker -n pai-demo
 pai deploy docker -n pai-demo --restart
 pai deploy docker -n pai-demo -m pai-demo/pai-demo-ui {}
 pai deploy docker -n pai-demo -r Git仓库地址 -u Git仓库用户名
 pai deploy docker -n pai-demo -N 命名空间

部署物联协议工程
 pai deploy protocol -n pai-demo -i 132039413923

发布微应用
 pai deploy microapp  #根据当前目录的pages.json发布

2. 查询Kubernetes应用列表

语法:
pai pods [参数]

参数:
 -h,--help              使用帮助
 -N,--namespace <arg>   命名空间
 -l,--app-label <arg>   标签名称(metadata.labels.app的值)

示例:
 pai pods -N demo
 pai pods -N demo -l pai-demo

3. 查询Kubernetes服务列表

语法:
pai services [参数]

参数:
 -h,--help              使用帮助
 -N,--namespace <arg>   命名空间
 -l,--app-label <arg>   标签名称(metadata.labels.app的值)



示例:
 pai services -N demo
 pai services -N demo -l pai-demo

4. 读取Kubernetes应用日志

语法:
pai logs [参数]

参数:
 -h,--help              使用帮助
 -p,--pod <arg>         Pod应用名称
 -N,--namespace <arg>   命名空间

5. 将工程从Kubernetes删除

语法:
pai delete [参数]

参数:
 -h,--help               使用帮助
 -n,--name <arg>         工程名称
 -r,--repository <arg>   Git仓库URL
 -u,--username <arg>     Git仓库账号
 -p,--password <arg>     Git仓库密码
 -m,--module <arg>       Git仓库子模块(用于前后端在同一个工程中指定实际子目录)
    --clean              清除历史代码

示例:
 pai delete -n pai-demo
 pai delete -n pai-demo -m pai-demo/demo-web
 pai delete -n pai-demo -r Git仓库地址 -u Git仓库用户名  
 pai delete -n pai-demo -N 命名空间

文档更新时间: 2021-11-02 18:32   作者:伍润源