部署AI-VAULT组件

基于安全考虑,在同一K8s集群内,不同的namespace下不能同时启动AI-VAULT服务。

前提条件

已完成安装前准备,具体操作请参见安装前准备

操作步骤

  1. 管理员用户登录K8s管理节点,执行以下命令,确认AI-VAULT镜像和版本号是否正确。

    docker images | grep ai-vault
    示例如下:
    # docker images | grep ai-vault
    ai-vault                      v3.0.0              197f4e8780ca        21 minutes ago         154MB
    • 如确认无误,请继续执行后续步骤。
    • 如镜像或版本错误,请参见制作AI-VAULT镜像,完成镜像制作和分发。

  2. 在K8s Master节点上用户私有目录(其他用户不可读写)上创建“ai-vault.yaml”文件,建立用户自己的“ai-vault.yaml”文件,K8S启动配置示例参考如下。用户应保证在同一集群上只存在一个AI-VAULT容器。

    image镜像名称请与制作AI-VAULT镜像创建的镜像名称保持一致,名称不一致将导致部署失败。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ai-vault
      namespace: mindx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ai-vault
      template:
        metadata:
          labels:
            app: ai-vault
          annotations:
            seccomp.security.alpha.kubernetes.io/pod: runtime/default
        spec:
          automountServiceAccountToken: false
          containers:
            - name: ai-vault
              securityContext:
                allowPrivilegeEscalation: false
                readOnlyRootFilesystem: true
                capabilities:
                  drop: ["ALL"]
                runAsUser: 9001
                runAsGroup: 9001
              image: ai-vault:{version}
              env:
              - name: POD_IP
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
              resources:
                requests:
                  memory: 1000Mi
                  cpu: "1"
                limits:
                  memory: 8000Mi
                  cpu: "10"
              imagePullPolicy: Never
              command: [ "/bin/bash", "-c", "--"]
              args: [ "ulimit -n 1024 && ./ai-vault run" ]
              volumeMounts:
                - name: ai-vault-data
                  mountPath:  /home/AiVault/.ai-vault
          volumes:
            - name: ai-vault-data
              hostPath:
                path: /home/AiVault/.ai-vault
                type: Directory
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: ai-vault
      namespace: mindx
      labels:
        app: ai-vault
    spec:
      type: ClusterIP
      ports:
        - name: http
          port: 8180
          targetPort: 8180
          protocol: TCP
        - name: socket
          port: 8181
          targetPort: 8181
          protocol: TCP
      selector:    
        app: ai-vault

  3. 修改启动配置文件yaml的权限为“600”

    chmod 600 ai-vault.yaml

  4. (可选)根据实际情况修改yaml中AI-VAULT的启动参数。启动参数请参见AI-VAULT命令说明,可执行./ai-vault -h查看参数说明。

    vim ai-vault.yaml

  5. 执行以下命令,启动AI-VAULT。

    kubectl apply -f ai-vault.yaml

    启动示例如下所示:

    # kubectl apply -f ai-vault.yaml 
    deployment.apps/ai-vault created
    service/ai-vault created
    # kubectl get pod -n mindx
    NAME                                  READY   STATUS     RESTARTS   AGE
    ai-vault-44534765b-hn5mx          1/1    Running   0         11s

日志说明