我正在尝试将自适应 dask kubernetes 集群部署到我的 aws K8s 实例(我想使用找到的 kubeControl 接口(interface) here )。我不清楚我在哪里以及如何执行此代码以使其在我现有的集群上处于事件状态。除此之外,我希望有一个入口规则,以便我拥有的另一个 ec2 实例可以连接到集群并在 aws VPC 中执行代码,以维护安全性和网络性能。
到目前为止,我已经设法获得了一个运行 dask 和 jupyterhub 的功能性 k8s 集群。我正在使用找到的示例 Helm chart here引用 docker 图像 here .我可以看到这个图像甚至没有安装 dask-kubernetes。话虽如此,我可以使用暴露的 AWS dns 服务器从我的其他 ec2 实例连接到该集群并执行自定义代码,但这不是 kubernetes 原生 dask 集群。
我一直致力于修改 kubernetes 的部署 yaml,但我不清楚我需要更改什么才能让它使用正确的 kubernetes 集群/调度程序。我知道我需要修改我在安装 dask-kubernetes 时使用的 docker 镜像,但这仍然对我没有帮助。下面是我正在使用的示例 helm 部署图表
---
# nameOverride: dask
# fullnameOverride: dask
scheduler:
name: scheduler
image:
repository: "daskdev/dask"
tag: 2.3.0
pullPolicy: IfNotPresent
# See https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
pullSecrets:
# - name: regcred
replicas: 1
# serviceType: "ClusterIP"
# serviceType: "NodePort"
serviceType: "LoadBalancer"
servicePort: 8786
resources: {}
# limits:
# cpu: 1.8
# memory: 6G
# requests:
# cpu: 1.8
# memory: 6G
tolerations: []
nodeSelector: {}
affinity: {}
webUI:
name: webui
servicePort: 80
worker:
name: worker
image:
repository: "daskdev/dask"
tag: 2.3.0
pullPolicy: IfNotPresent
# dask_worker: "dask-cuda-worker"
dask_worker: "dask-worker"
pullSecrets:
# - name: regcred
replicas: 3
aptPackages: >-
default_resources: # overwritten by resource limits if they exist
cpu: 1
memory: "4GiB"
env:
# - name: EXTRA_CONDA_PACKAGES
# value: numba xarray -c conda-forge
# - name: EXTRA_PIP_PACKAGES
# value: s3fs dask-ml --upgrade
resources: {}
# limits:
# cpu: 1
# memory: 3G
# nvidia.com/gpu: 1
# requests:
# cpu: 1
# memory: 3G
# nvidia.com/gpu: 1
tolerations: []
nodeSelector: {}
affinity: {}
jupyter:
name: jupyter
enabled: true
image:
repository: "daskdev/dask-notebook"
tag: 2.3.0
pullPolicy: IfNotPresent
pullSecrets:
# - name: regcred
replicas: 1
# serviceType: "ClusterIP"
# serviceType: "NodePort"
serviceType: "LoadBalancer"
servicePort: 80
# This hash corresponds to the password 'dask'
password: 'sha1:aae8550c0a44:9507d45e087d5ee481a5ce9f4f16f37a0867318c'
env:
# - name: EXTRA_CONDA_PACKAGES
# value: "numba xarray -c conda-forge"
# - name: EXTRA_PIP_PACKAGES
# value: "s3fs dask-ml --upgrade"
resources: {}
# limits:
# cpu: 2
# memory: 6G
# requests:
# cpu: 2
# memory: 6G
tolerations: []
nodeSelector: {}
affinity: {}
最佳答案
要在 Kubernetes 上运行 Dask 集群,推荐使用三种方法。这些方法中的每一种都要求您正确配置现有的 Kubernetes 集群和凭据(kubectl
在本地工作)。
Dask Helm Chart
您可以使用 Dask helm chart 部署独立的 Dask 集群。 .
helm repo add dask https://helm.dask.org/
helm repo update
helm install --name my-release dask/dask
请注意,这不是一个自适应集群,但您可以通过
kubectl
修改部署的大小来扩展它。 .kubectl scale deployment dask-worker --replicas=10
Helm Chart Documentation
python
dask-kubernetes
API 您也可以使用
dask-kubernetes
这是一个用于动态创建临时集群的 Python 库。pip install dask-kubernetes
from dask_kubernetes import KubeCluster
cluster = KubeCluster()
cluster.scale(10) # specify number of nodes explicitly
cluster.adapt(minimum=1, maximum=100) # or dynamically scale based on current workload
这将从头开始创建一个 Dask 集群,并在
cluster
时将其拆除。对象被垃圾收集(很可能在退出时)。dask-kubernetes
DocumentationDask 网关
Dask Gateway 为管理 Dask 集群提供了一个安全的 Multi-Tenancy 服务器。
要开始使用 Kubernetes,您需要创建一个带有网关代理 token 的 Helm 配置文件 (
config.yaml
)。gateway:
proxyToken: "<RANDOM TOKEN>"
提示:您可以使用
openssl rand -hex 32
生成合适的 token .然后安装图表。
helm repo add dask-gateway https://dask.org/dask-gateway-helm-repo/
helm repo update
helm install --values config.yaml my-release dask-gateway/dask-gateway
Dask Gateway Documentation
关于amazon-web-services - 如何将 dask-kubernetes 自适应集群部署到 aws kubernetes 实例上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015274/