我正在尝试在我的K8S集群上安装Prometheus
当我运行命令
kubectl get namespaces
我有以下命名空间:
default Active 26h
kube-public Active 26h
kube-system Active 26h
monitoring Active 153m
prod Active 5h49m
现在我想通过
创建Prometheushelm install stable/prometheus --name prom -f k8s-values.yml
我得到错误:
错误:发布prom-demo失败:名称空间“默认”被禁止: 用户“ system:serviceaccount:kube-system:default”无法获取资源 名称空间“默认”中的API组“”中的“名称空间”
即使我切换到monitoring
ns也遇到相同的错误,
k8s-values.yml如下所示
rbac:
create: false
server:
name: server
service:
nodePort: 30002
type: NodePort
您知道这里可能缺少什么吗?
答案 0 :(得分:1)
您收到此错误是因为您在使用RBAC时没有授予正确的权限。
授予分till权限:
摘自https://github.com/helm/helm/blob/master/docs/rbac.md
示例:具有群集管理员角色的服务帐户 在rbac-config.yaml中:
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
注意:cluster-admin角色是默认在Kubernetes集群中创建的,因此您不必显式定义它。
$ kubectl create -f rbac-config.yaml
serviceaccount "tiller" created
clusterrolebinding "tiller" created
$ helm init --service-account tiller
为普罗米修斯创建服务帐户:
将rbac.create
的值更改为true
:
rbac:
create: true
server:
name: server
service:
nodePort: 30002
type: NodePort
答案 1 :(得分:0)
请看一下Prometheus运算符,以启动Prometheus堆栈中的所有监视服务。 以下链接很有帮助 https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus/manifests
所有清单都在此处列出。遍历这些文件并部署在k8s集群中需要监视的所有内容