Я использую несколько управляемых кластеров 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 миллисекунд. Я проверил конфигурации сети, и диапазон сети модуля, а также диапазон сети узла имеют доступ к этому порту.
Вопросы:
Какой тайм-аут по умолчанию на сервере метрик? Можем ли мы изменить это в управляемом кластере Google?
Это производственный кластер, и я не могу воспроизвести эту проблему в любом другом кластере, но может ли здесь помочь отключение поддержки 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"
и поделитесь ими здесь.