Эта управляющая диаграмма предназначена для развертывания функций, которые автоматически сохраняют дампы ядра от большинства поставщиков услуг Kubernetes общедоступного облака и частных экземпляров Kubernetes в службу хранения, совместимую с S3.
Пожалуйста, прочтите CONTRIBUTING.md, там есть несколько важных замечаний. Обратите особое внимание на рекомендации по стилю кодирования и сертификат происхождения разработчика.
Мы, как участники, участники и лидеры, обязуемся сделать участие в нашем сообществе свободным от притеснений для всех, независимо от возраста, размера тела, видимой или невидимой инвалидности, этнической принадлежности, половых признаков, гендерной идентичности и самовыражения, уровня опыта, образования. , социально-экономический статус, национальность, внешний вид, раса, религия или сексуальная идентичность и ориентация.
Мы обязуемся действовать и взаимодействовать таким образом, чтобы способствовать созданию открытого, гостеприимного, разнообразного, инклюзивного и здорового сообщества.
Полный кодекс поведения доступен здесь.
Подробную информацию можно найти в таблице README.md.
Это матрица подтвержденных тестовых целей. Пожалуйста, пиарьте среды, которые, как известно, также работают.
Поставщик | Продукт | Версия | Проверено? | Работающий? |
АВС | ЭКС | 1.21 | Да | Да |
АВС | РОЗА | 4,8 | Да | Да |
Пользовательская сборка | К8С | Н/Д | Да | Да |
Цифровой океан | К8С | 1.21.5-до.0 | Да | Да |
GKE-cos_containerd | 20.10.10-гке.1600 | Да | Да | |
GKE-Ubuntu | 20.10.10-гке.1600 | Да | Да | |
ИБМ | ИКС | 1.19-1.21 | Да | Да |
ИБМ | РОКС | 4,6-4,8 | Да | Да |
Майкрософт | АКС | 1.19 | Да | Да |
Майкрософт | АРО | 4,8 | Да | Да |
Красная шляпа | Локально | 4,8 | Да | Да |
Дампы ядра являются важной частью наблюдаемости.
Поскольку системы становятся все более распределенными, дампы ядра предлагают командам неинвазивный подход к пониманию того, почему программы работают со сбоями в любой среде, в которой они развернуты.
Дампы ядра полезны во многих сценариях, но они очень актуальны в следующих случаях:
Процесс завершается без полезной трассировки стека.
Процессу не хватает памяти
Приложение ведет себя не так, как ожидалось
Традиционными проблемами с дампами ядра являются:
Накладные расходы на управление свалками
Для анализа дампа требовался специальный инструментарий, которого не было на компьютере разработчика.
Управление доступом к дампам, поскольку они могут содержать конфиденциальную информацию.
Эта диаграмма направлена на решение проблем, связанных с дампами ядра, путем использования общих платформ (K8s, ROKS и Object Storage) в облачной среде для выполнения тяжелой работы.
Диаграмма разворачивает два процесса:
Агент управляет обновлением конфигурации /proc/sys/kernel/*
, развертывает службу композитора и загружает zip-файл дампов ядра, созданный композитором, в экземпляр объектного хранилища.
Композитор обрабатывает дамп ядра и создает документы среды выполнения, дампа контейнера и изображения JSON из CRICTL и вставляет их в один zip-файл. ZIP-файл хранится в локальной файловой системе узла, чтобы его мог загрузить агент.
При установке диаграммы Helm IBM Cloud Core Dump Handler в вашем кластере Kubernetes развертываются следующие ресурсы Kubernetes:
Пространство имен : для установки компонентов создается определенное пространство имен — по умолчанию — ibm-observe.
Набор демонов-обработчиков : набор демонов развертывает модуль на каждом рабочем узле вашего кластера. Набор демонов содержит конфигурацию, позволяющую процессу с повышенными правами определять шаблон ядра для размещения дампа ядра в объектном хранилище, а также собирать информацию о модулях, если таковая имеется.
Политика привилегий : набор демонов настраивает хост-узел таким образом, чтобы были необходимы привилегии.
Учетная запись службы : стандартная учетная запись службы для запуска набора демонов.
Volume Claims : для копирования композитора на хост и предоставления доступа к сгенерированным дампам ядра.
Роль кластера : создается с помощью ресурса событий и команды создания и связана с учетной записью службы.
Чтобы установить диаграмму Helm в своем кластере, вам необходима роль администратора платформы.
На этой диаграмме развертывается привилегированный набор демонов Kubernetes со следующими последствиями:
автоматическое создание привилегированного контейнера для каждого узла Kubernetes, способного читать основные файлы, запрашивающие у crictl информацию о модуле.
Набор демонов использует функцию пути к хосту, взаимодействующую с базовой ОС Linux.
Бинарный файл композитора развертывается и запускается на хост-сервере.
Дампы ядра могут содержать конфиденциальные данные времени выполнения, и доступ к сегменту хранилища должен управляться соответствующим образом.
Ключи хранилища объектов хранятся как секреты и используются как переменные среды в наборе демонов.
Для успешной работы обработчика дампов IBM Cloud Core на каждом рабочем узле требуются следующие ресурсы:
$ helm delete core-dump-handler --namespace observe
host-name
удален. $ kubectl get pvc -n observe
$ helm install core-dump-handler . --namespace observe
helm delete core-dump-handler -n observe
Создайте образ docker build -t YOUR_TAG_NAME .
Отправьте образ в реестр контейнеров.
Обновите контейнер в values.yaml
, чтобы использовать его.
image :
registry : YOUR_REGISTRY
repository : YOUR_REPOSITORY
tag : YOUR_TAG
или запустите команду установки Helm с настройками
--set image.registry=YOUR_REGISTRY
--set image.repository=YOUR_REPOSITORY
--set image.tag=YOUR_TAG
Сервисы написаны на Rust с использованием Rustup.
Локальные модульные тесты можно запустить с помощью cargo test
в базовой папке.
В настоящее время поддерживаются только IBM Cloud ROKS и IKS, но мы рады провести интеграционные тесты для других сервисов, но не можем запустить их до выпуска.
Чтобы запустить сборку интеграционных тестов, следуйте инструкциям для пользовательской сборки.
В корне папки проекта создайте файл .env
со следующей конфигурацией.
S3_ACCESS_KEY=XXXX
S3_SECRET=XXXX
S3_BUCKET_NAME=XXXX
S3_REGION=XXXX
Перейдите в папку интеграции и запустите тест.
cd integration
./run-ibm.sh
Релизы создаются на основе предварительной ветки, например, интеграционные тесты pre-8.5.0
выполняются вручную, а релиз генерируется при объединении с основным.
В настоящее время невозможно автоматизировать это, поскольку интеграция Kubernetes с действиями GitHub недостаточно надежна.
Если вы хотите протестировать предварительную версию с помощью собственного интеграционного тестирования, поднимите проблему, и мы сможем сотрудничать в вашем тестовом запуске.
Первое место для поиска проблем — консоль агента. Успешная установка должна выглядеть так
[2021-09-08T22:28:43Z INFO core_dump_agent] Setting host location to: /var/mnt/core-dump-handler
[2021-09-08T22:28:43Z INFO core_dump_agent] Current Directory for setup is /app
[2021-09-08T22:28:43Z INFO core_dump_agent] Copying the composer from ./vendor/default/cdc to /var/mnt/core-dump-handler/cdc
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pattern /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pattern.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for kernel.core_pipe_limit /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/core_pipe_limit.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Starting sysctl for fs.suid_dumpable /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created Backup of /var/mnt/core-dump-handler/suid_dumpable.bak
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pattern=|/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pattern = |/var/mnt/core-dump-handler/cdc -c=%c -e=%e -p=%p -s=%s -t=%t -d=/var/mnt/core-dump-handler/core -h=%h -E=%E
kernel.core_pipe_limit = 128
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of kernel.core_pipe_limit=128
fs.suid_dumpable = 2
[2021-09-08T22:28:43Z INFO core_dump_agent] Created sysctl of fs.suid_dumpable=2
[2021-09-08T22:28:43Z INFO core_dump_agent] Creating /var/mnt/core-dump-handler/.env file with LOG_LEVEL=info
[2021-09-08T22:28:43Z INFO core_dump_agent] Executing Agent with location : /var/mnt/core-dump-handler/core
[2021-09-08T22:28:43Z INFO core_dump_agent] Dir Content []
Если агент работает успешно, возможно, проблема связана с конфигурацией композитора. Чтобы проверить журналы композитора, откройте оболочку агента и просмотрите файл композитора.log, чтобы увидеть, есть ли какие-либо сообщения об ошибках.
cat /var/mnt/core-dump-handler/composer.log
Если ошибок нет, вам следует изменить журнал по умолчанию с error
на debug
в файлеvalues.yaml и повторно развернуть диаграмму. Снова создайте дамп ядра, и /var/mnt/core-dump-handler/composer.log
должен содержать конкретные сведения о каждой загрузке.