本文介绍了dask-kubernetes:使用大写用户名创建Pod时出现问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在GKE上学习。



我偶然发现了一个异步错误(错误:asyncio:从未检索到任务异常)。



请参阅以下步骤问题。



不过,对于使用远程Kubernetes集群部署dask-kubernetes的其他指导表示赞赏(请注意,我使用了在这里拥有丰富的经验,但是想尝试本机方法,因为我)。



创建集群:

  $ gcloud容器集群创建--machine-type n1-standard-2 --num -nodes 2 --zone us-central1-b --cluster-version最新的k8scluster 

Crea新建一个python环境:

  $ conda create -n daskk8s python = 3.8 
$ conda激活daskk8s

安装软件包:

  $ conda install -c conda-forge dask-kubernetes 

通过放置此项目来验证项目在我的.bash_profile中:

  $ export GOOGLE_APPLICATION_CREDENTIALS = / Users / Ray / Downloads / daskk8s-f92d8191517a.json 

启动笔记本:

  $ jupyter笔记本

运行命令并使用示例



<$ p来自dask_kubernetes的$ p> 导入KubeCluster,make_pod_spec

pod_spec = make_pod_spec(image ='daskdev / dask:latest',
memory_limit ='4G',memory_request =' 4G',
cpu_limit = 1,cpu_request = 1,
env = {'EXTRA_PIP_PACKAGES':'fastparquet git + https://github.com/dask/distributed'})

cluster = KubeCluster(pod_spec )

cluster.scale(1)
错误:asyncio:从未检索到任务异常
将来:<任务完成名称='Task-8'coro =< _wrap_awaitable ()完成,定义在/opt/anaconda3/envs/daskk8s/lib/python3.8/asyncio/tasks.py:677> exception = ApiException()>
追溯(最近一次通话):
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/asyncio/tasks.py,行684,在_wrap_awaitable
中返回(来自awaitable的收益。__await __())
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/distributed/deploy/spec.py,第50行,位于_
等待self.start()
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/dask_kubernetes/core.py,行78,开始
加薪e
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/dask_kubernetes/core.py,行68,在开始
中self._pod =等待self.core_api .create_namespaced_pod(
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/api_client.py,第162行,位于__call_api
response_data =等待自身.request(
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/rest.py,行224,在POST
中返回(等待自我.request( POST,url,
文件 /opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/rest.py,第181行,在请求
中引发ApiException(http_resp = r)
kubernetes_asyncio.client.rest.ApiException:(422)
原因:无法处理的实体
HTTP响应标头:< CIMultiDictProxy('Audit-Id':'89b614f5-2e9c-46bd-8d7d-b834e1a18f1a',' Content-Type: application / json, Date: Fri,2020年3月13日格林尼治标准时间, Content-Length: 1607)>
HTTP响应正文:{ kind: Status, apiVersion: v1, metadata:{}, status: Failure, message: Pod \黄昏-Ray-ece943dc-8lj4mj\无效:[metadata.generateName:无效值:\ dask-Ray-ece943dc-8\:DNS-1123子域必须包含小写字母数字字符-或。,并且必须以字母数字字符开头和结尾(例如 example.com,用于验证的正则表达式为 [a-z0-9]([-a-z0-9] * [a-z0- 9])?(\\。[a-z0-9]([-a-z0-9] * [a-z0-9])?)*'),元数据名称:无效值:\ dask-Ray-ece943dc-8lj4mj\:DNS-1123子域必须由小写字母数字字符-或。组成,并且必须以字母数字字符开头和结尾(例如, example.com,用于验证的正则表达式是'[a-z0-9]([-a-z0-9] * [a-z0-9])?(\\。[a-z0-9]([-a- z0-9] * [a-z0-9])?)*')],原因:无效,详细信息:{名称: dask-Ray-ece943dc-8lj4mj,种类: Pod,原因:[{原因: FieldValueInvalid,消息:无效值:\ dask-Ray-ece943dc-8\:DNS-1123子域必须包含由小写字母数字字符-或。组成,并且必须以字母数字字符开头和结尾(例如'example.com',用于验证的正则表达式为'[a-z0-9]([-a-z0-9] * [a-z0-9])?(\\。[a-z0-9 ]([-a-z0-9] * [a-z0-9]?)*'), field: metadata.generateName},{ reason: FieldValueInvalid, message: 无效值:\ dask-Ray-ece943dc-8lj4mj\:DNS-1123子域必须由小写字母数字字符-或。组成,并且必须以字母数字字符开头和结尾(例如, 'example.com',用于验证的正则表达式为'[a-z0-9]([-a-z0-9] * [a-z0-9])?(\\。[a-z0-9 ]([-a-z0-9] * [a-z0-9])?')'' field: metadata.name}]}}, code:422}


解决方案

将小写名称指定为 KubeCluster



KubeCluster(pod_spec,name ='ray')


I am learning dask-kubernetes on GKE.

I stumbled across an asyncio error (ERROR:asyncio:Task exception was never retrieved).

See steps below for the issue.

However, additional guidance on using deploying dask-kubernetes with a remote Kubernetes cluster is appreciated (note I used helm with good experience here but want to try the native approach as I can't scale the helm approach).

Create the cluster:

$ gcloud container clusters create --machine-type n1-standard-2 --num-nodes 2 --zone us-central1-b --cluster-version latest k8scluster

Create a new python environment:

$ conda create -n daskk8s python=3.8
$ conda activate daskk8s

Install the package:

$ conda install -c conda-forge dask-kubernetes

Authenticate the project by putting this in my .bash_profile:

$ export GOOGLE_APPLICATION_CREDENTIALS="/Users/Ray/Downloads/daskk8s-f92d8191517a.json"

Start a notebook:

$ jupyter notebook

Run commands and use the example here

from dask_kubernetes import KubeCluster, make_pod_spec

pod_spec = make_pod_spec(image='daskdev/dask:latest',
                         memory_limit='4G', memory_request='4G',
                         cpu_limit=1, cpu_request=1,
                         env={'EXTRA_PIP_PACKAGES': 'fastparquet git+https://github.com/dask/distributed'})

cluster = KubeCluster(pod_spec)

cluster.scale(1)
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-8' coro=<_wrap_awaitable() done, defined at /opt/anaconda3/envs/daskk8s/lib/python3.8/asyncio/tasks.py:677> exception=ApiException()>
Traceback (most recent call last):
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/asyncio/tasks.py", line 684, in _wrap_awaitable
    return (yield from awaitable.__await__())
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/distributed/deploy/spec.py", line 50, in _
    await self.start()
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/dask_kubernetes/core.py", line 78, in start
    raise e
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/dask_kubernetes/core.py", line 68, in start
    self._pod = await self.core_api.create_namespaced_pod(
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/api_client.py", line 162, in __call_api
    response_data = await self.request(
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/rest.py", line 224, in POST
    return (await self.request("POST", url,
  File "/opt/anaconda3/envs/daskk8s/lib/python3.8/site-packages/kubernetes_asyncio/client/rest.py", line 181, in request
    raise ApiException(http_resp=r)
kubernetes_asyncio.client.rest.ApiException: (422)
Reason: Unprocessable Entity
HTTP response headers: <CIMultiDictProxy('Audit-Id': '89b614f5-2e9c-46bd-8d7d-b834e1a18f1a', 'Content-Type': 'application/json', 'Date': 'Fri, 13 Mar 2020 01:21:14 GMT', 'Content-Length': '1607')>
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"Pod \"dask-Ray-ece943dc-8lj4mj\" is invalid: [metadata.generateName: Invalid value: \"dask-Ray-ece943dc-8\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'), metadata.name: Invalid value: \"dask-Ray-ece943dc-8lj4mj\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')]","reason":"Invalid","details":{"name":"dask-Ray-ece943dc-8lj4mj","kind":"Pod","causes":[{"reason":"FieldValueInvalid","message":"Invalid value: \"dask-Ray-ece943dc-8\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')","field":"metadata.generateName"},{"reason":"FieldValueInvalid","message":"Invalid value: \"dask-Ray-ece943dc-8lj4mj\": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')","field":"metadata.name"}]},"code":422}
解决方案

Specify a lowercase name to KubeCluster:

KubeCluster(pod_spec, name='ray')

这篇关于dask-kubernetes:使用大写用户名创建Pod时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 20:08