Kubernetes

Kubernetes 是一个在集群上部署分布式应用程序的流行系统,特别是在云环境中。你可以通过以下方式使用 Kubernetes 启动 Dask 集群:

Dask Kubernetes 操作符

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 图表

你可以使用 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 页面

进一步阅读

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