Ответы на контрольные вопросы
Что такое kuberneets и зачем он нужен?
Kubernetes — это система оркестрации контейнеров, предназначенная для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями.
Он обеспечивает:
самовосстановление (restart pod’ов при сбоях),
автоматическое масштабирование,
балансировку нагрузки,
декларативное описание инфраструктуры через YAML.
Расскажите про основные компоненты kubernetes и покажите их в kube-systems.
Основные компоненты control-plane:
kube-apiserver — точка входа для всех запросов к кластеру.
etcd — распределённое хранилище конфигурации.
kube-scheduler — выбирает ноды для размещения pod.
kube-controller-manager — контроллеры управления состоянием.
cloud-controller-manager — управление облачной инфраструктурой (в managed-кластерах).
CoreDNS — DNS-служба внутри кластера.
kube-proxy — прокси для сетевой маршрутизации.
В выводе kubectl get pods -n kube-system они отображаются как pod:
etcd-my-cluster-control-plane
kube-apiserver-my-cluster-control-plane
kube-scheduler-my-cluster-control-plane
kube-controller-manager-my-cluster-control-plane
coredns-...
kube-proxy-...
Расскажите про создание пода из yaml, основные поля.
Пример структуры YAML:
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: app
image: nginx
ports:
- containerPort: 80
Основные поля:
apiVersion — версия API.
kind — тип ресурса (Pod).
metadata — имя pod, метки.
spec — описание контейнеров, образов, портов, переменных окружения, volume и т.д.
Расскажите про сервисы ClusterIp и Headless.
ClusterIP
Сервис доступен внутри кластера.
Kubernetes назначает виртуальный IP (cluster-ip), через который обращаются к pod'ам.
Headless
Сервис без clusterIP (clusterIP: None).
Не создаёт виртуальный IP.
Используется для прямого обращения к pod'ам (часто со StatefulSet для доступа к каждому pod отдельно).
Расскажите про сервисы NodePort и LoadBalancer.
NodePort
Открывает порт на ноде (30000–32767).
Позволяет подключаться к сервису извне:
http://<node-ip>:<nodePort>.
LoadBalancer
Используется в облаках (AWS, GCP, Azure).
Создаёт внешний балансировщик нагрузки и выдаёт внешний IP.
Применяется для продакшн-доступа.
Расскажите про Ingress.
Ingress — это объект, который управляет внешним доступом к сервисам HTTP/HTTPS.
Он позволяет:
маршрутизировать запросы по доменам и путям,
использовать один внешний IP,
подключать TLS (HTTPS).
Ingress требует отдельного Ingress Controller (например, NGINX Ingress).
Расскажите про Deployment, StatefulSet и DaemonSet.
Deployment
Управляет статeless приложениями.
Гарантирует нужное число pod.
Поддерживает rolling updates.
StatefulSet
Используется для stateful приложений (БД).
Фиксированные имена pod (pod-0, pod-1...).
Поддержка постоянных данных.
DaemonSet
Запускает один pod на каждую ноду.
Используется для логирования, мониторинга, сетевых агентов.
Расскажите про Job и CronJob.
Job
Одноразовая задача, запускается до успешного завершения.
CronJob
Периодическая задача (по расписанию).
Аналог cron в Linux.
Расскажите про ConfigMap и Secret.
ConfigMap
Хранит неконфиденциальные параметры (строки, файлы конфигов).
Передаётся контейнерам через переменные окружения или volume.
Secret
Хранит чувствительные данные (пароли, ключи).
Данные хранятся в base64.
Перечислите основные команды kubectl, рассмотренные в лабораторной работе.
kubectl get pods — получить pod’ы.
kubectl get pods -A — pod’ы во всех namespace.
kubectl get svc — список сервисов.
kubectl get nodes — список нод.
kubectl describe pod <name> — детальная информация.
kubectl apply -f file.yaml — применить конфигурацию.
kubectl delete pod <name> — удалить pod.
kubectl scale deployment <name> --replicas=n — масштабирование.
kubectl rollout restart deployment <name> — перезапуск.
kubectl logs <pod> — логи контейнера.
kubectl cluster-info — информация о кластере.
