在本文中,我們將瞭解如何配置Filebeat作爲DaemonSet在我們的Kubernetes集羣中運行,以便將日誌運送到Elasticsearch後端。我們使用Filebeat而不是FluentD或FluentBit,因爲它是一個非常輕量級的實用程序,並且對Kubernetes有一流的支持,因此這是十分適合生產的配置。
部署架構
Filebeat將在我們的Kubernetes集羣中作爲DaemonSet運行。它將會:
- 部署在一個名爲logging的單獨的命名空間內
- Pod將會在Master節點和Worker節點被調度
- master節點pods將轉發api-server日誌,用於審計和集羣管理。
- 客戶端節點Pods將轉發工作負載相關的日誌,用於應用程序可觀察性
創建Filebeat 服務賬戶和ClusterRole
部署以下manifest以創建Filebeat pod所需的權限:
apiVersion: v1
kind: Namespace
metadata:
name: logging
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: filebeat
namespace: logging
labels:
k8s-app: filebeat
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: filebeat
namespace: logging
labels:
k8s-app: filebeat
rules:
- apiGroups: [""] # "" indicates the core API group
resources:
- namespaces
- pods
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: filebeat
namespace: logging
subjects:
- kind: ServiceAccount
name: filebeat
namespace: kube-system
roleRef:
kind: ClusterRole
name: filebeat
apiGroup: rbac.authorization.k8s.io
我們應該從安全的角度出發,確保ClusterRole的權限盡可能地受到限制。如果與該服務賬戶相關聯的任何一個pod被泄露,那麼攻擊者將無法獲得對整個集羣或其中運行的應用程序的訪問權限。
創建Filebeat ConfigMap
原文鏈接:【https://www.infoq.cn/article/0ATtUVqlxtV4sPUJWE4W】。未經作者許可,禁止轉載。