Kubernetes,简称k8s,是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务。

以华为云容器引擎CCE为例的部署过程。

1.上传nla-agent-setup.tar.gz到/data目录,解压。

tar -xzf nla-agent-setup.tar.gz

解压后的目录结构

2.将docker-images目录的镜像push到k8s关联的镜像仓库。

# 以aienv4j为例
docker load -i aienv4j
docker login -u xxx -p xxx swr.cn-south-1.myhuaweicloud.com  # 镜像仓库地址按需修改
docker tag aienv4j:v9.1 swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
docker push swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
# 同样处理其他镜像


3.k8s中创建pv/pvc,用于挂载目录。存储服务用网络文件系统。



如果没有网络存储,可以不创建pvc,yml中改用主机路径hostpath。

4.将安装包中的scripts,services目录拷贝到服务器模板目录,例如/data_sfs_turbo/tenent_tpl/v11/public/nlav3-20241121/

cd  /data/nla-agent-setup
cp -ra services /data_sfs_turbo/tenent_tpl/v11/public/nlav3-20241121/
cp -ra scripts /data_sfs_turbo/tenent_tpl/v11/public/nlav3-20241121/

5.为nla实例准备mysql和nl2sql目录。

# 创建目录,用于存储落地文件
mkdir -p /data_sfs_turbo/aichat-tpl/smartbi-aichat/data/
# 拷贝安装包中的模板文件到该目录
cd /data/nla-agent-setup/data/
cp -ra config /data_sfs_turbo/aichat-tpl/smartbi-aichat/data/
cp -ra nl2sql_data/ /data_sfs_turbo/aichat-tpl/smartbi-aichat/data/

6.修改yaml模板文件

kind: Deployment
apiVersion: apps/v1
metadata:
  name: aichat-tpl-nlav3
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: aichat-tpl-nlav3
      version: v1
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: aichat-tpl-nlav3
        version: v1
    spec:
      volumes:
        - name: pvc-sfsturbo
          persistentVolumeClaim:
            claimName: pvc-sfsturbo
        - name: vol-173079782020714289
          hostPath:
            path: /etc/localtime
            type: ''
      containers:
        - name: mysql-and-redis
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/airedis:v5
          env:
            - name: PAAS_APP_NAME
              value: aichat-tpl-nlav3
            - name: PAAS_NAMESPACE
              value: default
            - name: PAAS_PROJECT_ID
              value: 059de0e837000fc22fd6c00d6d8e80a7
          resources:
            limits:
              cpu: '4'
              memory: 8Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /var/lib/mysql
              subPath: aichat-tpl/smartbi-aichat/data/config
            - name: vol-173079782020714289
              readOnly: true
              mountPath: /etc/localtime
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: mongo
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/mongo:4
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              value: root
            - name: MONGO_INITDB_ROOT_PASSWORD
              value: smartbi1#nla
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /data/db
              subPath: aichat-tpl/smartbi-aichat/data/mongo/data
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: propertycenter
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 40   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/propertycenter
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: aiweb
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 50   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '4'
              memory: 8Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/aiweb
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: admin
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 50   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/admin
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: modulemanager
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 50   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/modulemanager
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: aibus
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 50   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/aibus
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: smartbiproxy
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4j:v9.1
          command:
            - /bin/sh
            - '-c'
            - ' sleep 50   ;  /scripts/docker-entrypoint.sh'
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /ailogs
              subPath: aichat-tpl/smartbi-aichat/ailogs/
            - name: pvc-sfsturbo
              mountPath: /jars
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/smartbiproxy
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: nl2sqlllm
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4py-llm:v6
          command:
            - /bin/sh
            - /scripts/docker-entrypoint.sh
          resources:
            limits:
              cpu: '6'
              memory: 32Gi
            requests:
              cpu: 250m
              memory: 2Gi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /logs
              subPath: aichat-tpl/smartbi-aichat/logs/
            - name: pvc-sfsturbo
              mountPath: /services
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /data
              subPath: aichat-tpl/smartbi-aichat/data/nl2sql_data
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/nl2sql_llm
            - name: pvc-sfsturbo
              mountPath: /backup_data
              subPath: aichat-tpl/smartbi-aichat/nl2sql_backup_data
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: agent
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4py-agent:v1.1
          command:
            - /bin/sh
            - /scripts/docker-entrypoint.sh
          resources:
            limits:
              cpu: '4'
              memory: 8Gi
            requests:
              cpu: 250m
              memory: 1Gi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /logs
              subPath: aichat-tpl/smartbi-aichat/agent/logs
            - name: pvc-sfsturbo
              mountPath: /services
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /data
              subPath: aichat-tpl/smartbi-aichat/data/nl2sql_data
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/agent
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/data
              subPath: aichat-tpl/smartbi-aichat/agent/data
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/workspace
              subPath: aichat-tpl/smartbi-aichat/agent/workspace
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/experience
              subPath: aichat-tpl/smartbi-aichat/agent/experience
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
        - name: jupyter
          image: swr.cn-south-1.myhuaweicloud.com/smartbi_cloud/aienv4py-agent:v1.1
          command:
            - /bin/sh
            - /scripts/docker-entrypoint-runtime.sh
          resources:
            limits:
              cpu: '6'
              memory: 10Gi
            requests:
              cpu: 250m
              memory: 1Gi
          volumeMounts:
            - name: pvc-sfsturbo
              mountPath: /logs
              subPath: aichat-tpl/smartbi-aichat/agent/logs
            - name: pvc-sfsturbo
              mountPath: /services
              subPath: tenent_tpl/v11/public/nlav3-20250421/services
            - name: pvc-sfsturbo
              mountPath: /scripts
              subPath: tenent_tpl/v11/public/nlav3-20250421/scripts/agent
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/data
              subPath: aichat-tpl/smartbi-aichat/agent/data
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/workspace
              subPath: aichat-tpl/smartbi-aichat/agent/workspace
            - name: pvc-sfsturbo
              mountPath: /services/agent/project/experience
              subPath: aichat-tpl/smartbi-aichat/agent/experience
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      imagePullSecrets:
        - name: default-secret
      schedulerName: default-scheduler
      tolerations:
        - key: node.kubernetes.io/not-ready
          operator: Exists
          effect: NoExecute
          tolerationSeconds: 300
        - key: node.kubernetes.io/unreachable
          operator: Exists
          effect: NoExecute
          tolerationSeconds: 300
      hostAliases:
        - ip: 127.0.0.1
          hostnames:
            - main
            - redis
            - airedis
            - propertycenter
            - aiweb
            - admin
            - aibus
            - smartbiproxy
            - metadata
            - nl2sql
            - nl2sql-llm
            - chat
            - rhetorical
            - intention2cls
            - mongo
            - aimongo
            - jupyter
  strategy:
    type: Recreate
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600


修改pvc名称,镜像地址,挂载路径



7.用yaml文件创建工作负载,启动AIChat。

8.为工作负载创建服务,暴露9082端口。

8.打开smartbi运维设置--自然语言配置,填写nla服务地址:http://aichat-tpl-nlav3:9082/aiweb,保存。


9.为aichat配置smartbi地址
浏览器输入http://ip:节点端口/aiweb/#/manager/config;初始密码admin/manager

添加smartbi地址。

10.使用aichat
浏览器输入http://ip:节点端口/aiweb/#


结束。