我正在尝试部署一个包含 0 个工作人员和 1 个调度程序的 dask 集群,根据工作负载需要将工作人员扩展到所需的数量,我发现自适应部署是正确的方法,我正在使用基于 helm 的部署,但是我找不到任何有关通过 helm 进行 dask 自适应部署部署的正确文档,或者是否有任何其他功能可以满足我的要求
为了使用 Helm 在 AKS 上部署具有自适应扩展功能的 Dask 集群,以根据工作负载动态扩展工作线程。
安装dask
helm repo add dask https://helm.dask.org/
helm repo update
helm install dask-cluster dask/dask
通过修改 Helm 图表使用的
values.yaml
文件来启用自适应缩放。
scheduler:
replicas: 1
env:
- name: DASK_SCHEDULER__ADAPTIVE__ENABLED
value: "true" # Enable adaptive scaling
- name: DASK_SCHEDULER__ADAPTIVE__INTERVAL
value: "1s" # Check scaling every second
worker:
replicas: 0
autoScaler:
enabled: true
minReplicas: 0
maxReplicas: 10
resources:
limits:
cpu: "1"
memory: "2Gi"
requests:
cpu: "0.5"
memory: "1Gi"
cluster:
adaptive:
enabled: true
minimum: 0
maximum: 10
helm upgrade --install dask-cluster dask/dask -f values.yaml
验证部署并访问 dask 仪表板
kubectl get pods
kubectl port-forward svc/dask-cluster-scheduler 8787:80
连接到 Dask 调度程序并提交工作负载和测试
from dask.distributed import Client
import dask.array as da
client = Client("tcp://localhost:8786")
# Submit a workload
x = da.random.random((10000, 10000), chunks=(1000, 1000))
result = (x ** 2).sum().compute()
print("Result:", result)