容器服务 在 TKE 上部署满血版 DeepSeek-R1 (SGLang)

DeepSeek-R1 满血版模型参数是 671B(6710 亿参数),为了充分发挥其性能,推荐使用 SGLang 进行部署。SGLang 是性能强悍的 AI 大模型部署工具,与 DeepSeek 合作并专门针对 DeepSeek 进行了深度优化,也是 DeepSeek 推荐的部署工具。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、概述

这篇会基于 SGLang 在 TKE 集群上部署满血版 DeepSeek-R1 模型,提供最佳实践的部署示例。

注意:镜像说明:

注意:这篇中的示例使用的镜像是 SGLang 提供的镜像(lmsysorg/sglang),tag 为 latest,建议指定 tag 到固定版本。

注意:镜像托管在 DockerHub,且体积较大,在 TKE 环境中,默认提供免费的 DockerHub 镜像加速服务。中国大陆用户也可以直接从 DockerHub 拉取镜像,但速度可能较慢,尤其是对于较大的镜像,等待时间会更长。为提高镜像拉取速度,建议将镜像同步至 容器镜像服务 TCR,并在 YAML 文件中替换相应的镜像地址,这样可以显著加快镜像的拉取速度。

二、机型与部署方案

由于满血版的 DeepSeek-R1 参数量较大,需要使用较大显存且支持 FP8 的大规格 GPU 实例,目前合适的机型规格包括 HCCPNV6.96XLARGE2304(高性能计算集群)和 PNV6.32XLARGE1280 / PNV6.96XLARGE2304(GPU 云服务器),推荐的部署方案是用两台该机型的节点组建 GPU 集群来运行满血 DeepSeek-R1,如果对并发和性能要求不高,也可以单台部署。

以下是这几种规格的核心参数:

规格 RDMA CPU 核心数 内存(GB) GPU 卡数
PNV6.32XLARGE1280 不支持 128 1280 8
PNV6.96XLARGE2304 不支持 384 2304 8
HCCPNV6.96XLARGE2304 支持 (3.2Tbps) 384 2304 8

注意:这些规格的实例目前处于邀测阶段,且资源紧张,需联系你的销售经理开通使用并协调资源。

三、选型建议

·两台组建 GPU 集群来运行满血 DeepSeek-R1,建议选择 HCCPNV6.96XLARGE2304,因为支持 RDMA,可显著提升 DeepSeek 运行性能,生成速度约为 600~700 token/s。

·单台部署无需 RDMA,优先考虑 PNV6.32XLARGE1280 和 PNV6.96XLARGE2304 以节约成本,生成速度约为 20~40 token/s。

四、购买 GPU 服务器

测试 POC 阶段,可先在 云服务器购买页面 进行购买,按量计费。

注意:说明:

注意:对于 PNV6.32XLARGE1280 和 PNV6.96XLARGE2304 的这两种规格,架构选择异构计算才能看到;对于 HCCPNV6.96XLARGE2304 的规格,架构选择高性能计算集群才能看到,且要先提前创建高性能计算集群,详情请参见 创建高性能计算集群。

正式购买阶段,需通过 高性能计算平台-工作空间 购买,包年包月计费,请联系腾讯云架构师进行开通使用。

五、创建 TKE 集群

登录 容器服务控制台,参考步骤 创建集群,创建一个集群:

·地域:选择购买的 GPU 服务器所在地域。

·集群类型:选择 TKE 标准集群。

·Kubernetes 版本:需要大于等于1.28(多机部署依赖的 LWS 组件的要求),建议选最新版。

·VPC:选择购买的 GPU 资源所在的 VPC。

六、添加 GPU 节点

通过 添加已有节点 的方式将购买到的 GPU 服务器加入 TKE 集群。其中,系统镜像选择 TencentOS Server 3.1 (TK4) UEFI | img-39ywauzd,驱动和 CUDA 选择最新版本。

七、准备存储与模型文件

满血版 DeepSeek-R1 体积较大,为加快模型下载和加载速度,建议使用性能最强的存储,这篇给出本地存储和 CFS-Trubo 共享存储两种方案的示例。

八、CFS-Turbo 共享存储

共享存储使用 CFS-Turbo 性能更好,Turbo 系列性能与规格详情参考 腾讯云文件存储产品文档,使用下面的步骤准备 CFS-Turbo 存储和下载大模型文件。

安装 CFS 插件

1. 在集群列表中,单击集群 ID,进入集群详情页。

2. 选择左侧菜单栏中的组件管理,在组件页面单击新建。

3. 在新建组件管理页面中勾选 CFSTurbo(腾讯云高性能并行文件系统)。

4. 单击完成即可创建组件。

创建 CFS-Turbo 实例

1. 登录 CFS 控制台,单击创建来新建一个 CFS-Turbo 实例。

2. 文件系统类型选择 Turbo 系列的:

3. 地域选择 TKE 集群所在地域。

4. 可用区选择 GPU 节点池所在可用区(降低时延)。

5. 网络类型如果选云联网网络,需确保 TKE 集群所在 VPC 已加入该云联网中;如果选VPC 网络,则需选择 TKE 集群所在 VPC,子网选与 GPU 节点池在同一个可用区的子网。

6. 单击立即创建。

新建 StorageClass

新建一个后续使用 CFS 存储大模型的 PVC,可通过控制台或 YAML 创建。

通过控制台创建通过 YAML 创建

1. 在集群列表中,单击集群 ID,进入集群详情页。

2. 选择左侧菜单栏中的存储,在 StorageClass 页面单击新建。

3. 在新建存储页面,根据实际需求,创建 CFS-Turbo 类型的 StorageClass。如下:

·名称:请输入 StorageClass 名称,这篇以 “cfs-turbo” 为例。

·Provisioner:选择 “文件存储CFS turbo”。

·CFS turbo:选择前面创建 CFS-Turbo 实例步骤中创建出来的 CFS-Turbo 的实例。

apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: cfs-turboprovisioner: com.tencent.cloud.csi.cfsturboreclaimPolicy: DeletevolumeBindingMode: Immediateparameters: # 注意替换 fsid 和 host fsid: 564b8ef1 host: 11.0.0.7

创建 PVC

创建一个使用 CFS-Turbo 的 PVC,用于存储 AI 大模型,可通过控制台或 YAML 创建。

通过控制台创建通过 YAML 创建

1. 在集群列表中,单击集群 ID,进入集群详情页。

2. 选择左侧菜单栏中的存储,在 PersistentVolumeClaim 页面单击新建。

3. 在新建存储页面,创建存储大模型的 PVC。如下:

·名称:请输入 PVC 名称,这篇以 “ai-model” 为例。

·命名空间:SGLang 将要被部署的命名空间。

·Provisioner:选择 “文件存储 CFS turbo”。

·是否指定 StorageClass:选择 “指定”。

·StorageClass:选择前面新建的 StorageClass 的名称。

·是否指定 PersistentVolume:选择 “不指定”。

注意:替换 storageClassName 为新建 StorageClass 步骤中配置的名称。apiVersion: v1kind: PersistentVolumeClaimmetadata: name: ai-model labels: app: ai-modelspec: storageClassName: cfs-turbo accessModes: – ReadWriteMany resources: requests: storage: 700Gi

使用 Job 下载大模型文件

创建一个 Job 用于下载大模型文件到 CFS:

注意:满血版的 DeepSeek-R1 是 671B 的大模型,一共 642G,下载耗时可能较长,实测在上海下载 ModelScope 上的模型文件,100Mbps 的云服务器带宽,耗时 16 个多小时:

注意:

apiVersion: batch/v1kind: Jobmetadata: name: download-model labels: app: download-modelspec: template: metadata: name: sglang labels: app: download-model spec: containers: – name: sglang image: lmsysorg/sglang:latest command: – modelscope – download – –local_dir=/data/model/DeepSeek-R1 – –model=deepseek-ai/DeepSeek-R1 volumeMounts: – name: data mountPath: /data/model volumes: – name: data persistentVolumeClaim: claimName: ai-model restartPolicy: OnFailure

·CFS-Turbo 的 PVC 挂载到 /data 目录,存储下载的模型文件。

·–local_dir 指定模型文件下载目录。

·–model 指定 ModelScope 模型库 中的模型名称,满血版的 DeepSeek-R1 模型名称为 deepseek-ai/DeepSeek-R1。

九、本地存储

如果使用本地存储大模型,可以创建一个下载模型文件的 DaemonSet,相当于给每个节点都下发一个下载 Job:

apiVersion: apps/v1kind: DaemonSetmetadata: name: download-model labels: app: download-modelspec: selector: matchLabels: app: download-model template: metadata: labels: app: download-model spec: restartPolicy: OnFailure # 默认 Always,改成 OnFailure 避免重复下载 nodeSelector: nvidia-device-enable: "true" # 只让 GPU 节点下载 containers: – name: sglang image: lmsysorg/sglang:latest command: – modelscope – download – –local_dir=/data/model/DeepSeek-R1 – –model=deepseek-ai/DeepSeek-R1 volumeMounts: – name: model mountPath: /data/model volumes: – name: model hostPath: path: /data/model type: DirectoryOrCreate

十、安装 LWS 组件

注意:如果只使用单机部署的方案,无需安装 LWS 组件,可跳过此步骤。

SGLang 多机部署(GPU 集群)需借助 LWS 组件,在 TKE 应用市场 中找到 lws:

安装到集群中:

·应用名:建议填 lws。

·命名空间:建议使用 lws-system(新建命名空间)。

注意:说明:

注意:如需希望使用 kubectl 或 helm 等方式部署 LWS,可参考 LWS 产品文档(kubectl 方式安装 和 helm 方式安装)。

注意:需要注意的是,默认使用镜像是 registry.k8s.io/lws/lws,该镜像在中国大陆环境无法直接下载,可替换镜像地址为 docker.io/k8smirror/lws,该镜像为 lws 在 DockerHub 上的 mirror 镜像,长期自动同步,可放心使用(TKE 环境可直接拉取 DockerHub 的镜像),也可以同步到自己的 TCR 或 CCR 镜像仓库,提高镜像下载速度。

十一、部署 DeepSeek-R1

使用这篇指定的机型,每台有 8 张 GPU 算卡,单机部署也能成功运行,如果并发和吞吐要求较高,建议使用双机集群部署。

双机(多机)集群部署使用 LWS 中的 LeaderWorkerSet 来部署,单机部署则直接使用 Deployment 部署。

下面提供单机和双机两种部署方式的示例。

十二、双机集群部署

使用 LeaderWorkerSet 部署满血版的 DeepSeek-R1 双机集群(2 台 8 卡的 GPU 节点,1 个 leader 和 1 个 worker):

挂载 CFS 共享存储挂载本地存储

apiVersion: leaderworkerset.x-k8s.io/v1kind: LeaderWorkerSetmetadata: name: deepseek-r1spec: replicas: 1 leaderWorkerTemplate: size: 2 restartPolicy: RecreateGroupOnPodRestart leaderTemplate: metadata: labels: role: leader spec: hostNetwork: true # 如果使用 HCCPNV6 机型,支持 RDMA,需要使用 HostNetwork 才能让 RDMA 生效。 hostPID: true dnsPolicy: ClusterFirstWithHostNet # 如果使用 HostNetwork,默认使用节点上 /etc/resolv.conf 中的 dns server,会导致 LWS_LEADER_ADDRESS 指定的域名解析失败,所以 dnsPolicy 指定为 ClusterFirstWithHostNet 以便使用 coredns 解析。 containers: – name: leader image: lmsysorg/sglang:latest env: – name: LWS_WORKER_INDEX valueFrom: fieldRef: fieldPath: metadata.labels['leaderworkerset.sigs.k8s.io/worker-index'] – name: TOTAL_GPU value: "16" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" – name: API_KEY value: "" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" EXTRA_ARGS="" if [[ "$API_KEY" != "" ]]; then EXTRA_ARGS="–api-key $API_KEY" fi exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –nnodes $LWS_GROUP_SIZE \\ –tp $TOTAL_GPU \\ –node-rank $LWS_WORKER_INDEX \\ –dist-init-addr $LWS_LEADER_ADDRESS:5000 \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code \\ –host 0.0.0.0 \\ –port 30000 $EXTRA_ARGS resources: limits: nvidia.com/gpu: "8" # 每台节点 8 张 GPU 卡,每个 Pod 独占 1 台节点。 ports: – containerPort: 30000 volumeMounts: – mountPath: /dev/shm name: dshm – mountPath: /data/model name: data volumes: – name: dshm emptyDir: medium: Memory – name: data persistentVolumeClaim: claimName: ai-model workerTemplate: spec: hostNetwork: true # worker 与 master 保持一致 hostPID: true dnsPolicy: ClusterFirstWithHostNet # worker 与 master 保持一致 containers: – name: worker image: lmsysorg/sglang:latest env: – name: LWS_WORKER_INDEX valueFrom: fieldRef: fieldPath: metadata.labels['leaderworkerset.sigs.k8s.io/worker-index'] – name: TOTAL_GPU value: "16" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –nnodes $LWS_GROUP_SIZE \\ –tp $TOTAL_GPU \\ –node-rank $LWS_WORKER_INDEX \\ –dist-init-addr $LWS_LEADER_ADDRESS:5000 \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code resources: limits: nvidia.com/gpu: "8" # 每台节点 8 张 GPU 卡,每个 Pod 独占 1 台节点。 volumeMounts: – mountPath: /dev/shm name: dshm – mountPath: /data/model name: data volumes: – name: dshm emptyDir: medium: Memory – name: data persistentVolumeClaim: claimName: ai-model—apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: ClusterIP selector: leaderworkerset.sigs.k8s.io/name: deepseek-r1 role: leader ports: – name: api protocol: TCP port: 30000 targetPort: 30000

apiVersion: leaderworkerset.x-k8s.io/v1kind: LeaderWorkerSetmetadata: name: deepseek-r1spec: replicas: 1 leaderWorkerTemplate: size: 2 restartPolicy: RecreateGroupOnPodRestart leaderTemplate: metadata: labels: role: leader spec: hostNetwork: true # 如果使用 HCCPNV6 机型,支持 RDMA,需要使用 HostNetwork 才能让 RDMA 生效。 hostPID: true dnsPolicy: ClusterFirstWithHostNet # 如果使用 HostNetwork,默认使用节点上 /etc/resolv.conf 中的 dns server,会导致 LWS_LEADER_ADDRESS 指定的域名解析失败,所以 dnsPolicy 指定为 ClusterFirstWithHostNet 以便使用 coredns 解析。 containers: – name: leader image: lmsysorg/sglang:latest env: – name: LWS_WORKER_INDEX valueFrom: fieldRef: fieldPath: metadata.labels['leaderworkerset.sigs.k8s.io/worker-index'] – name: TOTAL_GPU value: "16" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" – name: API_KEY value: "" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" EXTRA_ARGS="" if [[ "$API_KEY" != "" ]]; then EXTRA_ARGS="–api-key $API_KEY" fi exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –nnodes $LWS_GROUP_SIZE \\ –tp $TOTAL_GPU \\ –node-rank $LWS_WORKER_INDEX \\ –dist-init-addr $LWS_LEADER_ADDRESS:5000 \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code \\ –host 0.0.0.0 \\ –port 30000 $EXTRA_ARGS resources: limits: nvidia.com/gpu: "8" # 每台节点 8 张 GPU 卡,每个 Pod 独占 1 台节点。 ports: – containerPort: 30000 volumeMounts: – mountPath: /dev/shm name: dshm – mountPath: /data/model name: data volumes: – name: dshm emptyDir: medium: Memory – name: data persistentVolumeClaim: claimName: ai-model workerTemplate: spec: hostNetwork: true # worker 与 master 保持一致 hostPID: true dnsPolicy: ClusterFirstWithHostNet # worker 与 master 保持一致 containers: – name: worker image: lmsysorg/sglang:latest env: – name: LWS_WORKER_INDEX valueFrom: fieldRef: fieldPath: metadata.labels['leaderworkerset.sigs.k8s.io/worker-index'] – name: TOTAL_GPU value: "16" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –nnodes $LWS_GROUP_SIZE \\ –tp $TOTAL_GPU \\ –node-rank $LWS_WORKER_INDEX \\ –dist-init-addr $LWS_LEADER_ADDRESS:5000 \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code resources: limits: nvidia.com/gpu: "8" # 每台节点 8 张 GPU 卡,每个 Pod 独占 1 台节点。 volumeMounts: – mountPath: /dev/shm name: dshm – mountPath: /data/model name: data volumes: – name: dshm emptyDir: medium: Memory – name: data hostPath: path: /data/model type: DirectoryOrCreate—apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: ClusterIP selector: leaderworkerset.sigs.k8s.io/name: deepseek-r1 role: leader ports: – name: api protocol: TCP port: 30000 targetPort: 30000

注意:说明:

部署完成后,如果需要扩容,可以通过调高 replicas 来增加 GPU 集群数量(前提是已准备好新的 GPU 节点资源)。

十三、单机部署

使用 Deployment 部署单机满血版的 DeepSeek-R1:

挂载 CFS 共享存储挂载本地存储apiVersion: apps/v1kind: Deploymentmetadata: name: deepseek-r1 labels: app: deepseek-r1spec: selector: matchLabels: app: deepseek-r1 replicas: 1 strategy: type: Recreate template: metadata: labels: app: deepseek-r1 spec: containers: – name: sglang image: lmsysorg/sglang:latest env: – name: TOTAL_GPU value: "8" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" – name: API_KEY value: "" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" EXTRA_ARGS="" if [[ "$API_KEY" != "" ]]; then EXTRA_ARGS="–api-key $API_KEY" fi exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –tp $TOTAL_GPU \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code \\ –mem-fraction-static 0.9 \\ –max-running-request 8 \\ –host 0.0.0.0 \\ –port 30000 $EXTRA_ARGS resources: limits: nvidia.com/gpu: "8" ports: – containerPort: 30000 readinessProbe: httpGet: path: /health port: 30000 periodSeconds: 5 volumeMounts: – name: data mountPath: /data/model – name: shm mountPath: /dev/shm volumes: – name: data persistentVolumeClaim: claimName: ai-model – name: shm emptyDir: medium: Memory restartPolicy: Always—apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: ClusterIP selector: app: deepseek-r1 ports: – name: api protocol: TCP port: 30000 targetPort: 30000apiVersion: apps/v1kind: Deploymentmetadata: name: deepseek-r1 labels: app: deepseek-r1spec: selector: matchLabels: app: deepseek-r1 replicas: 1 strategy: type: Recreate template: metadata: labels: app: deepseek-r1 spec: containers: – name: sglang image: lmsysorg/sglang:latest env: – name: TOTAL_GPU value: "8" – name: MODEL_DIRECTORY value: "DeepSeek-R1" – name: MODEL_NAME value: "DeepSeek-R1" – name: API_KEY value: "" command: – bash – -c – | set -x MODEL_DIRECTORY="${MODEL_DIRECTORY:-MODEL_NAME}" EXTRA_ARGS="" if [[ "$API_KEY" != "" ]]; then EXTRA_ARGS="–api-key $API_KEY" fi exec python3 -m sglang.launch_server \\ –model-path /data/model/$MODEL_DIRECTORY \\ –served-model-name $MODEL_NAME \\ –tp $TOTAL_GPU \\ –log-requests \\ –enable-metric \\ –allow-auto-truncate \\ –watchdog-timeout 3600 \\ –disable-custom-all-reduce \\ –trust-remote-code \\ –mem-fraction-static 0.9 \\ –max-running-request 8 \\ –host 0.0.0.0 \\ –port 30000 $EXTRA_ARGS resources: limits: nvidia.com/gpu: "8" ports: – containerPort: 30000 readinessProbe: httpGet: path: /health port: 30000 periodSeconds: 5 volumeMounts: – name: data mountPath: /data/model – name: shm mountPath: /dev/shm volumes: – name: data hostPath: path: /data/model type: DirectoryOrCreate – name: shm emptyDir: medium: Memory restartPolicy: Always—apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: ClusterIP selector: app: deepseek-r1 ports: – name: api protocol: TCP port: 30000 targetPort: 30000

注意:说明:

部署完成后,如果需要扩容,可以通过调高 replicas 来增加 DeepSeek-R1 副本数(前提是准备好新的 GPU 节点资源)。

十四、验证 API

Pod 成功跑起来后用 kubectl exec 进入 leader Pod,使用 curl 测试 API:

curl -v http://127.0.0.1:30000/v1/completions -H 'X-API-Key: ******' -H "Content-Type: application/json" -d '{ "model": "DeepSeek-R1", "prompt": "你是谁?", "max_tokens": 100, "temperature": 0 }'

十五、如何对外暴露 API ?

通常对外暴露 API 一般会配置 API 密钥,配置方法是修改这篇示例中的 YAML,将密钥配置到 API_KEY 环境变量中。

如果希望将 API 对外暴露,最简单的是直接修改 DeepSeek 的 Service 类型为 LoadBalancer,TKE 会自动为其创建公网 CLB 将 API 暴露到公网:

双机集群部署版单机部署版apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: LoadBalancer selector: leaderworkerset.sigs.k8s.io/name: deepseek-r1 role: leader ports: – name: api protocol: TCP port: 30000 targetPort: 30000apiVersion: v1kind: Servicemetadata: name: deepseek-r1-apispec: type: LoadBalancer selector: app: deepseek-r1 ports: – name: api protocol: TCP port: 30000 targetPort: 30000

如果需要更灵活的方式暴露,例如配置证书通过 HTTPS 协议暴露,或者与其他服务共用网关入口,可以通过 Ingress 或 Gateway API 来暴露,示例:

Gateway APIIngress注意:使用 Gateway API 需要集群中装有 Gateway API 的实现,如 TKE 应用市场中的 EnvoyGateway,具体 Gateway API 用法参考 产品文档。apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata: name: deepseek-apispec: parentRefs: – group: gateway.networking.k8s.io kind: Gateway namespace: envoy-gateway-system name: deepseek hostnames: – "deepseek.your.domain" rules: – backendRefs: – group: "" kind: Service name: deepseek-r1-api port: 30000说明:1. parentRefs 引用定义好的 Gateway(通常一个 Gateway 对应一个 CLB)。2. hostnames 替换为你自己的域名,确保域名能正常解析到 Gateway 对应的 CLB 地址。3. backendRefs 指定 DeepSeek 的 Service。apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: deepseek-apispec: rules: – host: "deepseek.your.domain" http: paths: – path: / pathType: Prefix backend: service: name: deepseek-r1-api port: number: 30000说明:1. host 替换为你自己的域名,确保域名能正常解析到 Ingress 对应的 CLB 地址。2. backend.service 指定 DeepSeek 的 Service。

最后在需要使用 API 的应用中配置 API 地址、API 密钥、模型名称等,例如 Chatbox 的配置:

注意:说明:

十六、如何使用 OpenWebUI 与模型对话?

SGLang 提供了兼容 OpenAI 的 API,部署 OpenWebUI 时,如不需要 Ollama API 可禁用掉,再配置下 OpenAI 的 API 地址,指向 DeepSeek-R1 的地址即可。

如果 使用 helm 部署 OpenWebUI,values.yaml 配置示例:

ollama: enabled: falseopenaiBaseApiUrl: "http://deepseek-r1:30000/api/v1"

如果通过 YAML 部署 OpenWebUI,需配置下 Pod 环境变量,示例:

env:- name: OPENAI_API_BASE_URL value: http://deepseek-r1:30000/api/v1 # vllm 的地址- name: ENABLE_OLLAMA_API # 禁用 Ollama API,只保留 OpenAI API value: "False"

赞 (0)
上一篇 4天前
下一篇 4天前