«

K8S 1.30环境中私有化部署 Ollama 和 DeepSeek-R1(671B模型)

时间:2025-2-19 17:16     作者:Anglei     分类: 虚拟化


1. 前提准备

硬件要求

由于部署的模型是大规模的671B参数模型,需要高性能计算资源。建议的硬件配置为:

计算资源:

至少 32 vCPU,推荐 64 vCPU。
至少 128 GB 内存,推荐 256 GB 内存。
每个节点最好配备 1TB SSD 或以上存储。

网络要求:

内部网络带宽至少 10Gbps,确保模型的分布式推理时网络不会成为瓶颈。

Kubernetes集群

Kubernetes版本:1.30
建议集群有多个节点,确保可以进行资源调度和扩展。
启用 GPU资源(如果需要加速计算)。

2. 获取模型Docker镜像

确保你有合适的 Ollama 和 DeepSeek-R1 的Docker镜像。如果这些镜像是公开的,直接从Docker Hub或其他容器仓库获取;如果是私有镜像,你需要提供正确的凭证和地址。

ctr -n=k8s.io images pull ollama/ollama-model:latest
ctr -n=k8s.io images pull deepseek-r1/deepseek-r1-model:671b

3. 准备Kubernetes配置文件

你需要创建Kubernetes的Deployment和Service配置文件,并确保配置好Persistent Volume (PV) 和 Persistent Volume Claim (PVC) 来存储模型数据。这里假设你已经通过Docker镜像准备好了相关镜像。

3.1 Persistent Volume (PVC) 配置

在Kubernetes中,PVC(Persistent Volume Claim)用于请求持久化存储。由于模型非常大,可能需要大容量的存储。

model-pvc.yaml:

apiVersion: v1
kind:PersistentVolumeClaim
metadata:
name:model-pvc
spec:
accessModes:
    -ReadWriteOnce
resources:
    requests:
      storage:2Ti# 根据模型大小设置存储容量

3.2 Ollama部署文件

ollama-deployment.yaml:

apiVersion: apps/v1
kind:Deployment
metadata:
name:ollama-model
spec:
replicas:1
selector:
    matchLabels:
      app:ollama
template:
    metadata:
      labels:
        app:ollama
    spec:
      containers:
        -name:ollama
          image:ollama/ollama-model:latest
          resources:
            requests:
              memory:"64Gi"
              cpu:"16"
            limits:
              memory:"128Gi"
              cpu:"32"
          ports:
            -containerPort:8080
          volumeMounts:
            -name:model-storage
              mountPath:/mnt/models
      volumes:
        -name:model-storage
          persistentVolumeClaim:
            claimName:model-pvc

3.3 DeepSeek-R1部署文件

deepseek-r1-deployment.yaml:

apiVersion: apps/v1
kind:Deployment
metadata:
name:deepseek-r1-model
spec:
replicas:1
selector:
    matchLabels:
      app:deepseek-r1
template:
    metadata:
      labels:
        app:deepseek-r1
    spec:
      containers:
        -name:deepseek-r1
          image:deepseek-r1/deepseek-r1-model:671b
          resources:
            requests:
              memory:"128Gi"
              cpu:"32"
            limits:
              memory:"256Gi"
              cpu:"64"
          ports:
            -containerPort:8081
          volumeMounts:
            -name:model-storage
              mountPath:/mnt/models
      volumes:
        -name:model-storage
          persistentVolumeClaim:
            claimName:model-pvc

3.4 服务配置

为了方便外部访问模型服务,配置Kubernetes Service来公开暴露服务。这里使用LoadBalancer类型的服务。

ollama-service.yaml:

apiVersion: v1
kind:Service
metadata:
name:ollama-service
spec:
selector:
    app:ollama
ports:
    -protocol:TCP
      port:8080
      targetPort:8080
type:LoadBalancer

deepseek-r1-service.yaml:

apiVersion: v1
kind:Service
metadata:
name:deepseek-r1-service
spec:
selector:
    app:deepseek-r1
ports:
    -protocol:TCP
      port:8081
      targetPort:8081
type:LoadBalancer

4. 部署到Kubernetes

通过以下命令将Kubernetes资源应用到集群中:

kubectl apply -f model-pvc.yaml
kubectl apply -f ollama-deployment.yaml
kubectl apply -f deepseek-r1-deployment.yaml
kubectl apply -f ollama-service.yaml
kubectl apply -f deepseek-r1-service.yaml

4.1 检查Pod状态

kubectl get pods

确保所有Pod都正常运行。如果Pod未启动,可以使用以下命令查看详细的错误信息。

kubectl describe pod <pod-name> 

4.2 检查服务状态

kubectl get svc

通过该命令查看是否已成功创建服务,且它们暴露的端口(8080和8081)是否可以从外部访问。

5. 访问模型

5.1 获取外部IP

如果使用的是LoadBalancer类型的Service,你可以通过以下命令获取外部IP:

kubectl get svc

输出示例如下:

NAME                TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
ollama-service      LoadBalancer   10.100.200.1    <external-ip>  8080:30000/TCP 10m
deepseek-r1-service LoadBalancer   10.100.200.2    <external-ip>  8081:30001/TCP 10m

你可以在浏览器或者API客户端中使用这个外部IP访问模型接口,例如:

Ollama模型API:http://<external-ip>:30000
DeepSeek-R1模型API:http://<external-ip>:30001

5.2 调用模型接口

如果模型提供了RESTful API,你可以通过HTTP请求调用。例如,使用curl进行推理请求:

假设Ollama模型提供一个推理接口

curl -X POST http://<external-ip>:30000/inference -d '{"input": "your text input"}'

6. 监控和日志管理

6.1 查看Pod日志

kubectl logs <pod-name>

查看运行中的Pod的日志,确保模型的推理过程正常。

6.2 使用Prometheus和Grafana监控

部署 Prometheus 来监控Kubernetes集群的资源使用。
配置 Grafana 仪表盘来实时展示模型的推理性能、延迟和吞吐量。

6.3 设置告警

使用Prometheus的告警功能来监控模型的健康状态,例如内存使用超过阈值时通过alertmanager触发告警。

总结

上述步骤展示了如何在Kubernetes 1.30集群中部署Ollama和DeepSeek-R1这类大规模的深度学习模型。需要注意,部署时要合理配置资源请求和限制,确保集群能够承载这些模型的计算和存储需求。通过服务暴露,外部应用可以访问这些模型提供的API进行推理。

本文完结,相关标签: k8s Ollama deepseek

 版权所有:Anglei
 文章标题:K8S 1.30环境中私有化部署 Ollama 和 DeepSeek-R1(671B模型)
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(0)

鲜花(0)

鸡蛋(2)
分享到: