2

我对我应该如何连接到通过外部服务的 Dask-helm 图表创建的已部署 Dask 集群感到有些困惑。我按照此处的说明部署了一个 Dask 集群

成功部署后,它向我显示了我的 pod 和服务,如下所示:

hub-574f85779c-sk7ct                                 1/1     Running   0          60m
jupyter-dask                                         1/1     Running   0          32m
proxy-68bcf94bd5-22kj5                               1/1     Running   0          60m
traefik-dhub-dask-gateway-6468d9cbff-9bclk           1/1     Running   0          60m
user-scheduler-c787cdb9f-924r2                       1/1     Running   0          60m
user-scheduler-c787cdb9f-l4jwv                       1/1     Running   0          60m

但请注意,我的服务将 my 显示traeficClusterIP没有与之关联的公共 ip。

proxy-public                            LoadBalancer   10.3.245.29    104.zzz.yyy.xxx   80:30447/TCP                 66m
traefik-dhub-dask-gateway               ClusterIP      10.3.241.129   <none>            80/TCP                       66m

我可以使用类似于下面的代码连接到作为 Helm Chart 的一部分创建的提供的 Jupyter Notebook,并且完全没有问题地使用我的集群。

from dask_gateway import GatewayCluster
cluster = GatewayCluster()
client = cluster.get_client()
cluster.scale(2)
# then I can use this client to submit to the cluster
f = client.submit(inc, 7.2)

现在我想从运行在我的 k8s 集群之外的另一个应用程序进行连接。根据我应该传递给的这个文档address,我一直在尝试以下方法:authGateway

import os
os.environ["JUPYTERHUB_API_TOKEN"] = "f206000844a60da8b48e40f6c91c3f2axxxxxxxxx"
from dask_gateway import Gateway
gateway = Gateway(
     "http://104.zzz.yyy.xxx/services/dask-gateway", 
    auth="jupyterhub"
)
gateway.list_clusters()

但总是以 a 的形式返回401,从外部连接到该集群的正确方法是什么?

此外,这些服务对公共互联网完全开放。保护这些的最佳实践是什么?(请不要告诉我使用 Kerberos :( )

ClientResponseError: 401, message='Unauthorized', url=URL('http://104.zzz.yyy.xxx/services/dask-gateway/api/v1/clusters/')
4

1 回答 1

2

我在dask-gatewayGitHub 上发布了同样的问题作为问题,并得到了解决我的问题的以下回复

https://github.com/dask/dask-gateway/issues/356#issuecomment-737504145

总之,使用这个安装过程。

于 2020-12-03T18:00:19.857 回答