Linux и хосты
Слой под кластером: ядра и патчи, нехватка памяти и OOM, виртуализация и обслуживание нод.
7 статей
- multipathd захватил том Longhorn: «mount point busy», хотя ничего не смонтированоПод пять дней висел в Init, 2413 попыток монтирования, полный ребут не помог. multipathd построил карту поверх iSCSI-устройства Longhorn и держал его открытым.
- Экран загрузки был retry-циклом, а не зависанием — и ребут был не нуженИгра на моей Linux-машине зависала на экране загрузки, и известным лекарством был полный ребут. Пять секунд счётчиков из /proc показали горячий retry-цикл, который заканчивается одним SIGTERM.
- NotReady шесть часов, а нода всё это время была живаВсе сигналы говорили, что нода мертва. На деле она задыхалась от нехватки памяти, а очевидный фикс — удалить ноду и принудительно отцепить том — был в одной команде от порчи базы.
- «Дрейф ядер» оказался дрейфом аптайма: патчи ставились, ребутов не былоТри разных ядра на семи нодах выглядели как незавершённые волны патчей и увели расследование по ложному следу. Патчи на всех нодах были одинаковые, различался только аптайм.
- Vault запечатывался сам. Причиной была 15-минутная заморозка VM ниже кластераЧетыре seal'а Vault за три недели, каждый разбирали как отдельный инцидент. Анализ пауз в journald показал, что гипервизор замораживает VM во время бэкапа, а Longhorn превращает это в каскад.
- Как обновить ОС на семи нодах Kubernetes так, чтобы никто не заметилПоочерёдное обновление Ubuntu в кластере, который хранит всё своё состояние сам. Предварительные проверки превратили страшную работу в скучную, а темп задавал Longhorn.
- «Ошибки диска» оказались OOM: как тома Longhorn потеряли бэкендEIO, ext4 в read-only, повреждённый datadir MySQL и запечатанный Vault выглядели как умирающий диск. dmesg хоста показал OOM на всю ноду, который первым убил instance-manager Longhorn.