Подключение кластера Kubernetes (On-premise)⚓︎
Cloudmaster работает
с кластерами
Yandex Managed Service for Kubernetes .
Содержание
Предварительные требования⚓︎
-
Убедитесь, что вы используете одну из версий Kubernetes: 1.28 - 1.31.
-
Вам потребуются:
Основные шаги подключения⚓︎
-
В разделе Мои подключения нажмите на кнопку Новое подключение и затем ― на карточку Кластер Kubernetes.
-
В открывшейся форме введите параметры подключения.
Если в какой-то момент вам потребуется закрыть окно подключения, вы сможете вернуться к редактированию черновика.
-
Нажмите на кнопку Далее. Перейдите на шаг установки и настройки VictoriaMetrics.
-
Ознакомьтесь с инструкцией по настройке kube-state-metrics, node-exporter и VictoriaMetrics. Инструкция продублирована ниже в этой статье.
-
После ознакомления с инструкцией кликните на Скачать k8s-cloudmaster.conf, чтобы получить файл с параметрами кластера.
-
Внимание! Выполните шаги инструкции, представленные ниже в этой инструкции (не из интерфейса) и проверьте результат.
-
Кликните Создать. Кнопка станет активной только после скачивания файла k8s-cloudmaster.conf.
-
После завершения работы визарда подключение кластера появится на странице Мои подключения.
Начальный статус кластера Неактивно. Сбор начальных данных займет около 30 минут. Проверьте статус кластера в Мои подключения и данные по затратам в разделе Kubernetes. Рекомендации отобразятся после накопления данных за 7 дней.
Где хранятся данные кластера
Метрики кластера Kubernetes будут отправляться в локальную версию Prometheus на той же ВМ, где установлен продукт, по
протоколу
Remote-Write
Установка kube-state-metrics⚓︎
Сервис kube-state-metrics — сервис, который прослушивает API-сервер Kubernetes и генерирует метрики о состоянии различных объектов Kubernetes.
Если у вас уже установлен kube-state-metrics, проверьте активные коллекторы по списку ниже и перейдите к следующему шагу.
-
Добавьте репозиторий с Helm-чартами Prometheus и получите значения по умолчанию для kube-state-metrics с помощью команд:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm show values prometheus-community/kube-state-metrics > ksm-values.yamlВы получите файл ksm-values.yaml с параметрами kube-state-metrics по умолчанию.
-
В полученном файле ksm-values.yaml отредактируйте блок collectors, закомментируйте все коллекторы, кроме списка ниже.
Блок должен выглядеть так:
-
Установите сервис kube-state-metrics в
кластерс помощью команды: -
Приступите к следующему шагу.
Уcтановка node-exporter⚓︎
Сервис node-exporter — это инструмент (или "экспортер" метрик), который собирает системные метрики с серверов (узлов) и предоставляет их в формате, понятном для Prometheus или Victoria Metrics. В Kubernetes node-exporter разворачивается как DaemonSet. Это гарантирует, что на каждом узле кластера будет работать по одному экземпляру node-exporter.
-
Создайте файл node-exporter-daemonset.yaml со следующим содержанием.
apiVersion: apps/v1 kind: DaemonSet metadata: name: node-exporter namespace: cloudmaster-vm labels: app: node-exporter spec: selector: matchLabels: app: node-exporter template: metadata: labels: app: node-exporter spec: hostNetwork: true hostPID: true containers: - name: node-exporter image: quay.io/prometheus/node-exporter:v1.6.1 ports: - containerPort: 9100 hostPort: 9100 protocol: TCP volumeMounts: - name: proc mountPath: /host/proc readOnly: true - name: sys mountPath: /host/sys readOnly: true args: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' volumes: - name: proc hostPath: path: /proc - name: sys hostPath: path: /sys -
Установите node-exporter с помощью команды:
Установка ВМ-агента VictoriaMetrics⚓︎
Агент VictoriaMetrics будет временно хранить и отправлять данные по метрикам в кластере.
Инструкция по установке ВМ-агента VictoriaMetrics⚓︎
-
Настройте helm на подключение к
кластеруKubernetes. -
Добавьте helm-репозиторий с помощью команд:
helm repo add victoria-metrics https://victoriametrics.github.io/helm-charts/ helm repo update helm show values victoria-metrics/victoria-metrics-agent > vma-values.yamlВы получите файл vma-values.yaml с параметрами по умолчанию.
-
Откройте файл k8s-cloudmaster.conf и скопируйте значения.
Далее мы будем редактировать файл vma-values.yaml . Важно! Удалять из файла ничего не нужно, только добавлять и менять.
-
В файле vma-values.yaml
-
Адрес стенда Cloudmaster,
-
ID
кластера, -
список метрик.
Фрагмент файла для редактирования:
remoteWrite: - url: "https://[ДОМЕН ИЛИ IP-АДРЕС МАШИНЫ]/prometheus/api/v1/write" forcePromProto: true tlsInsecureSkipVerify: true urlRelabelConfig: - action: replace replacement: 'ID_КЛАСТЕРА' target_label: cluster - action: keep source_labels: ['__name__'] regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes|kube_pod_container_resource_requests|container_fs_limit_bytes|kube_persistentvolume_capacity_bytes' -
-
В блоке env файла vma-values.yaml добавляем данные Prometheus: логин и пароль.
-
В блоке config файла vma-values.yaml только ДОБАВЛЯЕМ И ИЗМЕНЯЕМ (значения по умолчанию сохраняем, ничего удалять не нужно).
Измените scrape_interval на 60, добавьте в scrape_configs джобы: kube-state-metrics и node-exporter:
config: global: scrape_interval: 60s scrape_configs: - job_name: kube-state-metrics kubernetes_sd_configs: - role: pod - role: node relabel_configs: - source_labels: [__meta_kubernetes_pod_container_name] regex: kube-state-metrics action: keep - source_labels: [__meta_kubernetes_pod_container_port_number] regex: "8080" action: keep - job_name: node-exporter kubernetes_sd_configs: - role: node relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:9100' target_label: __address__ -
Запустите установку ВМ-агента.
По завершению установки ВМ-агента перейдите к проверке успешности подключения кластера к Cloudmaster.
Проверка успешности подключения кластера⚓︎
-
В логах пода ВМ-агента проверьте, что агент обнаружил targets и в логах нет ошибок отправки данных.
Значение некоторых ошибок: 401 Unauthorized (значит, IP не в списке разрешенных и пароль не передан или неверен), 403 Forbidden - проблема с конфигом Nginx. -
В интерфейсе ВМ-агента VictoriaMetrics проверьте наличие targets:
Ниже приведена команда для пробрасывания порта пода. Предварительно нужно получить ID пода.
Список и активность по targets будет доступна по адресу http://localhost:8429/targets. Среди targets должны быть:kubectl get pods -n cloudmaster-vm -l app.kubernetes.io/name=victoria-metrics-agent kubectl port-forward pod/vmagent-victoria-metrics-agent-XXXXXXXXX 8429:8429 -n cloudmaster-vmkube-state-metrics,node-exporter,kubernetes-apiservers,kubernetes-nodes,kubernetes-nodes-cadvisor,kubernetes-service-endpoints. -
Проверьте метрики в интерфейсе Prometheus.
Адрес Prometheus: https://[ДОМЕН ИЛИ IP-АДРЕС МАШИНЫ]/prometheus
Интерфейс доступен с IP адреса, который добавлен в белый список IP адресов NGINX, или через логин и пароль (те же, что для VictoriaMetrics). Логин и пароль можно получить у администратора ВМ, на которой работает Cloudmaster.
В следующие запросы подставьте ID кластера. При вводе каждого из запросов в ответе должны быть метрики (ответ не должен быть пустым):
-
Проверьте подгрузку данных о
кластерев разделах Cloudmaster:-
информации о
подключениив подразделе Мои подключения , -
затраты по
кластерув разделе Kubernetes
-
Ошибка сбора метрик⚓︎
Если после выполнения всех действий по настройке сбора метрик в кластере подключение находится в состоянии Ошибка сбора метрик:
- Наведите курсор на карточку подключения и кликните на ,
- Кликните на Узнать об ошибке.
Появится модальное окно со статусом сбора метрик. Вам будет необходимо проверить наличие необходимых сервисов в кластере и корректность примененных yaml-файлов.