我想要执行kubectl exec命令并连接到一个容器,这样我就可以在它上面执行一些命令。我已经使用以下命令设置了代理:
kubectl proxy -p=8080 --kubeconfig=/directory_path/remote-kubeconfig &代理已开始运行。我尝试执行kubectl exec命令:
kubectl exec -it <pod> --namespace=<namespace> -c <container> -- ls -l我得到了以下错误:
error: unable to upgrade connection: <h3>Unauthorized</h3>执行kubectl exec命令时,我是否遗漏了什么??请帮帮忙。
发布于 2018-05-01 16:10:31
我有一个解决这个问题的办法,但不是一个好办法。
我发出了--disable-filter和kubectl proxy命令。之后,我就可以成功地执行kubectl exec命令了。
但是当我使用--disable-filter时,它很容易受到攻击。消息Request filter disabled, your proxy is vulnerable to XSRF attacks, please be cautious将与--disable-filter一起显示。
所以,我不认为这是一个好的解决方案。
如果有人知道这个问题更好的解决方案,请让我知道。
发布于 2020-06-02 13:12:20
默认情况下,kubectl proxy会拒绝与^/api/./pods/./exec匹配的API命令。
为了“绕过”它,你需要做的就是用适当的标志启动kubectl proxy:
kubectl proxy --port 8080 --reject-paths "^/api/./pods/./attach"
当然,这也带来了安全风险,任何有权访问您的代理的人现在都可以执行到集群上的任何pod中。
如果您确实需要在生产环境中执行此操作,我强烈建议使用RBAC授权限制代理的访问权限-将代理作为具有ServiceAccount的部署运行。
有关详细信息,请参阅:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#proxy https://kubernetes.io/docs/reference/access-authn-authz/rbac/
https://stackoverflow.com/questions/50041250
复制相似问题