Kubernetes

Kubernetes 是一个流行的系统,用于在集群上部署分布式应用,尤其是在云环境中。您可以通过以下方式使用 Kubernetes 启动 Dask 集群

Dask Kubernetes Operator

Dask Kubernetes Operator 是一组自定义资源定义 (CRD) 和一个控制器,它允许您将 Dask 集群作为原生 Kubernetes 资源来创建和管理。

可以通过 Kubernetes API 使用 kubectl 或 Python API 使用 KubeCluster 来创建集群。

helm install --repo https://helm.dask.org --create-namespace -n dask-operator --generate-name dask-kubernetes-operator
# Create a cluster with kubectl
kubectl apply -f - <<EOF
apiVersion: kubernetes.dask.org/v1
kind: DaskCluster
metadata:
  name: my-dask-cluster
spec:
  ...
EOF
# Create a cluster in Python
from dask_kubernetes.operator import KubeCluster
cluster = KubeCluster(name="my-dask-cluster", image='ghcr.io/dask/dask:latest')
cluster.scale(10)

如果您希望执行以下操作,这是一个不错的选择

  1. 获得原生的 Kubernetes 体验。

  2. 通过 Kubernetes API 和诸如 kubectl 之类的工具管理 Dask 集群。

  3. 将 Dask 与在 Kubernetes 上运行的其他工具和工作负载集成。

  4. 将 Dask 集群作为更大 Kubernetes 应用程序的一部分进行组合。

欲了解更多信息,请访问 kubernetes.dask.org

Dask Gateway

Dask Gateway 提供了一个安全的多租户服务器,用于管理 Dask 集群。它允许用户在一个共享的、集中管理的集群环境中启动和使用 Dask 集群,而无需用户直接访问底层集群后端(例如 Kubernetes、Hadoop/YARN、HPC 作业队列等)。

helm install --repo https://helm.dask.org --create-namespace -n dask-gateway --generate-name dask-gateway
from dask_gateway import Gateway
gateway = Gateway("<gateway service address>")
cluster = gateway.new_cluster()

如果您希望执行以下操作,这是一个不错的选择

  1. 抽象用户,使其无需直接接触 Kubernetes。

  2. 在 Kubernetes/Hadoop/HPC 环境中提供一致的 Dask 用户体验。

欲了解更多信息,请访问 gateway.dask.org

DaskHub

您还可以使用 DaskHub helm chart 将 Dask Gateway 与 JupyterHub 一起部署。

helm install --repo https://helm.dask.org --create-namespace -n daskhub --generate-name daskhub

欲了解更多信息,请访问 artifacthub.io 上的 DaskHub 页面

单集群 Helm Chart

您可以使用 Helm 轻松地在 Kubernetes 上部署单个 Dask 集群和(可选的)Jupyter

helm install --repo https://helm.dask.org my-dask dask

如果您希望执行以下操作,这是一个不错的选择

  1. 首次在基于云的系统(如 Amazon、Google 或 Microsoft Azure)上试用 Dask,前提是您已拥有 Kubernetes 集群。如果您尚未部署 Kubernetes,请参阅我们的云部署文档

您还可以使用 dask-kubernetes 中的 HelmCluster 集群管理器,在您的 Python 会话中管理您的 Helm Dask 集群。

from dask_kubernetes import HelmCluster

cluster = HelmCluster(release_name="myrelease")
cluster.scale(10)

欲了解更多信息,请访问 artifacthub.io 上的 Dask 页面

延伸阅读

您可能还想查看关于使用Docker 容器部署 Dask 的文档,以帮助您管理 Kubernetes 上的软件环境。