Мониторинг Kubernetes: альтернативы Heapster для использования ресурсов

Heapster — это инструмент мониторинга и управления производительностью с открытым исходным кодом для контейнерных сред, специально разработанный для Kubernetes. Однако, начиная с версии Kubernetes 1.11, Heapster устарел, а его функциональность была заменена сервером метрик. Сервер метрик теперь является рекомендуемым вариантом для сбора данных об использовании ресурсов в кластерах Kubernetes.

Поскольку Heapster больше не поддерживается и не рекомендуется, не рекомендуется использовать его в новых развертываниях. Вместо этого лучше перейти на сервер метрик или рассмотреть другие решения для мониторинга, совместимые с Kubernetes.

Поскольку Heapster устарел, использовать его больше не рекомендуется. Однако я могу предоставить вам альтернативные методы сбора данных мониторинга в Kubernetes с помощью сервера метрик или других популярных инструментов мониторинга.

  1. Использование сервера метрик.
    Сервер метрик является преемником Heapster в Kubernetes и предоставляет важные данные об использовании ресурсов. Чтобы использовать Сервер метрик, вам необходимо проверить, установлен ли он уже в вашем кластере, выполнив следующую команду:
kubectl top node

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

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

После установки сервера метрик вы можете получать данные об использовании ресурсов для узлов и модулей с помощью команды kubectl top:

kubectl top node
kubectl top pod
  1. Использование Prometheus.
    Prometheus — это широко используемый набор инструментов для мониторинга и оповещения, который отлично интегрируется с Kubernetes. Чтобы использовать Prometheus для мониторинга Kubernetes, вам необходимо настроить сервер Prometheus и настроить его для сбора метрик из целевых объектов Kubernetes.

Во-первых, вам нужно будет развернуть Prometheus, используя файл манифеста YAML. Вот пример:

apiVersion: v1
kind: Service
metadata:
  name: prometheus
spec:
  selector:
    app: prometheus
  ports:
    - protocol: TCP
      port: 9090
      targetPort: 9090
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
spec:
  selector:
    matchLabels:
      app: prometheus
  replicas: 1
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
        - name: prometheus
          image: prom/prometheus
          args:
            - --config.file=/etc/prometheus/prometheus.yml
          ports:
            - containerPort: 9090
              protocol: TCP
          volumeMounts:
            - name: config-volume
              mountPath: /etc/prometheus
      volumes:
        - name: config-volume
          configMap:
            name: prometheus-config
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-config
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
    scrape_configs:
      - job_name: 'kubernetes-apiservers'
        kubernetes_sd_configs:
        - role: endpoints
        scheme: https
        tls_config:
          ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
        relabel_configs:
        - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
          action: keep
          regex: default;kubernetes;https
      - job_name: 'kubernetes-nodes'
        kubernetes_sd_configs:
        - role: node
        relabel_configs:
        - action: labelmap
          regex: __meta_kubernetes_node_label_(.+)
        - target_label: __address__
          replacement: kubernetes.default.svc:443
        - source_labels: [__meta_kubernetes_node_name]
          regex: (.+)
          target_label: __metrics_path__
          replacement: /api/v1/nodes/${1}/proxy/metrics

Сохраните приведенный выше манифест YAML в файл, например prometheus.yaml, и разверните его с помощью следующей команды:

kubectl apply -f prometheus.yaml

Это создаст сервер Prometheus, который будет собирать метрики с серверов и узлов Kubernetes API.

  1. Использование Grafana.
    Grafana — популярный инструмент визуализации с открытым исходным кодом, который хорошо интегрируется с Prometheus. Вы можете использовать Grafana для создания информационных панелей и визуализации показателей, собранных Prometheus.

Чтобы использовать Grafana с Kubernetes и Prometheus, сначала необходимо развернуть Grafana в своем кластере. Вот пример YAML-манифеста:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  replicas: 1
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
        -name: grafana
          image: grafana/grafana
          ports:
            - containerPort: 3000
              protocol: TCP

Сохраните приведенный выше манифест YAML в файл, например grafana.yaml, и разверните его с помощью следующей команды:

kubectl apply -f grafana.yaml

После развертывания Grafana вы сможете получить к нему доступ через службу или переадресацию портов. Чтобы получить к нему доступ через переадресацию портов, выполните следующую команду:

kubectl port-forward service/grafana 3000:3000

Теперь вы можете открыть браузер и получить доступ к Grafana по адресу http://localhost:3000. Вам нужно будет войти в систему с учетными данными по умолчанию (admin/admin) и немедленно изменить их.

После входа в систему вы можете настроить Prometheus в качестве источника данных в Grafana и создать информационные панели для визуализации показателей, собранных из Kubernetes.

В заключение отметим, что Heapster — устаревший инструмент мониторинга для Kubernetes, поэтому для сбора и визуализации данных мониторинга в Kubernetes рекомендуется использовать альтернативы, такие как Metrics Server, Prometheus и Grafana. Сервер метрик является вариантом по умолчанию для данных об использовании ресурсов, а Prometheus и Grafana предоставляют более расширенные возможности мониторинга и визуализации.