Обновление Kubernetes NGINX для использования новой модели ресурсов StackDriver во внешних показателях - PullRequest
1 голос
/ 26 января 2020

Я успешно настроил NGINX как вход для моего кластера Kubernetes на GKE. Я включил и настроил внешние метрики (и я использую внешнюю метрику c в моем HPA для автоматического масштабирования). Все хорошо, и все работает хорошо.

Тем не менее, у меня есть предупреждение об устаревании в StackDriver вокруг этих внешних показателей. Я обнаружил, что эти предупреждения происходят из-за использования «старых» типов ресурсов.

Например, с помощью этой команды:

kubectl get --raw "/ apis / external.metrics.k8s.io/v1beta1/namespaces/default/custom.googleapis.com|nginx-ingress-controller|nginx_ingress_controller_nginx_process_connections "| JQ

Я получаю этот вывод:

{
  "metricName": "custom.googleapis.com|nginx-ingress-controller|nginx_ingress_controller_nginx_process_connections",
  "metricLabels": {
    "metric.labels.controller_class": "nginx",
    "metric.labels.controller_namespace": "ingress-nginx",
    "metric.labels.controller_pod": "nginx-ingress-controller-[snip]",
    "metric.labels.state": "writing",
    "resource.labels.cluster_name": "[snip]",
    "resource.labels.container_name": "",
    "resource.labels.instance_id": "[snip]",
    "resource.labels.namespace_id": "ingress-nginx",
    "resource.labels.pod_id": "nginx-ingress-controller-[snip]",
    "resource.labels.project_id": "[snip]",
    "resource.labels.zone": "[snip]",
    "resource.type": "gke_container"
  },
  "timestamp": "2020-01-26T05:17:33Z",
  "value": "1"
}

Обратите внимание, что поле "resource.type" является "gke_container". Начиная со следующей версии Kubernetes это должно быть "k8s_container".

Я просмотрел конфигурацию Kubernetes NGINX, чтобы попытаться определить, когда (или если) было сделано обновление для поддержки нового StackDriver Ресурсная модель, но у меня пока не получилось. И я бы не стал «вслепую» обновлять NGINX, если смогу помочь (даже в UAT).

Это Docker изображений, которые я сейчас использую:

quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.2
gcr.io/google-containers/prometheus-to-sd:v0.9.0
gcr.io/google-containers/custom-metrics-stackdriver-adapter:v0.10.0

Может ли кто-нибудь помочь здесь?

Заранее спасибо, Бен

1 Ответ

1 голос
/ 27 января 2020

Хорошо, это не имеет ничего общего с NGINX и со всеми, что связано с Prometheus (и в частности с коляской Prometheus prometheus-to-sd).

Для будущих читателей, если ваш запуск Prometheus выглядит следующим образом:

        - name: prometheus-to-sd
          image: gcr.io/google-containers/prometheus-to-sd:v0.9.0
          ports:
            - name: profiler
              containerPort: 6060
          command:
            - /monitor
            - --stackdriver-prefix=custom.googleapis.com
            - --source=nginx-ingress-controller:http://localhost:10254/metrics
            - --pod-id=$(POD_NAME)
            - --namespace-id=$(POD_NAMESPACE)

Тогда это должно выглядеть следующим образом:

        - name: prometheus-to-sd
          image: gcr.io/google-containers/prometheus-to-sd:v0.9.0
          ports:
            - name: profiler
              containerPort: 6060
          command:
            - /monitor
            - --stackdriver-prefix=custom.googleapis.com
            - --source=nginx-ingress-controller:http://localhost:10254/metrics
            - --monitored-resource-type-prefix=k8s_
            - --pod-id=$(POD_NAME)
            - --namespace-id=$(POD_NAMESPACE)

То есть включить опцию --monitored-resource-type-prefix=k8s_.

...