0

我正在尝试创建一个守护程序集,它将从特定命名空间的节点中的所有 pod 收集日志。我不确定如何指定命名空间名称。

我有一个命名空间日志记录,我在其中部署守护程序集。我创建了一个服务帐户,如下所示

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当前具有来自所有命名空间中运行的容器的日志文件。有没有办法可以限制这个守护进程只从我需要的命名空间收集日志?

4

2 回答 2

1

这是我们在 k8s 文档中的内容(链接)。

角色总是在特定的命名空间内设置权限;创建角色时,必须指定它所属的命名空间。

相反,ClusterRole 是一个非命名空间资源。资源具有不同的名称(Role 和 ClusterRole),因为 Kubernetes 对象总是必须具有命名空间或不具有命名空间;不可能两者兼而有之。

因此,在您的情况下,您需要使用RoleRoleBinding而不是 ClusterRole 和 ClusterRoleBinding。

于 2020-03-31T21:52:05.487 回答
0

您必须调整您的位配置以仅读取您想要的日志文件。或者,如果您愿意,也可以使用路由规则。这与 Kubernetes API 无关,Bit 通过绑定挂载直接从磁盘读取日志。

于 2020-04-01T02:02:19.097 回答