您正在查看 Kubernetes 版本的文档: v1.18
Kubernetes v1.18 版本的文档已不再维护。您现在看到的版本来自于一份静态的快照。如需查阅最新文档,请点击 最新版本。
StackDriver 中的事件
Kubernetes 事件是一种对象,它为用户提供了洞察集群内发生的事情的能力, 例如调度程序做出了什么决定,或者为什么某些 Pod 被逐出节点。 你可以在应用程序自检和调试 中阅读有关使用事件调试应用程序的更多信息。
因为事件是 API 对象,所以它们存储在主控节点上的 API 服务器中。 为了避免主节点磁盘空间被填满,将强制执行保留策略:事件在最后一次发生的一小时后将会被删除。 为了提供更长的历史记录和聚合能力,应该安装第三方解决方案来捕获事件。
本文描述了一个将 Kubernetes 事件导出为 Stackdriver Logging 的解决方案,在这里可以对它们进行处理和分析。
部署
Google Kubernetes Engine
在 Google Kubernetes Engine 中,如果启用了云日志,那么事件导出器默认部署在主节点运行版本为 1.7 及更高版本的集群中。 为了防止干扰你的工作负载,事件导出器没有设置资源,并且处于尽力而为的 QoS 类型中,这意味着它将在资源匮乏的情况下第一个被杀死。 如果要导出事件,请确保有足够的资源给事件导出器 Pod 使用。 这可能会因为工作负载的不同而有所不同,但平均而言,需要大约 100MB 的内存和 100m 的 CPU。
部署到现有集群
使用下面的命令将事件导出器部署到你的集群:
kubectl create -f https://k8s.io/examples/debug/event-exporter.yaml
由于事件导出器访问 Kubernetes API,因此它需要权限才能访问。 以下的部署配置为使用 RBAC 授权。 它设置服务帐户和集群角色绑定,以允许事件导出器读取事件。 为了确保事件导出器 Pod 不会从节点中退出,你可以另外设置资源请求。 如前所述,100MB 内存和 100m CPU 应该就足够了。
apiVersion: v1
kind: ServiceAccount
metadata:
name: event-exporter-sa
namespace: default
labels:
app: event-exporter
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: event-exporter-rb
labels:
app: event-exporter
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: event-exporter-sa
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: event-exporter-v0.2.3
namespace: default
labels:
app: event-exporter
spec:
selector:
matchLabels:
app: event-exporter
replicas: 1
template:
metadata:
labels:
app: event-exporter
spec:
serviceAccountName: event-exporter-sa
containers:
- name: event-exporter
image: k8s.gcr.io/event-exporter:v0.2.3
command:
- '/event-exporter'
terminationGracePeriodSeconds: 30
用户指南
事件在 Stackdriver Logging 中被导出到 GKE Cluster
资源。
你可以通过从可用资源的下拉菜单中选择适当的选项来找到它们:
你可以使用 Stackdriver Logging 的
过滤机制
基于事件对象字段进行过滤。
例如,下面的查询将显示调度程序中有关 Deployment nginx-deployment
中的 Pod 的事件:
resource.type="gke_cluster"
jsonPayload.kind="Event"
jsonPayload.source.component="default-scheduler"
jsonPayload.involvedObject.name:"nginx-deployment"