Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АрхангельскийМВ_БСТ2154_ПКАПИИ_ЛР4.docx
Скачиваний:
2
Добавлен:
02.12.2025
Размер:
2 Мб
Скачать
☆

Ответы на контрольные вопросы

  1. Что такое kuberneets и зачем он нужен?

Kubernetes — это система оркестрации контейнеров, предназначенная для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями.

Он обеспечивает:

  • самовосстановление (restart pod’ов при сбоях),

  • автоматическое масштабирование,

  • балансировку нагрузки,

  • декларативное описание инфраструктуры через YAML.

  1. Расскажите про основные компоненты 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-...

  1. Расскажите про создание пода из 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 и т.д.

  1. Расскажите про сервисы ClusterIp и Headless.

ClusterIP

  • Сервис доступен внутри кластера.

  • Kubernetes назначает виртуальный IP (cluster-ip), через который обращаются к pod'ам.

Headless

  • Сервис без clusterIP (clusterIP: None).

  • Не создаёт виртуальный IP.

  • Используется для прямого обращения к pod'ам (часто со StatefulSet для доступа к каждому pod отдельно).

  1. Расскажите про сервисы NodePort и LoadBalancer.

NodePort

  • Открывает порт на ноде (30000–32767).

  • Позволяет подключаться к сервису извне:

  • http://<node-ip>:<nodePort>.

LoadBalancer

  • Используется в облаках (AWS, GCP, Azure).

  • Создаёт внешний балансировщик нагрузки и выдаёт внешний IP.

  • Применяется для продакшн-доступа.

  1. Расскажите про Ingress.

Ingress — это объект, который управляет внешним доступом к сервисам HTTP/HTTPS.

Он позволяет:

  • маршрутизировать запросы по доменам и путям,

  • использовать один внешний IP,

  • подключать TLS (HTTPS).

  • Ingress требует отдельного Ingress Controller (например, NGINX Ingress).

  1. Расскажите про Deployment, StatefulSet и DaemonSet.

Deployment

  • Управляет статeless приложениями.

  • Гарантирует нужное число pod.

  • Поддерживает rolling updates.

StatefulSet

  • Используется для stateful приложений (БД).

  • Фиксированные имена pod (pod-0, pod-1...).

  • Поддержка постоянных данных.

DaemonSet

  • Запускает один pod на каждую ноду.

  • Используется для логирования, мониторинга, сетевых агентов.

  1. Расскажите про Job и CronJob.

Job

  • Одноразовая задача, запускается до успешного завершения.

CronJob

  • Периодическая задача (по расписанию).

  • Аналог cron в Linux.

  1. Расскажите про ConfigMap и Secret.

ConfigMap

  • Хранит неконфиденциальные параметры (строки, файлы конфигов).

  • Передаётся контейнерам через переменные окружения или volume.

Secret

  • Хранит чувствительные данные (пароли, ключи).

  • Данные хранятся в base64.

  1. Перечислите основные команды 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 — информация о кластере.