Что такое поды в Kubernetes
Что проверяют
Понимаете ли вы, что деплоите. Go-разработчик почти всегда пишет сервис, который поедет в Kubernetes, и от устройства пода зависят вещи из кода: как сервис завершается, откуда читает конфигурацию, на сколько процессорного времени может рассчитывать.
Как отвечать
Под это минимальная единица планирования: один или несколько контейнеров, которые всегда запускаются на одном узле и делят сетевое пространство имён. Отсюда общий адрес, общий диапазон портов и обращение контейнеров друг к другу через localhost.
Что общее, а что нет: сеть общая, том общий, если явно смонтирован в оба контейнера, а корневая файловая система у каждого контейнера своя. Общее пространство процессов включается отдельной настройкой.
Жизненный цикл: под эфемерен и сам себя не лечит. Упавший контейнер перезапустит агент узла по политике перезапуска, а исчезнувший под пересоздаст контроллер (Deployment, StatefulSet, Job), причём с новым именем и новым адресом. Init-контейнеры отрабатывают по очереди до старта основных.
Для Go-сервиса отсюда следует практическое: ловить сигнал завершения и закрывать соединения в отведённое время, отдавать готовность и живость разными ручками, согласовывать число параллельных обработчиков с выделенным лимитом процессора.
Где спотыкаются
Кладут в один под приложение и базу данных. Под масштабируется целиком, поэтому каждая реплика приложения потянет за собой лишнюю копию базы. В поде уместны только сателлиты: сборщик логов, прокси, подгрузка конфигурации.
Считают, что контейнеры в поде видят общую файловую систему. Общим будет только явно смонтированный том; без него обмена файлами нет, и передача данных через каталог просто не заработает.
Путают ответственность и ждут, что под сам переедет на живой узел. Переносит его контроллер, а под, созданный вручную без контроллера, исчезнет вместе с узлом и не вернётся.