kubernetes - Kubernetes pods/nodes 被禁止
问题描述
我在本地使用 Kubernetes
虽然我使用 kubernetes 构建 gitlab 有一些问题。我认为它与服务帐户或角色绑定有关。但找不到正确的方法
我找到了这些帖子
Kubernetes 日志,用户“system:serviceaccount:default:default”无法获取命名空间中的服务
https://github.com/kubernetes/kops/issues/3551
我的错误日志
==> /var/log/gitlab/prometheus/current <==
2018-12-24_03:06:08.88786 level=error ts=2018-12-24T03:06:08.887812767Z caller=main.go:240 component=k8s_client_runtime err="github.com/prometheus/prometheus/discovery/kubernetes/kubernetes.go:372: Failed to list *v1.Node: nodes is forbidden: User \"system:serviceaccount:default:default\" cannot list resource \"nodes\" in API group \"\" at the cluster scope"
2018-12-24_03:06:08.89075 level=error ts=2018-12-24T03:06:08.890719525Z caller=main.go:240 component=k8s_client_runtime err="github.com/prometheus/prometheus/discovery/kubernetes/kubernetes.go:320: Failed to list *v1.Pod: pods is forbidden: User \"system:serviceaccount:default:default\" cannot list resource \"pods\" in API group \"\" at the cluster scope"
解决方案
问题是由于您的默认服务帐户无权获取集群范围内的节点或 pod。要解决的最小集群角色和集群角色绑定是:
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: prom-admin
rules:
# Just an example, feel free to change it
- apiGroups: [""]
resources: ["pods", "nodes"]
verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: prom-rbac
subjects:
- kind: ServiceAccount
name: default
roleRef:
kind: ClusterRole
name: prom-admin
apiGroup: rbac.authorization.k8s.io
上述集群角色为默认服务帐户提供访问任何命名空间中的任何 Pod 或节点的权限。
您可以更改集群角色以向服务帐户提供更多权限,如果您想授予默认服务帐户的所有访问权限,请resources: ["*"]
替换prom-admin
希望这可以帮助。
推荐阅读
- python - 根据条件在df中附加单元格值
- python - 我试图更新我的个人资料下的所有现有值,但它不起作用 - Python selenium
- configuration - Docker下的Kong Gateway Manager:如何为控制台配置CORS
- angular - 在 Angular 服务中没有返回任何值
- python - 在同一行运行多个 IPython 魔术命令
- docker - 带有嵌套 docker 命令的 sudo/visudo
- flutter - Flutter应用程序全屏代码不起作用
- r - 如何在用 highcharter 制作的箱线图中添加平均值?
- excel - 尝试保护工作簿和保护共享时出错
- sql - 我在 SQL 级别面临 DateTime 合并问题