Что такое Kubernetes
Что проверяют
Понимаете ли вы среду, в которой будет жить ваш сервис: что Kubernetes делает сам, а что обязано уметь приложение. От Go-разработчика не ждут знаний администратора кластера, но ждут, что сервис корректно стартует, отвечает на пробы и умирает по сигналу. Следом спрашивают про пробы, лимиты и деплой.
Как отвечать
Kubernetes это оркестратор контейнеров с декларативной моделью: вы описываете желаемое состояние в манифестах, а контроллеры в цикле сверяют его с фактическим и устраняют расхождение (reconciliation loop).
Архитектура в двух словах:
- control plane:
kube-apiserverкак единая точка входа,etcdкак хранилище состояния,kube-schedulerвыбирает узел для пода,kube-controller-managerкрутит контроллеры; - узлы:
kubeletзапускает поды через CRI-рантайм, обычно containerd, сеть сервисов даютkube-proxyили CNI вроде Cilium; - объекты:
Pod,DeploymentповерхReplicaSet,Service,ConfigMap,Secret,Ingressили Gateway API,HorizontalPodAutoscaler.
Дальше о том, что важно именно Go-сервису:
- пробы:
readinessProbeрешает, идёт ли на под трафик,livenessProbeперезапускает зависший контейнер. Liveness не должна проверять базу, иначе сбой базы перезапустит все поды; - остановка: при удалении пода приходит
SIGTERM, черезterminationGracePeriodSeconds(по умолчанию 30 секунд)SIGKILL; - лимиты: с Go 1.25 рантайм учитывает CPU-лимит cgroup при выборе
GOMAXPROCS, на старых версиях ставятautomaxprocs.GOMEMLIMITзадают чуть ниже лимита памяти, чтобы GC срабатывал раньше OOM-killer; - client-go и controller-runtime: если придётся писать оператор или ходить в API кластера из кода.
Где спотыкаются
Отвечают «это как Docker, только для многих серверов». Docker собирает и запускает контейнер, Kubernetes управляет жизненным циклом контейнеров на кластере, а dockershim из него убран ещё в версии 1.24.
Считают Secret зашифрованным. По умолчанию это base64 в etcd, шифрование нужно включать отдельно.
Говорят, что автомасштабирование работает само. HPA нужны metrics-server и заданные requests, без них процент загрузки CPU не посчитать.