如何使用英博云平台快速部署DeepSeek服务

本文为您详细介绍如何通过英博云平台k8s原生部署和体验DeepSeek强大功能,以下案例中使用1卡 A800资源和 DeepSeek-R1-Distill-Qwen-14B 模型做演示。

前提条件

  • 注册英博云平台账号,并完成实名认证、充值账户等准备工作,详情请参考:准备工作
  • 本地计算机环境已经连接集群,详情请参考:连接集群

DeepSeek推理服务部署

本案例通过Sglang方式部署deepseek服务,使用平台内置共享大盘/public中的模型。

  1. 创建和编辑ds-qwen14b.yaml文件:vi ds-qwen14b.yaml,文件中包含模型服务Deployment和公网IP的Service,ds-qwen14b.yaml示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deepseek-r1-distill-qwen-14b-sglang-v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deepseek-r1-distill-qwen-14b-sglang-v2
  template:
    metadata:
      labels:
        app: deepseek-r1-distill-qwen-14b-sglang-v2
    spec:
      affinity:
        nodeAffinity: # Pod调度亲和性
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: cloud.ebtech.com/gpu
                operator: In
                values:
                - A800_NVLINK_80GB # GPU使用A800
      containers:
      - name: deepseek
        image: registry-cn-huabei1-internal.ebcloud.com/ebsys/ssh_server:sglang0.4_torch2.5_python3.10_cuda12.2_ubuntu22.04_202502221818
        command: ["/bin/bash", "-c"]
        args:
          - mkdir -p /my-deepseek/DeepSeek-R1-Distill-Qwen-14B && cp -rv /public/huggingface-models/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B/* /my-deepseek/DeepSeek-R1-Distill-Qwen-14B && sed -i 's/<|Assistant|><think>\\\\n/<|Assistant|>/g' /my-deepseek/DeepSeek-R1-Distill-Qwen-14B/tokenizer_config.json && python3 -m sglang.launch_server --host 0.0.0.0 --port 8080 --model /my-deepseek/DeepSeek-R1-Distill-Qwen-14B --trust-remote-code --tp 1
        ports:
          - containerPort: 8080
        resources:
          limits: # 指定资源配额,例如:CPU 上限、内存上限、 本地存储大小、GPU 卡数等。
            cpu: "10"
            ephemeral-storage: 100Gi
            memory: 100Gi
            nvidia.com/gpu: "1"
          requests: # 指定资源最小请求值,例如:CPU 、内存、 本地存储大小、GPU 卡数等。
            cpu: "10"
            ephemeral-storage: 100Gi
            memory: 100Gi
            nvidia.com/gpu: "1"   # 这里指定要申请的GPU卡数
        volumeMounts:
          - mountPath: /public
            name: public-volume
      volumes:
        - name: public-volume
          hostPath:
            path: /public
            type: Directory

---
apiVersion: v1
kind: Service
metadata:
  name: deepseek-r1-distill-qwen-14b-sglang-v2-service
spec:
  selector:
    app: deepseek-r1-distill-qwen-14b-sglang-v2
  ports:
    - protocol: TCP
      port: 8080 # service 的端口
      targetPort: 8080 # 内部应用监听的端口
  type: LoadBalancer # service类型,启用通过LB的方式申请公网IP
# 部署 DeepSeek-R1-Distill-Qwen-14B 的模型服务,同时会部署一个 service,用于后续 API 调用
kubectl apply -f ds-qwen14b.yaml.yaml
# 查看部署的 pod
kubectl get pod
# 查看部署的 service
kubectl get service
# 查看 pod 日志
kubectl logs -f <YOUR-POD-NAME>

其中deepseek-r1-distill-qwen-14b-sglang-v2-service的EXTERNAL-IP就是当前服务的公网IP。

  1. 调用测试,验证服务是否可以正常调用
curl http://公网IP:8080/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "/my-deepseek/DeepSeek-R1-Distill-Qwen-14B",
        "prompt": "github是什么",
        "max_tokens": 100,
        "temperature": 0
    }'
  1. 至此服务部署完成,若服务后续不再需要,需要删除资源和公网IP,请执行以下命令删除部署的所有资源:kubectl delete -f ds-qwen14b.yaml

Chatbox集成推理服务API

Chatbox是一款 AI 客户端应用和智能助手,支持使用 OpenAI 兼容的第三方 API 服务。

  1. chatbox示例chatbox.yaml如下:

注意:

  1. TOKEN的值需要用户自定义,用于页面访问时,验证身份。

  2. MODEL的值为模型部署路径。

  3. OPEN_API_BASE_URL的值为服务的API地址,此案例中可填写为http://公网IP:8080/v1/chat/completions。

  4. Ingress Host:请输入自定义名称+集群的外网ingress,可通过对应集群详情页查看,如下图所示。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deepseek
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: deepseek
  template:
    metadata:
      labels:
        app: deepseek
    spec:
      containers:
      - name: deepseek
        image: registry-cn-huabei1-internal.ebcloud.com/ebsys/chat-in-docker:v1.1.0
        ports:
        - containerPort: 3000
        env:
        - name: TOKEN # 需要用户根据实际情况修改
          value: "sk-bXakN144QEbRJ"
        - name: MODEL # 需要用户根据实际情况修改
          value: "/my-deepseek/DeepSeek-R1-Distill-Qwen-14B"
        - name: OPEN_API_BASE_URL # 需要用户根据实际情况修改
          value: "http://服务公网IP:8080/v1/chat/completions"
        resources:
          requests:
            cpu: "2"
            memory: 4Gi
          limits:
            cpu: "2"
            memory: 4Gi
---
apiVersion: v1
kind: Service
metadata:
  name: deepseek-service
  namespace: default
spec:
  type: ClusterIP
  selector:
    app: deepseek
  ports:
  - port: 80
    targetPort: 3000
    protocol: TCP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: deepseek-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: deepseek-tenant-35366666-demodeepseek-ingress-cn-huabei1.eks.ebcloud.com # 需要用户根据实际情况修改,Host前缀2到8个字符
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: deepseek-service
            port:
              number: 80
  1. 构建Chatbox服务:kubectl apply -f chatbox.yaml

  2. 用户通过Ingress Host在浏览器中访问并输入对应token使用 上方部署的 DeepSeek-R1-Distill-Qwen-14B API服务。