kubectl exec返回'握手状态500`

2024-05-29 06:11:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在AWS上使用的是pythonkubernetes3.0.0库和kubernetes1.6.6。在

我的豆荚可以很快消失。有时当我试图执行它们时,我会得到ApiExceptionHandshake status 500错误状态。在

这发生在in cluster configuration以及kube config上。在

当pod/container不存在时,我得到404错误,这是合理的,但是500是{}。我没有在kube-apiserver.log中找到404个错误。在

这意味着什么?有人能给我指出正确的方向吗。在


Tags: inawsconfig状态containerstatus错误configuration
1条回答
网友
1楼 · 发布于 2024-05-29 06:11:38

我知道这个问题有点老了,但是我想分享一下我在尝试将python/kubernetes attach/exec用于几个调试案例时发现的问题(因为我在任何地方都找不到这方面的文档)。在

据我所知,这一切都是为了让关键字参数与实际的容器配置相匹配,而不是让容器做什么。在

使用kubectl run创建pod时,如果不使用-i tty标志(表示交互式/TTY分配),然后尝试在函数中将tty或{}标志设置为True,那么您将得到一个神秘的500错误,没有其他调试信息。如果您需要使用stdintty,并且您正在使用一个配置文件(与run相反),那么请确保set the ^{} and ^{} flags to ^{} in ^{}。在

运行resp.readline_stdout()时,如果得到OverflowError: timestamp too large to convert to C _PyTime_t,请设置关键字参数timeout=<any integer>。默认情况下,timeout变量默认为None,这是该函数中的无效值。在

如果您运行attach/exec命令并得到一个APIException和一个状态代码0,错误Reason: hostname 'X.X.X.X' doesn't match either of...,请注意,似乎与python2不兼容。在Python3中工作。最终会被修补的。在

当pod不存在时,我可以确认404代码是通过ApiException抛出的。在

如果您遇到一个神秘的错误,说upgrade request required,请注意您需要使用kubernetes.stream.stream函数来包装对attach/exec的调用。您可以看到这个issue on GitHubthis example code来帮助您越过那个部分。在

下面是我的例子:resp = kubernetes.stream.stream(k8s.connect_get_namespaced_pod_attach, name='alpine-python-2', namespace="default", stderr=True, stdin=True, stdout=True, tty=True, _preload_content=False)

注意,_preload_content=Falseattach命令中是必不可少的,否则调用将无限期阻塞。在

我知道这些信息可能比你想要的要多,但希望至少其中一些能对你有所帮助。在

相关问题 更多 >

    热门问题