我正在尝试在容器中执行命令(在带有 kubernetes 1.1.2 的 GKE 上的 Kubernetes POD 中)。
阅读文档我了解到我可以使用 GET 或 POST 查询在 API 端点上打开 websocket 连接来执行命令。当我使用 GET 时,它不能完全工作,返回错误。当我尝试使用 POST 时,类似的东西可能会起作用(但事实并非如此):
curl 'https://admin:xxx@IP/api/v1/namespaces/default/pods/hello-whue1/exec?stdout=1&stderr=1&command=ls' -H "Connection: upgrade" -k -X POST -H 'Upgrade: websocket'
对此的回应是
unable to upgrade: missing upgrade headers in request: http.Header{"User-Agent":[]string{"curl/7.44.0"}, "Content-Length":[]string{"0"}, "Accept":[]string{"*/*"}, "Authorization":[]string{"Basic xxx=="}, "Connection":[]string{"upgrade"}, "Upgrade":[]string{"websocket"}}
看起来这应该足以升级 post 请求并开始使用 websocket 流,对吗?我缺少什么?
我还指出,使用 POST 打开 websocket 可能违反了 websocket 协议(只有 GET 应该有效?)。
Also
您可能会度过最美好的时光Kubernetes 客户端库,这与 Kubectl 使用的代码相同,但如果由于某种原因这不是一个选项,那么我最好的建议是仔细查看用于执行远程命令的客户端库代码并查看它设置的标题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)