В этом документе приведены инструкции по установке компонентов мониторинга и логирования в кластере Kubernetes.
Добавление сервера под мониторинг и логирование в кластер Kubernetes
Для установки компонентов мониторинга и логирования в кластере Kubernetes необходимо использовать отдельный хост Виртуальная машина 3 (ВМ3), оснащенный локальным диском для хранения данных мониторинга и логирования.
Мониторинг и логирование состоят из следующих ключевых компонентов:
-
Grafana
-
InfluxDB
-
Prometheus
-
Loki
-
Fluent Bit
Для добавления сервера мониторинга на кластер Kubernetes, подготовьте хост и установите Ubuntu Server 22.04 LTS.
Подготовка хоста
Подготовьте хост ВМ3 со следующими характеристиками:
-
Процессор - 8 ядер
-
ОЗУ - 32 ГБ
-
Диск1: 100ГБ (sda), системный диск
-
Диск2: 500ГБ (sdb), для хранения данных мониторинга и логирования
-
1 vNIC, IP-адрес
-
ОС: Ubuntu Server 22.04 LTS.
-
Образец названия хоста
k8s-monitoring-xx (xx: 01, 02 ...)
Настройка Ubuntu Server 22.04 LTS
Для настройки Ubuntu Server 22.04 LTS выполните следующие шаги:
-
Установите последнюю версию Ubuntu Server 22.04 LTS:
sudo apt update && sudo apt upgrade -y
-
Разрешите администратору доступ по SSH, скопировав SSH-ключи в
~/.ssh/authorized_keys. -
Разрешите администратору беспарольный доступ
sudo.
sudo bash -c "cat << EOF >> /etc/sudoers
$USER ALL=(ALL) NOPASSWD:ALL
EOF"
-
Перезагрузите сервер:
sudo reboot
Добавление хоста в кластер Kubernetes
Все действия выполняются на ВМ1, если не указано иное.
-
На ВМ3 клонируйте репозиторий:
Замените {TAG_NAME} любым доступным тегом (для получения полного списка тегов используйте git tag):
git clone https://github.com/aipix-dev/aipix-deploy.git
cd ./aipix-deploy
git checkout {TAG_NAME}
cd kubernetes/k8s-onprem/
-
Установите базовые компоненты Kubernetes:
./install_kube_base.sh
-
На ВМ1 получите регистрационный токен или URL:
kubeadm token create --print-join-command
###Пример токена:
kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
-
Скопируйте токен и примените на ВМ3 через
sudo:
###Example:
sudo kubeadm join 192.168.205.164:6443 --token 3yeqrm.abnp3yof8vivcbge --discovery-token-ca-cert-hash sha256:b58cfd679a3bb49f444dfe4869fad5e19f4fba87f1d6ae5f20da06c60f51684e
-
Проверьте на ВМ1, что сервер добавлен и находится в статусе
Ready:
kubectl get nodes
###Пример ответа:
NAME STATUS ROLES AGE VERSION
k8s-monitoring-01 Ready <none> 3m28s v1.28.2
-
Добавьте
labelиtaintна данный сервер, чтобы он использовался только для мониторинга. Выполните следующие команды, заменивk8s-monitoring-01на имя вашего сервера:
##Пример:
kubectl taint nodes k8s-monitoring-01 monitoring:NoSchedule
kubectl label nodes k8s-monitoring-01 monitoring=true
-
На ВМ3 подготовьте локальное хранилище, выполнив следующие команды:
cd ~/aipix-deploy/kubernetes/k8s-onprem
./prepare_local_storage.sh 1 7 sdb make_fs
Установка компонентов мониторинга и логирования
Все действия выполняются на ВМ1, если не указано иное.
Для установки компонентов мониторинга и логирования выполните шаги:
-
На ВМ1 перейдите в рабочую директорию:
cd ~/aipix-deploy/kubernetes
-
Скопируйте
sources.sh.sampleвsources.sh, если не было сделано ранее, и проверьте конфигурации секции мониторинга.
Для корректной работы мониторинга компонента Analytics требуется, чтобы переменнаяMONITORINGбыла установлена в значениеyesво время установки Analytics. При необходимости обновите установку Analytics.
vim ./sources.sh
#Параметры Monitoring
export MONITORING=no #развернуть Monitoring (yes или no)
export NS_MONITORING=monitoring #k8s пространство имён для мониторинга
export INFLUX_USR=admin #укажите influxdb администратора
export INFLUX_PSW=0hmSYYaRci6yJblARc6aHbHZ4YelTXTo #укажите пароль для администратора influxdb (использовать только буквы и цифры)
export INFLUX_TOKEN=2pORp9tDo40Lm32oGUKFLL8r1UuNbgUT #укажите токен для influxdb API (использовать только буквы и цифры)
export TELEGRAM_BOT_TOKEN=temporary-token # укажите токен Telegram‑бота для уведомлений
export TELEGRAM_CHAT_ID=temporary-chat-id #укажите chat ID Telegram для уведомлений
-
Подготовьте конфигурационные файлы для мониторинга:
./configure-monitoring.sh
-
Проверьте конфигурационные файлы в папке
../monitoring/и внесите изменения при необходимости. Для мониторинга S3 MinIO вам нужно настроитьbearer_tokenв директивахjob_name: minio-jobиjob_name: minio-job-bucketв файлеprometheus-config-map.yaml. Чтобы получить токены, выполните следующие команды (в этом примере,localэто название хранилища MinIO S3):
mc admin prometheus generate local (local, minio-1 or minio-2)
mc admin prometheus generate local bucket
Отредактируйте bearer_token или весь блок конфигурации MinIO в файле prometheus-config-map.yaml через vim ../monitoring/prometheus-config-map.yaml или vim ../monitoring/prometheus-values.yaml):
- job_name: minio-job-cluster
bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibmF2ZWtzb2Z0IiwiZXhwIjo0ODUwMzk2OTA3fQ.WWCLGWb-usnTqR5aWGDwRpSlgl0VfDvthSSWYxhf3X1UNXCRWoGIZz386Q3KIShzAHipamIoFyf5oR9YCebobg
metrics_path: /minio/v2/metrics/cluster
scheme: http
static_configs:
- targets: [minio.minio-single.svc:9000]
- job_name: minio-job-bucket
bearer_token: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJwcm9tZXRoZXVzIiwic3ViIjoibmF2ZWtzb2Z0IiwiZXhwIjo0ODUwNTIwMjkyfQ.acVDRmB-kLSFCkzIIZAinzTRguHYYKZeM0ebwHHKfSDhjq3xYb4YaNwfHrJKoI4E3z5fTGD7sal4QwF5nxdn-w
metrics_path: /minio/v2/metrics/bucket
scheme: http
static_configs:
- targets: [minio.minio-single.svc:9000]
-
Установите мониторинг и логирование, выполнив следующую команду:
./deploy-monitoring.sh
По завершению установки, вы сможете подключиться к Grafana и импортировать дашборды из коллекции дашбордов, расположенной в папке ~/aipix-deploy/monitoring/grafana-dashboards/ текущего репозитория при условии, что автоматическое предоставление дашбордов не настроено. В конце скрипта вы получите URL-адреса для разных компонентов.