我正在尝试在contianer中执行命令(使用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才能工作?).
也