场景:
我试图通过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
################
谢谢
-阿贝。在
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
我也遇到过同样的情况问题。那个解决方法是使用库伯内特斯河。您只需导入包并更改一行代码,如下所示:
相关问题 更多 >
编程相关推荐