За последний год работы с kubernetes, наконец то появилось некоторое понимание как это должно работать 🙂 В связи с этим соберу в одну кучу свои заметки по созданию небольшого кластера для devops и развертывания нескольких приложений.
К сожалению к большим кластерам у меня нет доступа. Традиционная проблема «яйца и курицы»: что бы получить доступ к большому кластеру, требуют опыт работы с ним. Что бы получить опыт работы, нужен доступ к большому кластеру.
Ниже представлен план, что будет. Еще не решил, сделать в виде только текста или текст + видео.
Небольшой kubernetes cluster step by step
Попытаюсь описать пошаговую процедуру создания кластера kubernetes.
Будет настроен кластер и некоторое количество системных приложений.
Для лучшего понимания внутренностей системы, по возможности все приложения будут конфигурироваться вручную, без применения helm.
Шаг 0. Определение PriorityClasses.
Шаг 1. Различные утилиты и первоначальные действия.
- Определение namespaces, необходимых для дальнейшей работы приложений кластера.
- Reloader — утилита для перезагрузки сервиса после изменения configMap.
- MetricsServer — отображение метрик при использовании kubectl top.
- cert-manager — утилита для управления сертификатами.
Шаг 2. Persistent Volumes.
Автоматизируем создание PersistentVolumes на базе nfs.
Шаг 3. Ingress Controllers.
Создаем системный ingress-controller, для доступа к системным приложениям.
Шаг 4. Мониторинг.
- Разное.
- netdata — интересная замена node-exporter.
- Victoriametrics — длительное хранение метрик.
- Prometeheus — сбор метрик приложений системы.
- Варианты конфигурации для различных подсистем.
- node-exporter.
- kube-state-metrics.
- Grafana — графики, алёрты.
Шаг 5. Сбор логов.
Сбор логов системных приложений. Для приложений пользователей логи будут собираться отдельно.
- Роутер логов на основе fluentd.
- Пересылка логов системных приложений в файловую систему.
- Сбор системных логов, при помощи fluentbit.