Dask-шлюз на Kubernetes не может создать новый кластер

#kubernetes #dask #jupyterhub

Вопрос:

Я интегрировал Dask в jupyterhub на сервере kubernetes и могу выполнять на нем код. Однако я не могу масштабировать кластер или запустить новый. Я предполагаю, что даск не может получить доступ к ресурсам на Kubernetes. Я сделал это аналогично для установки в кластере Kubernetes

Что работает:

 from dask_gateway import Gateway
gateway = Gateway(address="http://xx.xx.xx.xx",auth="jupyterhub",)
gateway.list_clusters()
 

что дает: []
Оттуда я могу вычислять данные на dask, так что, похоже, он может взаимодействовать со шлюзом traefik-dask. Но работает:

 cluster = gateway.new_cluster()
 

Висит неопределенно долго. И

 options = gateway.cluster_options()
 

ничего не дает. Ресурсы были настроены с помощью 2 карт управления. Вот jupyterhub_config.yaml:

 proxy:
  secretToken: abc...
imagePullSecret:
  create: true
  username: xx
  password: xx
  email: xx
singleuser:
  defaultUrl: "/lab"
  image:
    name: xx
    tag: latest

hub:
  services:
    dask-gateway:
      apiToken: def...
  config:
    Authenticator:
      admin_users:
        - some-users
      allowed_users:
        - some-users
    GitHubOAuthenticator:
      client_id: "some_client_id"
      client_secret: "some_client_secret"
      oauth_callback_url: "https://my_jhub_server/hub/oauth_callback"
    JupyterHub:
      authenticator_class: github
 

который создается путем запуска:

 helm upgrade --cleanup-on-fail --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.11.1 --values jupyterhub_config.yaml
 

И dask_config.yaml:

 gateway:
  replicas: 1
  annotations: {}
  resources: {}
  prefix: /
  loglevel: INFO
  image:
    name: daskgateway/dask-gateway-server
    tag: 0.9.0
    pullPolicy: IfNotPresent
  imagePullSecrets: []
  service:
    annotations: {}
  auth:
    type: jupyterhub
    jupyterhub:
      apiToken: def
    kerberos:
      keytab: null
    custom:
      class: null
      options: {}
  livenessProbe:
    enabled: true
    initialDelaySeconds: 5
    timeoutSeconds: 2
    periodSeconds: 10
    failureThreshold: 6
  readinessProbe:
    enabled: true
    initialDelaySeconds: 5
    timeoutSeconds: 2
    periodSeconds: 10
    failureThreshold: 3

  backend:
    image:
      name: daskgateway/dask-gateway
      tag: 0.9.0
      pullPolicy: IfNotPresent
    namespace: null
    environment: null

    scheduler:
      extraPodConfig: {}
      extraContainerConfig: {}
      cores:
        request: null
        limit: null
      memory:
        request: null
        limit: null

    worker:
      extraPodConfig: {}
      extraContainerConfig: {}
      cores:
        request: null
        limit: null
      memory:
        request: null
        limit: null

  nodeSelector: {}
  affinity: {}
  tolerations: []
  extraConfig: {}

controller:

  enabled: true
  annotations: {}
  resources: {}
  imagePullSecrets: []
  loglevel: INFO
  completedClusterMaxAge: 86400
  completedClusterCleanupPeriod: 600
  backoffBaseDelay: 0.1
  backoffMaxDelay: 300
  k8sApiRateLimit: 50
  k8sApiRateLimitBurst: 100

  image:
    name: daskgateway/dask-gateway-server
    tag: 0.9.0
    pullPolicy: IfNotPresent

  nodeSelector: {}
  affinity: {}
  tolerations: []

traefik:
  replicas: 1
  annotations: {}
  resources: {}
  image:
    name: traefik
    tag: 2.1.3
  additionalArguments: []
  loglevel: WARN
  dashboard: false
  service:
    type: LoadBalancer
    annotations: {}
    spec: {}
    ports:
      web:
        port: 80
        nodePort: null
      tcp:
        port: web
        nodePort: null
  nodeSelector: {}
  affinity: {}
  tolerations: []

rbac:
  enabled: true
  controller:
    serviceAccountName: null
  gateway:
    serviceAccountName: null
  traefik:
    serviceAccountName: null
 

который устанавливается с:

 helm upgrade --install 
 --namespace=jhub 
 --version=0.9.0 
 --values=dask_config.yaml 
dask-gateway 
daskgateway/dask-gateway
 

Обновить:
Я прочитал журналы в модуле traefik-dask-шлюза. В нем говорится: :

 time="2021-07-13T04:33:10Z" level=error msg="Error while Peeking first byte: read tcp 10.120.5.89:8000->10.128.0.38:19143: read: connection reset by peer"
 

Так что любое понимание того, как это исправить, приветствуется. Спасибо.

Комментарии:

1. Сначала вы должны просмотреть журналы различных модулей шлюза.