我正在尝试使heapster eventer在启用了RBAC的群集上工作。使用与/ heapster命令相同的角色似乎还不够。
在运行pod日志时,请填写以下条目:
Failed to load events: events is forbidden: User "system:serviceaccount:kube-system:heapster" cannot list events at the cluster scope
没有人知道我的heapster服务帐户的正确授权,但没有管理员权限?
Eventer部署文档:
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
k8s-app: eventer
name: eventer
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
k8s-app: eventer
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
labels:
k8s-app: eventer
spec:
serviceAccountName: heapster
containers:
- name: eventer
image: k8s.gcr.io/heapster-amd64:v1.5.4
imagePullPolicy: IfNotPresent
command:
- /eventer
- --source=kubernetes:https://kubernetes.default
- --sink=log
resources:
limits:
cpu: 100m
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
terminationMessagePath: /dev/termination-log
restartPolicy: Always
terminationGracePeriodSeconds: 30
RBAC:
# Original: https://brookbach.com/2018/10/29/Heapster-on-Kubernetes-1.11.3.html
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: heapster
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- namespaces
- events
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- deployments
verbs:
- get
- list
- update
- watch
- apiGroups:
- ""
resources:
- nodes/stats
verbs:
- get
集群角色绑定(bind):
# Original: https://github.com/kubernetes-retired/heapster/blob/master/deploy/kube-config/rbac/heapster-rbac.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: heapster
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: heapster
subjects:
- kind: ServiceAccount
name: heapster
namespace: kube-system
相关问题:
How to propagate kubernetes events from a GKE cluster to google cloud log
最佳答案
以上所有对象似乎对我来说都是正确的。
这只是预感,但是也许您首先创建了Deployment,然后创建了ClusterRole和/或ClusterBindingRole和/或ServiceAccount本身。确保首先拥有这3个组件,然后删除当前的堆Pod(或Deployment),然后等待Pod终止,然后再重新创建Deployment。
(通过kubectl create sa heapster -n kube-system
创建ServiceAccount)
另外,您可以通过以下方式测试ServiceAccount是否可以列出事件:
kubectl get ev --all-namespaces --as system:serviceaccount:kube-system:heapster