Назад | Перейти на главную страницу

Сервер метрик kubernetes, предоставляющий контекст, превышен

Я использую несколько управляемых кластеров GKE в версии 1.14.8-gke.12 в настройках общего VPC. Внезапно один из моих кластеров перестал отображать правильные показатели 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

Проверяя установку metrics-server по умолчанию на gke, я увидел в логах следующее:

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

Выполнение завивки по указанному адресу вручную дает мне все данные в течение 10 миллисекунд. Я проверил конфигурации сети, и диапазон сети модуля, а также диапазон сети узла имеют доступ к этому порту.

Вопросы:

  1. Какой тайм-аут по умолчанию на сервере метрик? Можем ли мы изменить это в управляемом кластере Google?

  2. Это производственный кластер, и я не могу воспроизвести эту проблему в любом другом кластере, но может ли здесь помочь отключение поддержки Google Horizontal Pod Autoscaling и установка сервера метрик вручную?

Вдобавок вполне ожидаемый мод, обновление до 1.15 здесь не помогло.

Сначала я бы порекомендовал вам проверить, есть ли у вас все еще правила брандмауэра по умолчанию, на 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"

и поделитесь ими здесь.