【发布时间】:2016-02-20 19:14:02
【问题描述】:
我发送了一个在 Ubuntu 上运行 Kubernetes 的 4 节点集群(1 个主节点 3 个工作节点)。我打开了 --authorization-mode=ABAC 并设置了一个策略文件,其中包含如下条目
{"user":"bob", "readonly": true, "namespace": "projectgino"}
我希望用户 bob 只能查看 projectgino 中的资源。我以用户 Bob 的身份使用 kubectl 命令行时遇到问题。当我运行以下命令时
kubectl 获取 pod --token=xxx --namespace=projectgino --server=https://xxx.xxx.xxx.xx:6443
我收到以下错误
错误:无法从服务器读取版本:服务器不允许访问请求的资源
我跟踪了 kubectl 命令行代码,问题似乎是由 kubectl 调用 pkg/client/helper.go 中的函数 NegotiateVersion 引起的。这会调用服务器上的 /api 以获取 Kubernetes 的版本。此调用失败,因为其余路径不包含命名空间 projectgino。我将跟踪代码添加到 pkg/auth/authorizer/abac/abac.go 并在命名空间检查中失败。
我还没有升级 Kubernetes 的最新 1.1.1 版本,但是查看代码我没有发现这方面有任何变化。
有人知道如何配置 Kubernetes 来解决这个问题吗?
【问题讨论】:
标签: kubernetes