#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. Сначала вы должны просмотреть журналы различных модулей шлюза.