Встречается на 33% собеседований по DevOps
Что такое kubernetes
Kubernetes (часто сокращенно K8s) — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Она была разработана в Google на основе опыта работы с контейнерами в продакшене и стала стандартом для оркестрации контейнеров в индустрии.
Основные концепции
Kubernetes оперирует несколькими ключевыми абстракциями, которые позволяют описывать желаемое состояние системы и автоматически поддерживать его.
- Поды (Pods) — базовая единица развертывания. Под может содержать один или несколько контейнеров, которые разделяют сетевые настройки и хранилище. Контейнеры в поде всегда запускаются на одном узле.
- Узлы (Nodes) — физические или виртуальные машины, на которых запускаются поды. Каждый узел управляется мастер-узлом и содержит службы для запуска подов:
kubelet,kube-proxyи среду выполнения контейнеров (например, Docker). - Контроллеры (Controllers) — компоненты, которые следят за тем, чтобы фактическое состояние кластера соответствовало желаемому. Примеры:
ReplicaSet(поддерживает нужное количество реплик),Deployment(управляет обновлениями приложений),StatefulSet(для приложений с состоянием). - Сервисы (Services) — абстракция, определяющая логический набор подов и политику доступа к ним. Сервисы обеспечивают стабильный DNS-адрес и балансировку нагрузки между подами.
- Пространства имен (Namespaces) — механизм изоляции частей кластера. Позволяет разделять ресурсы между командами или проектами.
- ConfigMaps и Secrets — объекты для хранения конфигурационных данных и конфиденциальной информации (паролей, ключей) соответственно. Они могут монтироваться в поды как файлы или переменные окружения.
Архитектура
Кластер Kubernetes состоит из двух типов узлов:
- Мастер-узел (Master Node) — управляет кластером и принимает решения о развертывании: когда, где и как запускать поды. Включает компоненты:
kube-apiserver(точка входа для API),etcd(хранилище состояния),kube-scheduler(планировщик),kube-controller-manager(менеджер контроллеров). - Рабочие узлы (Worker Nodes) — на них запускаются приложения. Каждый рабочий узел содержит
kubelet(агент, управляющий подами),kube-proxy(сетевые правила) и среду выполнения контейнеров.
Почему Kubernetes стал популярен
- Масштабируемость: эффективно управляет тысячами контейнеров, автоматически масштабируя приложения по нагрузке.
- Надежность и устойчивость: автоматическое восстановление от сбоев — перезапуск неисправных контейнеров, перераспределение подов при падении узлов.
- Гибкость и портативность: работает в любых средах — публичных облаках, виртуальных машинах, физических серверах.
- Управление конфигурацией и секретами: централизованное хранение и предоставление конфигурационных данных и секретов.
- Автоматизация: упрощает развертывание, обновление и откат приложений, а также интеграцию с CI/CD.
Пример манифеста Deployment
Ниже приведен пример YAML-манифеста для развертывания приложения nginx с тремя репликами:
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80Этот манифест описывает желаемое состояние: три реплики пода с контейнером nginx. Kubernetes сам создаст поды и будет поддерживать их количество.
Подводные камни
- Сложность: Kubernetes имеет крутую кривую обучения; для небольших проектов может быть избыточен.
- Ресурсоемкость: мастер-узлы и системные компоненты требуют значительных вычислительных ресурсов.
- Сетевое взаимодействие: требует настройки сетевых плагинов (CNI) и понимания модели сервисов.
- Хранение данных: для stateful-приложений нужны PersistentVolumes и правильная стратегия бэкапов.
Коротко
- Kubernetes — платформа для оркестрации контейнеров, стандарт индустрии.
- Ключевые объекты: поды, узлы, контроллеры, сервисы, namespace, ConfigMaps/Secrets.
- Архитектура: мастер-узел (управление) и рабочие узлы (запуск приложений).
- Преимущества: масштабируемость, самовосстановление, портативность, автоматизация.
Похожие вопросы
- Что такое зомби процессы33%
- Что такое kafka33%
- Какой у вас опыт работы с докером33%
- Насколько сложные приходилось писать пайплайны на gitlab CI с использованием инклудов якорей33%
- Какой у вас опыт работы с TeamCity26%
- Какой опыт самостоятельного написания докер файла26%
- Что такое репликасет, деплоймент26%
- Что такое pod26%
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы