如何在集群角色kubernetes中包含或排除特定名称空间
我正在尝试创建一个守护进程集,该守护进程集将从特定命名空间中的节点中的所有pod收集日志。我不确定如何指定名称空间名称 我有一个名称空间日志,在其中部署守护程序集。我创建了一个ServiceAccount,如下所示如何在集群角色kubernetes中包含或排除特定名称空间,kubernetes,kubectl,fluent-bit,Kubernetes,Kubectl,Fluent Bit,我正在尝试创建一个守护进程集,该守护进程集将从特定命名空间中的节点中的所有pod收集日志。我不确定如何指定名称空间名称 我有一个名称空间日志,在其中部署守护程序集。我创建了一个ServiceAccount,如下所示 apiVersion: v1 kind: ServiceAccount metadata: name: fluent-bit namespace: logging 我的集群角色如下所示 apiVersion: rbac.authorization.k8s.io/v1beta
apiVersion: v1
kind: ServiceAccount
metadata:
name: fluent-bit
namespace: logging
我的集群角色如下所示
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: fluent-bit-read
rules:
- apiGroups: [""]
resources:
- namespaces
- pods
verbs: ["get", "list", "watch"]
角色绑定
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: fluent-bit-read
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: fluent-bit-read
subjects:
- kind: ServiceAccount
name: fluent-bit
namespace: logging
现在,守护进程集从路径
/var/log/containers/*.log
收集日志,该路径当前包含所有名称空间中运行的容器的日志文件。是否有一种方法可以限制此守护程序仅从我需要的名称空间收集日志?以下是k8s文档()中的内容
角色始终在特定命名空间内设置权限;创建角色时,必须指定它所属的命名空间
相比之下,ClusterRole是一个非命名空间的资源。资源具有不同的名称(角色和ClusterRole),因为Kubernetes对象始终必须具有名称空间或不具有名称空间;不可能两者都有
因此,在您的情况下,您需要使用角色和角色绑定,而不是ClusterRole和ClusterRoleBinding。您必须调整位配置以仅读取所需的日志文件。如果您愿意,也可以使用路由规则。这与Kubernetes API无关,Bit通过绑定挂载直接从磁盘读取日志。您的问题和标题无关。Fluentd/bit日志收集与Kubernetes RBAC完全无关。fluentbit作为kubernestes群集中的守护程序运行,我想将其限制为仅读取某些namespaces@vkr为什么我的回答不能回答你的问题?您应该使用角色而不是ClusterRole,因为ClusterRole是群集范围的,不能使用名称空间。