【问题标题】:How to deploy dask-kubernetes adaptive cluster onto aws kubernetes instance如何将 dask-kubernetes 自适应集群部署到 aws kubernetes 实例上
【发布时间】:2020-01-20 17:45:05
【问题描述】:

我正在尝试将一个自适应 dask kubernetes 集群部署到我的 aws K8s 实例(我想使用在 here 找到的 kubeControl 接口)。我不清楚我在哪里以及如何执行此代码以使其在我现有的集群上处于活动状态。除此之外,我希望有一个入口规则,以便我拥有的另一个 ec2 实例可以连接到集群并在 aws VPC 中执行代码,以维护安全性和网络性能。

到目前为止,我已经设法获得了一个运行 dask 和 jupyterhub 的功能性 k8s 集群。我正在使用 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: {}

【问题讨论】:

    标签: amazon-web-services kubernetes kubernetes-helm dask-kubernetes


    【解决方案1】:

    要在 Kubernetes 上运行 Dask 集群,推荐使用三种方法。这些方法中的每一种都要求您正确配置现有的 Kubernetes 集群和凭据(kubectl 在本地工作)。

    Dask Helm 图表

    您可以使用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 Documentation

    Dask 网关

    Dask Gateway 为管理 Dask 集群提供了一个安全的多租户服务器。

    要开始使用 Kubernetes,您需要使用网关代理令牌创建 Helm 配置文件 (config.yaml)。

    gateway:
      proxyToken: "<RANDOM TOKEN>"
    

    提示:您可以使用openssl rand -hex 32 生成合适的令牌。

    然后安装图表。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2020-06-04
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      相关资源
      最近更新 更多