我想执行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
命令时是否遗漏了任何内容?请帮忙。
答案 0 :(得分:0)
我找到了解决这个问题的方法,但不是一个好问题。
我发布了--disable-filter
以及kubectl proxy
命令。之后,我可以成功执行kubectl exec
个命令。
但是当我使用--disable-filter
时,它很容易受到攻击。
系统Request filter disabled, your proxy is vulnerable to XSRF attacks, please be cautious
会显示--disable-filter
消息。
所以,我不认为这是一个很好的解决方案。
如果有人知道更好的解决方案,请告诉我。
答案 1 :(得分:0)
默认情况下,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/