Python:kubernetes exec失败,需要升级消息

2024-09-30 22:14:47 发布

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

场景:

我试图通过cli.connect_post_namespaced_pod_exec()使用kubernetes包运行一个基本的ls命令,但是我得到了一个不知道如何调试的stacktrace。是的,我尝试过搜索,但我不确定问题是什么,因为我使用的是来自here的文档示例

操作系统:

马科斯塞拉10.12.2

代码:

#!/usr/local/bin/python2.7

import logging

from pprint import pprint
from kubernetes import client, config

FORMAT = "[%(filename)s:%(lineno)s - %(funcName)s() ] %(message)s"
level = logging.DEBUG
logging.basicConfig(format=FORMAT, level=level)

def main():
    path_to_config = "/Users/acabrer/.kube/config"
    config.load_kube_config(config_file=path_to_config)
    ns = "default"
    pod = "nginx"
    cmd = "ls"
    cli = cli = client.CoreV1Api()
    response = cli.connect_post_namespaced_pod_exec(pod, ns, stderr=True, stdin=True, stdout=True, command=cmd)
    pprint(response)

if __name__ == '__main__':
    main()

堆栈跟踪:

^{pr2}$

任何意见都会得到很好的评价。在

编辑1:

abrahams-mbp:.kube acabrer$ curl --help |grep TLSv
 -1, --tlsv1         Use >= TLSv1 (SSL)
     --tlsv1.0       Use TLSv1.0 (SSL)
     --tlsv1.1       Use TLSv1.1 (SSL)
     --tlsv1.2       Use TLSv1.2 (SSL)
abrahams-mbp:.kube acabrer$ python2.7 -c "import ssl; print ssl.OPENSSL_VERSION_INFO"
(1, 0, 2, 10, 15)

编辑2:

abrahams-mbp:.kube acabrer$ curl --tlsv1.2 https://x.x.x.x -k
Unauthorized
abrahams-mbp:.kube acabrer$ curl --tlsv1.1 https://x.x.x.x -k
curl: (35) Unknown SSL protocol error in connection to x.x.x.x:-9836

编辑3: 我在api_client.py中放置了一些print语句来查看完整的请求信息,这就是我看到的。在

注意:为了安全起见,我删除了端点的ip地址。在

bash-3.2# vim /usr/local/lib/python2.7/site-packages/kubernetes/client/api_client.py
bash-3.2# /Users/acabrer/kube.py
################
POST
https://x.x.x.x/api/v1/namespaces/default/pods/nginx/exec
[('stdin', True), ('command', 'ls'), ('stderr', True), ('stdout', True)]
{'Content-Type': 'application/json', 'Accept': '*/*', 'User-Agent': 'Swagger-Codegen/1.0.0-alpha/python'}
[]
None
################

谢谢

-阿贝。在


Tags: importclientconfigtruesslcliusecurl
3条回答

Python kuberenetes客户机现在有了一个完整的示例如何exec

https://github.com/kubernetes-client/python/blob/master/examples/exec.py

为了回答我自己的问题,这里引用了实际python绑定中的一个bug:https://github.com/kubernetes-incubator/client-python/issues/58

我也遇到过同样的情况问题。那个解决方法是使用库伯内特斯河。您只需导入包并更改一行代码,如下所示:

from kubernetes.stream import stream
#response = cli.connect_post_namespaced_pod_exec(pod, ns, stderr=True, stdin=True,stdout=True, command=cmd)
response = stream(cli.connect_post_namespaced_pod_exec,pod, ns, stderr=True,stdin=True, stdout=True, command=cmd)

相关问题 更多 >