Перейти к содержанию

Подключение кластера Kubernetes (On-premise)⚓︎

Cloudmaster работает с кластерами Yandex Managed Service for Kubernetes .

Содержание

Предварительные требования⚓︎

  1. Убедитесь, что вы используете одну из версий Kubernetes: 1.28 - 1.31.

  2. Вам потребуются:

    • модуль K8s (подробнее),

    • IP-адрес или FQDN ВМ, которые заданы для Cloudmaster (подробнее),

    • логин и пароль для Prometheus (подробнее),

    • данные о ценах на CPU, RAM и диск для вашего кластера,

    • права на установку kube-state-metrics, node-exporter и агента VictoriaMetrics в ваш кластер.

Основные шаги подключения⚓︎

  1. В разделе Мои подключения нажмите на кнопку Новое подключение и затем ― на карточку Кластер Kubernetes.

  2. В открывшейся форме введите параметры подключения.

    Если в какой-то момент вам потребуется закрыть окно подключения, вы сможете вернуться к редактированию черновика.

  3. Нажмите на кнопку Далее. Перейдите на шаг установки и настройки VictoriaMetrics.

  4. Ознакомьтесь с инструкцией по настройке kube-state-metrics, node-exporter и VictoriaMetrics. Инструкция продублирована ниже в этой статье.

  5. После ознакомления с инструкцией кликните на Скачать k8s-cloudmaster.conf, чтобы получить файл с параметрами кластера.

  6. Внимание! Выполните шаги инструкции, представленные ниже в этой инструкции (не из интерфейса) и проверьте результат.

  7. Кликните Создать. Кнопка станет активной только после скачивания файла k8s-cloudmaster.conf.

  8. После завершения работы визарда подключение кластера появится на странице Мои подключения.

Начальный статус кластера Неактивно. Сбор начальных данных займет около 30 минут. Проверьте статус кластера в Мои подключения и данные по затратам в разделе Kubernetes. Рекомендации отобразятся после накопления данных за 7 дней.

Где хранятся данные кластера

Метрики кластера Kubernetes будут отправляться в локальную версию Prometheus на той же ВМ, где установлен продукт, по протоколу Remote-Write

Установка kube-state-metrics⚓︎

Сервис kube-state-metrics — сервис, который прослушивает API-сервер Kubernetes и генерирует метрики о состоянии различных объектов Kubernetes.

Если у вас уже установлен kube-state-metrics, проверьте активные коллекторы по списку ниже и перейдите к следующему шагу.

  1. Добавьте репозиторий с 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 по умолчанию.

  2. В полученном файле ksm-values.yaml отредактируйте блок collectors, закомментируйте все коллекторы, кроме списка ниже.

    Блок должен выглядеть так:

    collectors:
      - deployments
      - nodes
      - pods
      - persistentvolumes
      - replicasets
      - persistentvolumeclaims
    
  3. Установите сервис kube-state-metrics в кластер с помощью команды:

    helm install cloudmaster-ksm prometheus-community/kube-state-metrics -n cloudmaster-vm --create-namespace -f ksm-values.yaml
    
  4. Приступите к следующему шагу.

Уcтановка node-exporter⚓︎

Сервис node-exporter — это инструмент (или "экспортер" метрик), который собирает системные метрики с серверов (узлов) и предоставляет их в формате, понятном для Prometheus или Victoria Metrics. В Kubernetes node-exporter разворачивается как DaemonSet. Это гарантирует, что на каждом узле кластера будет работать по одному экземпляру node-exporter.

  1. Создайте файл 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
    
  2. Установите node-exporter с помощью команды:

kubectl apply -f node-exporter-daemonset.yaml

Установка ВМ-агента VictoriaMetrics⚓︎

Агент VictoriaMetrics будет временно хранить и отправлять данные по метрикам в кластере.

Инструкция по установке ВМ-агента VictoriaMetrics⚓︎

  1. Настройте helm на подключение к кластеру Kubernetes.

  2. Добавьте 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 с параметрами по умолчанию.

  3. Откройте файл k8s-cloudmaster.conf и скопируйте значения.

    Далее мы будем редактировать файл vma-values.yaml . Важно! Удалять из файла ничего не нужно, только добавлять и менять.

  4. В файле 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'
    
  5. В блоке env файла vma-values.yaml добавляем данные Prometheus: логин и пароль.

    env:
    - name: VM_remoteWrite_basicAuth_username
      value: ЛОГИН
    - name: VM_remoteWrite_basicAuth_password
      value: ПАРОЛЬ
    
  6. В блоке 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__
    
  7. Запустите установку ВМ-агента.

    helm install vmagent victoria-metrics/victoria-metrics-agent -n cloudmaster-vm --create-namespace -f vma-values.yaml
    

По завершению установки ВМ-агента перейдите к проверке успешности подключения кластера к Cloudmaster.

Проверка успешности подключения кластера⚓︎

  1. В логах пода ВМ-агента проверьте, что агент обнаружил targets и в логах нет ошибок отправки данных.

    kubectl logs -f -l app.kubernetes.io/name=victoria-metrics-agent -n cloudmaster-vm --all-containers=true
    
    Значение некоторых ошибок: 401 Unauthorized (значит, IP не в списке разрешенных и пароль не передан или неверен), 403 Forbidden - проблема с конфигом Nginx.

  2. В интерфейсе ВМ-агента VictoriaMetrics проверьте наличие targets:

    Ниже приведена команда для пробрасывания порта пода. Предварительно нужно получить ID пода.

    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-vm
    
    Список и активность по targets будет доступна по адресу http://localhost:8429/targets. Среди targets должны быть: kube-state-metrics, node-exporter, kubernetes-apiservers,kubernetes-nodes, kubernetes-nodes-cadvisor, kubernetes-service-endpoints.

  3. Проверьте метрики в интерфейсе Prometheus.

    Адрес Prometheus: https://[ДОМЕН ИЛИ IP-АДРЕС МАШИНЫ]/prometheus

    Интерфейс доступен с IP адреса, который добавлен в белый список IP адресов NGINX, или через логин и пароль (те же, что для VictoriaMetrics). Логин и пароль можно получить у администратора ВМ, на которой работает Cloudmaster.

    В следующие запросы подставьте ID кластера. При вводе каждого из запросов в ответе должны быть метрики (ответ не должен быть пустым):

    container_cpu_usage_seconds_total{cluster="ID_КЛАСТЕРА"}
    container_memory_working_set_bytes{cluster="ID_КЛАСТЕРА"}
    kube_pod_container_resource_requests{cluster="ID_КЛАСТЕРА"}
    container_fs_limit_bytes{cluster="ID_КЛАСТЕРА"}
    kube_persistentvolume_capacity_bytes{cluster="ID_КЛАСТЕРА"}
    
  4. Проверьте подгрузку данных о кластере в разделах Cloudmaster:

Ошибка сбора метрик⚓︎

Если после выполнения всех действий по настройке сбора метрик в кластере подключение находится в состоянии Ошибка сбора метрик:

  1. Наведите курсор на карточку подключения и кликните на ,
  2. Кликните на Узнать об ошибке.

Появится модальное окно со статусом сбора метрик. Вам будет необходимо проверить наличие необходимых сервисов в кластере и корректность примененных yaml-файлов.

Читайте также⚓︎

Отчёты Kubernetes

Методика расчёта данных по Kubernetes