go - 在集群配置中部署在非默认命名空间中时无法获取 pod
问题描述
当我将我的 golang 服务部署到命名空间以外的任何命名default
空间时,该服务无法检索任何命名空间上的 pod。default
使用 golang client-go api部署在命名空间上的相同服务完美运行。
这是一个安全问题吗?
谢谢。
解决方案
这个问题是权限问题。由于您正在使用rest.InClusterConfig(config)
创建客户端。这意味着它使用 pod 的服务帐户作为凭证。因此,请检查该服务帐户是否有权获取任何命名空间中的 pod。
如果 pod 中的 service account 没有定义,那么它将使用
default
service account。
如果您的集群中启用了 RBAC,则检查该命名空间中的角色绑定,以确定您的服务帐户是否具有权限。
# to see the list of role bindings in 'default' namespace
kubectl get rolebindings --namespace default
看具体的rolebinding
kubectl get rolebindings ROLE-BINDING-NAME --namespace default -o yaml
您还可以创建角色和角色绑定以授予权限。要了解 RBAC 角色和角色绑定,请参见此处:https ://kubernetes.io/docs/reference/access-authn-authz/rbac/
推荐阅读
- typescript - 打字稿。定义函数对象的类型
- ruby - 无法使用没有 rails 的 mysql2 构建 gem 原生扩展
- github - 在 digitalocean droplet 这样的服务器上拥有私有 ssh 密钥以连接到 github 是否安全?
- html - 如果按钮被禁用,CSS 悬停
- python - 比较来自 python 的 Sikit-Learn 和来自 R 的 varSelRF
- javascript - Mongoose 在聚合时忽略空字段
- nginx - Nginx 无法在 Windows 中加载证书
- sql - T/SQL LDAP 查询以获取真实的 lastLoginTimestamp 值
- html - 我无法提交表单并将数据放入 django 网站的数据库中
- umbraco - 成员默认属性在代码中不可用