SUSE AI 体验

概述

SUSE AI 是一款多功能产品,由多个软件层和组件组成。本文档介绍如何在 RKE2 集群上部署和安装 SUSE AI 的完整工作流程。

先决条件

要求先有一个 GPU 的 k8s 环境,可以参考我之前另一篇关于在 RKE2 集群上运行 GPU 工作负载的文章。

根据SUSE AI 官方文档说明,要求主机的内存至少要 32GB,实测使用 20GB 可以实现 demo 运行。

Env Version
OS Ubuntu 22.04.5 LTS
kernel 5.15.0-140-generic
GPU NVIDIA GT 710
Rancher V2.9.2
RKE2 v1.28.15+rke2r1

部署 SUSE AI

SUSE AI 提供了一个开放式基础架构平台,用于部署和运行 GenAI 工作负载,该平台提供丰富的部署选项、LLM 以及 AI 工具和组件选择。借助 SUSE AI,可以无缝部署经过安全审查的 AI 工具和组件。此外,由于 SUSE AI 平台在设计上注重安全性,可以获得实时威胁跟踪和跨 AI 应用程序的全栈可观察性。

SUSE AI 授权

SUSE AI 是独立于 SUSE Rancher Prime 的授权,可以登录 https://apps.rancher.io/ 查看授权状态。SUSE AI 需要有授权才有权限访问和部署 SUSE AI。登录 SUSE apps UI,创建一个 ACCESS TOKEN,将 token 复制出来备用。

创建命名空间以安装 SUSE AI

1
kubectl create namespace suse-ai

创建镜像仓库秘钥

1
kubectl create secret -n suse-ai docker-registry application-collection --docker-server=dp.apps.rancher.io --docker-username=APP_USER --docker-password=APP_PASSWORD

登录 Helm 仓库

1
helm registry login dp.apps.rancher.io -u APP_USER -p APP_PASSWORD

安装 Milvus

Milvus 是一款可扩展的高性能矢量数据库,专为 AI 应用而设计。它能够高效地组织和搜索海量非结构化数据集,包括文本、图像和多模态内容。

查看 Milvus Helm Chart:https://apps.rancher.io/applications/milvus

由于 Milvus 依赖与存储,所以我们需要提前安装好相关的持久化存储,这里我们使用 local-path 本地持久化存储。对于生产环境,建议用企业级存储解决方案,例如 Longhorn。

安装 local-path 本地持久化存储:

1
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.30/deploy/local-path-storage.yaml

确认 local-path 安装成功:

1
2
3
# kubectl -n local-path-storage get pods
NAME READY STATUS RESTARTS AGE
local-path-provisioner-65d5864f8d-mdfzh 1/1 Running 0 29s

导出 Milvus values.yaml

1
helm show values oci://dp.apps.rancher.io/charts/milvus --version 4.2.2 > milvus-values.yaml

编辑如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
global:
imagePullSecrets:
- application-collection
cluster:
enabled: True
standalone:
persistence:
persistentVolumeClaim:
storageClassName: "local-path"
etcd:
replicaCount: 1
persistence:
storageClassName: "local-path"
minio:
mode: distributed
replicas: 4
rootUser: "admin"
rootPassword: "adminminio"
persistence:
storageClass: "local-path"
resources:
requests:
memory: 1024Mi
kafka:
enabled: true
name: kafka
replicaCount: 3
broker:
enabled: true
cluster:
listeners:
client:
protocol: 'PLAINTEXT'
controller:
protocol: 'PLAINTEXT'
persistence:
enabled: true
annotations: {}
labels: {}
existingClaim: ""
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: "local-path"

安装 Milvus

1
helm install milvus -n suse-ai oci://dp.apps.rancher.io/charts/milvus --version 4.2.2 -f milvus-values.yaml

检查 Milvus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# kubectl -n suse-ai get pods
NAME READY STATUS RESTARTS AGE
milvus-datacoord-6f7b7f87b5-zbpk7 1/1 Running 0 2m16s
milvus-datanode-fdc67776-kt76l 1/1 Running 0 2m18s
milvus-etcd-0 1/1 Running 0 18m
milvus-indexcoord-588d84d4c8-c8gmz 1/1 Running 0 107s
milvus-indexnode-85f6445f6c-b4gg8 1/1 Running 0 2m17s
milvus-kafka-broker-0 1/1 Running 0 18m
milvus-kafka-broker-1 1/1 Running 0 18m
milvus-kafka-broker-2 1/1 Running 0 18m
milvus-kafka-controller-0 1/1 Running 0 18m
milvus-kafka-controller-1 1/1 Running 0 18m
milvus-kafka-controller-2 1/1 Running 0 18m
milvus-minio-0 1/1 Running 0 2m7s
milvus-minio-1 1/1 Running 0 2m9s
milvus-minio-2 1/1 Running 0 2m13s
milvus-minio-3 1/1 Running 0 2m15s
milvus-proxy-87f4c65db-tzfj6 1/1 Running 0 2m17s
milvus-querycoord-fc897d46c-686cm 1/1 Running 0 106s
milvus-querynode-5d558c4df7-vbrfw 1/1 Running 0 2m17s
milvus-rootcoord-6bbc66fb45-4552q 1/1 Running 0 106s

安装 Ollama

Ollama 是一款在本地计算机上运行和管理语言模型的工具。它提供了一个简单的界面,无需依赖云资源即可下载、运行和与模型交互。

查看 Ollama Helm Chart:https://apps.rancher.io/applications/ollama

导出 Ollama values.yaml

1
helm show values oci://dp.apps.rancher.io/charts/ollama --version 1.16.0 > ollama-values.yaml

编辑如下内容,启动时拉取带有 GPU 和 deepseek-r1:1.5b 模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
global:
imagePullSecrets:
- application-collection
ingress:
enabled: true
hosts:
- host: ollama.zerchin.xyz
paths:
- path: /
pathType: Prefix
ollama:
models:
pull:
- "deepseek-r1:1.5b"
run:
- "deepseek-r1:1.5b"
gpu:
enabled: true
type: 'nvidia'
number: 1
persistentVolume:
enabled: true
storageClass: local-path

主要参数说明:

  • ollama.models.pull&ollama.models.run:拉取和运行的模型名称
  • ollama.gpu:是否启用GPU,以及启用的 GPU 类型,支持nvidiaamd

安装 Ollama

1
helm install -n suse-ai ollama oci://dp.apps.rancher.io/charts/ollama -n suse-ai --version 1.16.0 -f ollama-values.yaml

检查 Ollama

1
2
# kubectl -n suse-ai get pods | grep ollama
ollama-6f97458ffc-gdrzz 1/1 Running 0 13m
1
2
# curl $(kubectl -n suse-ai get svc ollama | grep ollama| awk '{print $3}'):11434
Ollama is running

安装 Cert-manager

cert-manager 是一个适用于 Kubernetes 工作负载的可扩展 X.509 证书控制器。它支持来自主流公共颁发机构以及私有颁发机构的证书。cert-manager 确保证书有效且最新,并会在证书到期前的指定时间尝试续订证书。

在之前的版本中,cert-manager 会随 Open WebUI 一起自动安装。目前,cert-manager 已不再包含在 Open WebUI Helm Chart 中,需要单独安装它。

安装 Cert-manager

1
helm install cert-manager -n suse-ai oci://dp.apps.rancher.io/charts/cert-manager --create-namespace --set crds.enabled=true --set 'global.imagePullSecrets[0].name'=application-collection

检查 Cert-manager

1
2
3
4
# kubectl -n suse-ai get pods | grep cert-manager
cert-manager-7548665ffb-r8pqj 1/1 Running 0 83s
cert-manager-cainjector-5546f965f-g6tv5 1/1 Running 0 83s
cert-manager-webhook-694974d7b8-7hm7j 1/1 Running 0 83s

安装 Open WebUI

Open WebUI 是一个基于 Web 的用户界面的可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行,与 AI 模型交互,支持各种 LLM 运行器,包括 Ollama 和兼容 OpenAI 的 API。

导出 open-webui values.yaml

1
helm show values oci://dp.apps.rancher.io/charts/open-webui --version 6.13.0 > open-webui-values.yaml

编辑如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
global:
imagePullSecrets:
- application-collection
ollamaUrls:
- http://ollama.suse-ai.svc.cluster.local:11434
persistence:
enabled: true
storageClass: local-path
ollama:
enabled: false
pipelines:
enabled: False
persistence:
storageClass: local-path
ingress:
enabled: true
class: ""
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
host: open-webui.zerchin.xyz
tls: true
extraEnvVars:
- name: DEFAULT_MODELS
value: "deepseek-r1:1.5b"
- name: DEFAULT_USER_ROLE
value: "user"
- name: WEBUI_NAME
value: "SUSE AI"
- name: GLOBAL_LOG_LEVEL
value: INFO
- name: VECTOR_DB
value: "milvus"
- name: MILVUS_URI
value: http://milvus.suse-ai.svc.cluster.local:19530

主要参数说明:

  • ollamaUrls:这里填写前面创建的 ollama 连接地址
  • ollama.enabled:关闭默认自带的 ollama
  • DEFAULT_MODELS:这里填写前面配置的模型之一

安装 open webui

1
helm install open-webui -n suse-ai oci://dp.apps.rancher.io/charts/open-webui --version 6.13.0 -f open-webui-values.yaml

检查 open webui

1
2
3
# kubectl -n suse-ai get pods |grep open-webui
open-webui-0 1/1 Running 1 (15s ago) 33s
open-webui-redis-665b94d467-zfkbh 1/1 Running 0 23m

打开 https://open-webui.zerchin.xyz ,这个是我们在 open-webui 中配置的 Ingress 地址。

首先需要注册管理员用户,注册好之后就可以正式使用了。

参考链接:

https://documentation.suse.com/suse-ai/1.0/html/NVIDIA-Operator-installation/index.html#nvidia-operator-installation

https://documentation.suse.com/suse-ai/1.0/html/AI-deployment-intro/index.html#ai-library-installing