在使用Kubernetes API
时,我遇到了这个问题,我无法使用API将pod exec
转换到另一个pod中。
我确保我运行的pod
和serviceAccount
具有正确的RBAC
权限(并且两个pods
位于相同的命名空间中)。我尝试使用curl
(7.74.0
),但我偶然发现了this,因此回答说curl
可能不是正确的实用程序。我已经尝试过其他可能的选项(这个和this)在同一篇文章的评论中提到,但没有运气。
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
NAMESPACE=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
curl -k -H "Upgrade: SPDY/3.1" -H "Authorization: Bearer $TOKEN" -H "Connection: Upgrade" -H "Sec-WebSocket-Version: 13" -H "Accept: application/json" "https://kuberne
tes.default.svc/api/v1/namespaces/$NAMESPACE/pods/nginx-deployment-5c547569b4-jgm85/exec?command=ls"
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "Upgrade request required",
"reason": "BadRequest",
"code": 400
}
已经尝试添加/删除其中的一些头。
接下来我尝试的是wscat
(5.2.0
)。尝试了几个变化,但不用说,“没有运气”再次。
wscat -n -H "Authorization: Bearer $TOKEN" -c wss://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/pods/nginx-deployment-5c547569b4-jgm85/exec?command=ls
error: Unexpected server response: 403
此命令不输出任何内容(根本不输出):
wscat -c wss://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/pods/nginx-deployment-5c547569b4-jgm85/exec?command=ls&stdin=true&stdout=true&tty=true&token=$TOKEN&namespace=$NAMESPACE
我看了this的帖子,但它不适合我。
wscat -n -H "Authorization: Bearer $TOKEN" -c 'https://kubernetes.default.svc/api/v1/namespaces/$NAMESPACE/pods/nginx-deployment-5c547569b4-jgm85/exec?command=ls&stdin=true&stdout=true&tty=true'
...
SyntaxError: The URL's protocol must be one of "ws:", "wss:", or "ws+unix:"
...
不知道这家伙是怎么使用http(s)
的。
有人能好心地建议我做什么或替代品(不能使用kubectl
)做同样的事情是否有问题吗?TIA
1条答案
按热度按时间ercv8c1e1#
curl 魔术和试验和错误。请确保用户具有正确的权限,这样您就不会收到403。
这是针对minikube集群的,这应该解释了端口选择,下面是环境的其余部分: