kubectl exec不适用于kubectl代理

时间:2018-04-26 10:58:19

标签: docker kubernetes kubectl

我想执行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命令时是否遗漏了任何内容?请帮忙。

2 个答案:

答案 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/