我对我应该如何连接到通过外部服务的 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 显示traefic
为ClusterIP
没有与之关联的公共 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
,我一直在尝试以下方法:auth
Gateway
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/')