我在共享 VPC 设置中使用多个 GKE 管理集群1.14.8-gke.12
。突然,我的一个集群停止为 HPA 提供正确的指标。指标服务器已启动并正在运行,但这是 HPA 上的输出:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx-public-nginx-ingress-controller Deployment/nginx-public-nginx-ingress-controller <unknown>/50%, <unknown>/50% 2 11 2 93m
检查 gke 上的默认 metrics-server 安装,我在日志中看到以下内容:
E1221 18:53:13.491188 1 manager.go:111] unable to fully collect metrics: unable to fully scrape metrics from source kubelet_summary:NODE_NAME: unable to fetch metrics from Kubelet NODE_NAME (NODE_IP): Get http://NODE_IP:10255/stats/summary/: context deadline exceeded
E1221 18:53:43.421617 1 manager.go:111] unable to fully collect metrics: unable to fully scrape metrics from source kubelet_summary:NODE_NAME: unable to fetch metrics from Kubelet NODE_NAME (NODE_IP): Get http://NODE_IP:10255/stats/summary/: dial tcp NODE_IP:10255: i/o timeout
手动在上述地址上运行 curl 可在 10 毫秒内提供所有数据。我已检查网络配置,pod 网络范围和节点网络范围均可访问此端口。
问题:
指标服务器上的默认超时是多少?我们可以在 Google 托管集群上更改它吗?
这是一个生产集群,我无法在任何其他集群上复制此问题,但禁用 Google 的 Horizontal Pod Autoscaling 支持并手动安装 metrics-server 是否有帮助?
此外,按照预期,更新到 1.15 并没有帮助。
答案1
首先,我建议您检查是否仍有默认防火墙规则VPC network
->Firewall rules
以确保所有指标请求都能够通过防火墙。
然后尝试使用curl
并获取集群的每个节点。
Stackdriver
之后,在->Logging
使用如下过滤器查找一些日志:
resource.type="k8s_container"
resource.labels.project_id="YOUR_PROJECT_ID"
resource.labels.cluster_name="YOUR_CLUSTER_NAME"
resource.labels.namespace_name="kube-system"
labels.k8s-pod/k8s-app="metrics-server"
labels.k8s-pod/version="YOUR_VERSION_OF_METRICS_SERVER"
severity>=WARNING
并附加一行:
resource.type="k8s_container"
resource.labels.project_id="YOUR_PROJECT_ID"
resource.labels.cluster_name="YOUR_CLUSTER_NAME"
resource.labels.namespace_name="kube-system"
labels.k8s-pod/k8s-app="metrics-server"
labels.k8s-pod/version="YOUR_VERSION_OF_METRICS_SERVER"
severity>=WARNING
"503"
并在此分享。