From 404b218418a52b741eb930a3091e3d13170c9c14 Mon Sep 17 00:00:00 2001 From: AdamDang Date: Sat, 5 Jan 2019 12:51:27 +0800 Subject: [PATCH] zh-trans:/docs/tasks/debug-application-cluster/events-stackdriver.md (#11996) zh-trans:/docs/tasks/debug-application-cluster/events-stackdriver.md --- .../events-stackdriver.md | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 content/zh/docs/tasks/debug-application-cluster/events-stackdriver.md diff --git a/content/zh/docs/tasks/debug-application-cluster/events-stackdriver.md b/content/zh/docs/tasks/debug-application-cluster/events-stackdriver.md new file mode 100644 index 0000000000..0dbda745d5 --- /dev/null +++ b/content/zh/docs/tasks/debug-application-cluster/events-stackdriver.md @@ -0,0 +1,167 @@ +--- +reviewers: +- piosz +- x13n +content_template: templates/concept +title: StackDriver 中的事件 +--- + + + +{{% capture overview %}} + + + +Kubernetes 事件是一种对象,它为用户提供了洞察集群内发生的事情的能力,例如调度程序做出了什么决定,或者为什么某些 Pod 被逐出节点。 +您可以在[应用程序自检和调试](/docs/tasks/debug-application-cluster/debug-application-introspection/)中阅读有关使用事件调试应用程序的更多信息。 + + + +由于事件是 API 对象,因此它们存储在主节点上的 apiserver 中。 +为了避免主节点磁盘空间被填满,将强制执行保留策略:在最后一次事件发生一小时后删除事件。 +为了提供更长的历史记录和聚合能力,应该安装第三方解决方案来捕获事件。 + + + +本文描述了一个将 Kubernetes 事件导出为 Stackdriver Logging 的解决方案,在这里可以对它们进行处理和分析。 + +{{< note >}} + +不能保证集群中发生的所有事件都将导出到 Stackdriver。 +事件不能导出的一种可能情况是事件导出器没有运行(例如,在重新启动或升级期间)。 +在大多数情况下,可以将事件用于设置 [metrics][sdLogMetrics] 和 [alerts][sdAlerts] 等目的,但您应该注意潜在的不准确性。 +{{< /note >}} + +[sdLogMetrics]: https://cloud.google.com/logging/docs/view/logs_based_metrics +[sdAlerts]: https://cloud.google.com/logging/docs/view/logs_based_metrics#creating_an_alerting_policy + +{{% /capture %}} + + +{{% capture body %}} + + + +## 部署 + +### Google Kubernetes Engine + + + +在 Google Kubernetes Engine 中,如果启用了云日志,那么事件导出器默认部署在主节点运行版本为 1.7 及更高版本的集群中。 +为了防止干扰您的工作负载,事件导出器没有设置资源,并且处于尽力而为的 QoS 类型中,这意味着它将在资源匮乏的情况下第一个被杀死。 +如果要导出事件,请确保有足够的资源给事件导出器 Pod 使用。 +这可能会因为工作负载的不同而有所不同,但平均而言,需要大约 100MB 的内存和 100m 的 CPU。 + + + +### 部署到现有集群 + + + +使用下面的命令将事件导出器部署到您的集群: + +```shell +kubectl create -f https://k8s.io/examples/debug/event-exporter.yaml +``` + + + +由于事件导出器访问 Kubernetes API,因此它需要权限才能访问。 +以下的部署配置为使用 RBAC 授权。 +它设置服务帐户和集群角色绑定,以允许事件导出器读取事件。 +为了确保事件导出器 Pod 不会从节点中退出,您可以另外设置资源请求。 +如前所述,100MB 内存和 100m CPU 应该就足够了。 + +{{< codenew file="debug/event-exporter.yaml" >}} + + + +## 用户指南 + + + +事件在 Stackdriver Logging 中被导出到 `GKE Cluster` 资源。 +您可以通过从可用资源的下拉菜单中选择适当的选项来找到它们: + +Events location in the Stackdriver Logging interface + + + +您可以使用 Stackdriver Logging 的[过滤机制](https://cloud.google.com/logging/docs/view/advanced_filters)基于事件对象字段进行过滤。 +例如,下面的查询将显示调度程序中有关 Deployment `nginx-deployment` 中的 Pod 的事件: + +``` +resource.type="gke_cluster" +jsonPayload.kind="Event" +jsonPayload.source.component="default-scheduler" +jsonPayload.involvedObject.name:"nginx-deployment" +``` + +{{< figure src="/images/docs/stackdriver-event-exporter-filter.png" alt="Filtered events in the Stackdriver Logging interface" width="500" >}} + +{{% /capture %}}