我正在尝试在我拥有(有限)访问权限的 Kubernetes 集群上运行 dask hello world 程序。我在 Windows 10 中运行它。在 powershell 中使用 kubectl,我可以成功地从 yaml 文件创建一个 pod,该文件拉取并运行一个 docker 容器。这是因为我之前也在 ~/.kube/config 中设置了我的配置来指定命名空间和我的授权。
以编程方式做同样的事情(我希望):
import os
from dask_kubernetes import KubeCluster, KubeConfig
from dask.distributed import Client
import dask.array as da
path_to_src = os.path.dirname(os.path.realpath(__file__))
cluster = KubeCluster(os.path.join(path_to_src, 'pod-spec.yaml'))
client = Client(cluster)
# Create a large array and calculate the mean
array = da.ones((1000, 1000, 1000))
print(array.mean().compute()) # Should print 1.0
但这会导致权限错误:
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods is forbidden: User \"<not_my_kubectl_config_username>\" cannot create resource \"pods\" in API group \"\" in the namespace \"default\"","reason":"Forbidden","details":{"kind":"pods"},"code":403}
该错误表明它没有使用我的 kubectl 配置,因为用户名不是我用于 kubectl 的用户名,并且命名空间不应该是默认的。文档建议 KubeCluster 将使用 kubectl 配置文件,如果它位于默认位置(~/.kube/config),所以我不确定从这里去哪里。