分配(allocate)

在Kubernetes上分配资源

本主题描述了如何在Kubernetes上为Milvus集群分配资源。

通常情况下,在生产环境中为Milvus集群分配的资源应该与机器工作负载成比例。在分配资源时还应考虑机器类型。尽管您可以在集群运行时更新配置,但我们建议在部署集群之前设置这些值。

  1. 查看可用资源

运行kubectl describe nodes命令,查看您已经创建的实例上的可用资源。

  1. 分配资源

使用Helm为Milvus组件分配CPU和内存资源。

使用Helm升级资源将导致正在运行的Pod执行全面更新。

有两种分配资源的方式:

Allocate resources with commands

如果您使用--set更新资源配置,则需要为每个Milvus组件设置资源变量。

Milvus独立版 Milvus集群

helm upgrade my-release milvus/milvus --reuse-values --set standalone.resources.limits.cpu=2 --set standalone.resources.limits.memory=4Gi --set standalone.resources.requests.cpu=0.1 --set standalone.resources.requests.memory=128Mi
 
helm upgrade my-release milvus/milvus --reuse-values --set dataNode.resources.limits.cpu=2 --set dataNode.resources.limits.memory=4Gi --set dataNode.resources.requests.cpu=0.1 --set dataNode.resources.requests.memory=128Mi
 

通过设置配置文件分配资源

您还可以通过在resources.yaml文件中指定resources.requestsresources.limits参数来分配CPU和内存资源。

dataNode:
  resources:
    limits:
      cpu: "4"
      memory: "16Gi"
    requests:
      cpu: "1"
      memory: "4Gi"
queryNode:
  resources:
    limits:
      cpu: "4"
      memory: "16Gi"
    requests:
      cpu: "1"
      memory: "4Gi"
 
  1. 应用配置

运行以下命令将新配置应用到您的Milvus集群中。

helm upgrade my-release milvus/milvus --reuse-values -f resources.yaml
 

如果未指定resources.limits,则Pod将消耗所有可用的CPU和内存资源。因此,请确保指定resources.requestsresources.limits,以避免在同一实例上运行其他任务需要更多内存消耗的情况下分配过度的资源。

有关管理资源的更多信息,请参阅Kubernetes文档 (opens in a new tab)

接下来是什么

  • 您可能还想了解如何:

  • 如果您准备在云上部署Milvus:

    • 学习如何使用Terraform和Ansible在AWS上部署Milvus
    • 学习如何使用Terraform在Amazon EKS上部署Milvus
    • 学习如何在GCP上使用Kubernetes部署Milvus Cluster
    • 学习如何在Microsoft Azure上使用Kubernetes部署Milvus