我们已经创建了 GKE 集群,并且我们从 gke-metrics-agent 收到错误。错误每 cca 30 分钟出现一次。总是相同的 62 个错误。
所有错误都有标签k8s-pod/k8s-app: "gke-metrics-agent"。
第一个错误是:
error exporterhelper/queued_retry.go:245 Exporting failed. Try enabling retry_on_failure config option. {"kind": "exporter", "name": "googlecloud", "error": "rpc error: code = DeadlineExceeded desc = Deadline expired before operation could complete."
这个错误后面跟着这些错误的顺序
- “go.opentelemetry.io/collector/exporter/exporterhelper.(*retrySender).send”
- “/go/src/gke-logmon/gke-metrics-agent/vendor/go.opentelemetry.io/collector/exporter/exporterhelper/queued_retry.go:245”
- go.opentelemetry.io/collector/exporter/exporterhelper.(*metricsSenderWithObservability).send
- /go/src/gke-logmon/gke-metrics-agent/vendor/go.opentelemetry.io/collector/exporter/exporterhelper/metrics.go:120
有这样的 cca 40 错误。两个突出的错误是:
- error exporterhelper/queued_retry.go:175 Exporting failed. Dropping data. Try enabling sending_queue to survive temporary failures. {"kind": "exporter", "name": "googlecloud", "dropped_items": 19}"
- warn batchprocessor/batch_processor.go:184 Sender failed {"kind": "processor", "name": "batch", "error": "rpc error: code = DeadlineExceeded desc = Deadline expired before operation could complete."}"
我试图在谷歌上搜索这些错误,但我找不到任何东西。我什至找不到 gke-metrics-agent 的任何文档。
我尝试过的事情:
- 检查配额
- 将 GKE 更新到更新版本(当前版本为 1.21.3-gke.2001)
- 更新节点
- 禁用所有防火墙规则
- 将所有权限授予 k8s 节点
我可以提供有关我们的 kubernetes 集群的更多信息,但我不知道哪些信息可能对解决这个问题很重要。
“超过截止日期”是一个已知问题,指标通过 GKE Metrics 代理发送到 Cloud Monitoring,该代理建立在 Open Telemetry 之上。目前有以下两种解决方法来解决该问题:
1.更新超时。
由于新版本包含将默认超时时间从 5 秒增加到 12 秒的更改。因此,您可能需要使用可以修复此 rpc 错误的新版本重建和重新部署工作负载。
2.要使用更高的GKE版本,这个问题已经修复了gke-metrics-agent版本:1.18.6-gke.6400+ 1.19.3-gke.600+ 1.20.0-gke.600+。
如果您仍然看到这些错误,请查看您的指标。主要
kubernetes.io/container/...
是在与 gke-metrics-agent 记录错误的同一节点上运行的容器的指标。您是否看到指标中不应该存在的差距?超出上下文的错误可能偶尔发生,但不应该是大量的。这可能是网络问题或只是偶尔出现的问题。您是否有任何网络政策/防火墙规则可能会阻止 gke-metrics-agent 与 Cloud Monitoring 通信?
遗憾的是,您无法自己更新 gke-metrics-agent 中的开放遥测。更新的集群版本也会有所帮助,因为它会更新代理,因此请尽可能升级集群。如果问题影响您的指标,请寻求支持。