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

Подключение кластера Kubernetes⚓︎

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

Содержание

Подготовка к подключению⚓︎

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

  2. Авторизуйтесь в Cloudmaster (см. статью Авторизация в платформе Cloudmaster) и перейдите в подраздел Мои подключения боковой панели.

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

  4. В открывшейся форме создания подключения нажмите на кнопку Подключить.

  5. В открывшемся чате с менеджером Cloudmaster предоставьте данные кластера и цены на его ресурсы.

Запрашиваемые данные
  • Параметры кластера:

  • провайдер, у которого вы развернули кластер,

  • версия Kubernetes,

    Cloudmaster работает с версиями Managed Service for Kubernetes, которые поддерживает Yandex Cloud: 1.28 - 1.31.

  • установлен ли Prometheus.

  • Актуальная цена* на ресурсы нод кластера в рублях:

    • цена за 1 CPU в час,

    • цена за 1 ГБ RAM в час,

    • цена за 1 ГБ хранилища в час.

    * Цена хранится в биллинг-файле или счете провайдера.

Поддержка настраивает права доступа ВМ-агента⚓︎

Безопасность в работе Cloudmaster с данными кластера

Cloudmaster собирает данные о затратах в кластерах Kubernetes с помощью сервиса Yandex Managed Service for Prometheus по протоколу Remote-Write

  1. Дождитесь настройки прав доступа к сервису Yandex Managed Service for Prometheus для ВМ-агента.

    По окончанию настройки прав поддержка Cloudmaster отправит вам конфигурационный файл Generated_values.yaml с предустановленными параметрами.

  2. Скачайте полученный файл.

  3. Приступите к следующему шагу.

Установка 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 kms-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

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

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

Основные отслеживаемые ресурсы
  • CPU:

    • container_cpu_usage_seconds_total — usage

    • kube_pod_container_resource_requests, где {resource="cpu"}

  • RAM:

    • container_memory_usage_bytes — usage, но учитывает кешированную память

    • container_memory_working_set_bytes — usage, только фактическое потребление, рекомендуется использовать

    • kube_pod_container_resource_requests, где {resource="memory"}

  • диск:

    • kube_pod_spec_volumes_persistentvolumeclaims_info — нужен для определения, какие pvc примонтированы к поду

    • kubelet_volume_stats_capacity_bytes — размер pv

  • метрики о состоянии инфраструктуры:

    • cadvisor_version_info

    • kubernetes_build_info

    • prometheus_build_info

    • kube_pod_container_info

    • container_scrape_error

    • kubelet_running_pods

    • kube_node_status_condition

    • kube_pod_status_phase

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

  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. Откройте файл Generated_values.yaml с предустановленными под ваш кластер параметрами, которым поделилась поддержка Cloudmaster, и скопируйте значения.

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

  4. В файле vma-values.yaml измените следующие значения:

    • API-ключ,

    • ID кластера,

    • список метрик.

    Фрагмент файла для редактирования:

    remoteWrite:
     - url: "https://metrics.cloudmaster.ru/metrics/write"
       forcePromProto: true
       headers:
        "Authorization: Api-Key ЗНАЧЕНИЕ_API_КЛЮЧА"
       urlRelabelConfig:
         - action: replace
           replacement: 'ID_КЛАСТЕРА'
           target_label: cluster
         - action: keep
           source_labels: ['__name__']
           regex: 'kube_persistentvolumeclaim_resource_requests_storage_bytes|kube_pod_owner|kube_replicaset_owner|container_fs_limit_bytes|kube_persistentvolume_capacity_bytes|node_filesystem_size_bytes|kube_pod_container_resource_requests|kube_pod_status_phase|kube_node_status_condition|||container_cpu_usage_seconds_total|container_memory_usage_bytes|container_memory_working_set_bytes|kube_pod_container_info|kube_pod_spec_volumes_persistentvolumeclaims_info|kubelet_volume_stats_capacity_bytes|container_scrape_error|kubelet_running_pods|cadvisor_version_info|kubernetes_build_info|prometheus_build_info'
    
  5. В блоке 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__
    
  6. Запустите установку ВМ-агента.

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

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

Cloudmaster хранит данные пользователей в Yandex Managed Service for Prometheus в зашифрованном виде.

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

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

    kubectl logs -f -l app.kubernetes.io/name=victoria-metrics-agent -n cloudmaster-vm --all-containers=true
    
  2. В интерфейсе ВМ-агента VictoriaMetrics проверьте наличие targets:

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

    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. Проверьте подгрузку данных о кластере в разделах Cloudmaster:

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

Отчёты Kubernetes

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