DevOps | Вопросы собесов
5.56K subscribers
34 photos
1.5K links
Сайт: https://easyoffer.ru/
Все каналы: t.me/+xGeAw6ckJ4liYzQy

Контакт для рекламы: @easyoffer_adv
Download Telegram
🤔 Во сколько зонах можно включить репликацию в RDS Aurora?

Aurora поддерживает до 5 read-replicas в разных зонах/регионах с высокой доступностью и кросс-региональным фейловером.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
🤔 В чём преимущество Kubernetes как платформы?

Это платформа для оркестрации контейнеров, которая упрощает развертывание, управление и масштабирование приложений. Она имеет ряд ключевых преимуществ, которые делают её популярной в DevOps и облачных решениях.

🚩Основные плюсы

➕Автоматизация управления приложениями
Kubernetes автоматически запускает, останавливает и перезапускает контейнеры при сбоях. Поддерживает заданное число экземпляров (реплик) приложений, перезапуская или создавая их при необходимости.

➕Масштабирование (горизонтальное и вертикальное)
Ручное: Легко увеличить или уменьшить количество контейнеров (поды) для приложения. Автоматическое: Используя Horizontal Pod Autoscaler (HPA), Kubernetes добавляет ресурсы при увеличении нагрузки.

➕Высокая доступность (HA)
Kubernetes поддерживает отказоустойчивость: Если один узел (node) выходит из строя, поды перемещаются на другие узлы. Внутренний балансировщик нагрузки распределяет трафик между подами.

➕Платформонезависимость
Kubernetes работает в любых средах: Локальных (например, Minikube). В публичных облаках (AWS, Google Cloud, Azure). В гибридных и on-premise инфраструктурах.

➕Управление конфигурацией и секретами
Kubernetes упрощает работу с настройками: ConfigMaps: Для управления конфигурационными данными.
Secrets: Для безопасного хранения конфиденциальной информации, например, ключей API или паролей.

➕Эффективное использование ресурсов
Kubernetes помогает оптимизировать потребление CPU и памяти: Устанавливая минимальные и максимальные лимиты ресурсов для каждого приложения. Перераспределяя ресурсы между приложениями.

➕Расширяемость
Kubernetes поддерживает плагины и кастомизацию: Сетевые плагины (Calico, Flannel) для настройки сети. Системы мониторинга (Prometheus, Grafana). Операторы для автоматизации сложных задач.

➕Сообщество и экосистема
Kubernetes поддерживается большинством крупных облачных провайдеров. Обширная экосистема инструментов: Helm для управления шаблонами, ArgoCD для GitOps, Istio для сетевых взаимодействий.

🚩Когда особенно полезен?

Разработка микросервисных архитектур. Частые релизы и автоматизация CI/CD. Работа с масштабируемыми приложениями. Использование гибридных или мультиоблачных решений.

Ставь 👍 и забирай 📚 Базу знаний
🤔 Что в Terraform пишут в манифест?

- В .tf-файлах описывают:
- provider — с какой платформой работать;
- resource — что создать (VM, bucket, сеть);
- variable — параметры;
- output — что вернуть;
- module — переиспользуемые блоки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥2👍1
🤔 Какие есть лучшие практики в использовании инструкции add и copy?

ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки.

🚩Лучшие практики по использованию `COPY` и `ADD`

🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование ADD)
ADD app.tar.gz /app/


Хорошо (явное распаковывание в RUN)
COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz


🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
COPY . /app


Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/


Добавьте .dockerignore
.git
node_modules
__pycache__
*.log


🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt


Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt

COPY src/ /app/src/


🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (ADD загружает файл, но не кэшируется)
ADD https://example.com/file.tar.gz /tmp/


🟠Хорошо (используем RUN curl + COPY)
RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/


Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что такое producer в Kafka?

Producer — это отправитель сообщений.
Он:
- сериализует данные;
- определяет топик и партицию;
- отправляет сообщения в Kafka брокер.
Producer может быть синхронным или асинхронным.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
🤔 Какие есть три вида монтирования в докере?

В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск

🚩Volumes (Тома) – лучший вариант хранения данных

Данные хранятся внутри Docker (/var/lib/docker/volumes)
Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
sh  
docker volume create mydata
docker run -d -v mydata:/app/data --name mycontainer ubuntu



Удаление тома (только если он не используется)
sh  
docker volume rm mydata



🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста

Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
sh  
docker run -d -v /home/user/logs:/app/logs --name mycontainer ubuntu



🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант

Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать tmpfs-монтирование для /app/cache
sh  
docker run -d --tmpfs /app/cache:size=100m --name mycontainer ubuntu


Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие бывают виды дополнительных контейнеров в поде?

Дополнительные контейнеры включают init-контейнеры для подготовки среды и sidecar-контейнеры для дополнительных задач, таких как логирование или прокси.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
🤔 Какая компонента запускает под на ноде, какая отвечает за сеть?

В Kubernetes разные компоненты отвечают за запуск подов и сетевые настройки.

🚩Какая компонента запускает под на ноде? (`kubelet`)

Получает команды от kube-scheduler (назначение подов)
Запускает контейнеры через Container Runtime (Docker, containerd, CRI-O)
Следит за состоянием подов и перезапускает их при сбоях
systemctl status kubelet


Посмотреть логи kubelet
journalctl -u kubelet -f


🚩Какая компонента отвечает за сеть? (CNI)

Назначает IP-адреса подам
Организует маршрутизацию трафика между подами и нодами
Настраивает Network Policies (безопасность сети)
Проверить работающие сетевые плагины
kubectl get pods -n kube-system


Вывод (если CNI работает нормально)
NAME               READY   STATUS    RESTARTS   AGE
calico-node-xyz 1/1 Running 2 3d


Если CNI не работает, поды могут застрять в ContainerCreating
kubectl get pods

NAME          READY   STATUS              RESTARTS   AGE
web-server 0/1 ContainerCreating 0 10m


Ставь 👍 и забирай 📚 Базу знаний
🔥1
🤔 Какое практическое использование DaemonSet?

DaemonSet запускает по одному экземпляру пода на каждой ноде (или выбранных). Используется для:
- мониторинга (Prometheus Node Exporter, Fluentd);
- логгирования;
- установки агентов безопасности;
- настройки хостовых ресурсов на каждой ноде.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
🤔 Что сейчас больше используется ингресс класс в ингрессе или указывается ингресс контроллер непосредственно в апликейшене?

Сейчас стандартом является использование ingressClassName, а аннотации kubernetes.io/ingress.class считаются устаревшими (deprecated).

🚩Что лучше использовать?

🟠`ingressClassName` (новый метод, Kubernetes 1.19+)
Современный, удобный, поддерживается официально
Работает с IngressClass ресурсами
Можно управлять через CRD (IngressClass)

🟠Аннотация `kubernetes.io/ingress.class` (старый метод, deprecated с 1.18)
Все еще работает, но устарела
Нельзя контролировать IngressClass через CRD

🚩Как правильно указывать `ingressClassName`?

1⃣Настраиваем IngressClass (если нужно)
yaml  
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx
spec:
controller: k8s.io/ingress-nginx



2⃣Используем ingressClassName в Ingress
yaml  
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80



🚩Старый способ (не рекомендуется, но все еще встречается)

Раньше использовали аннотацию kubernetes.io/ingress.class
yaml  
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80


Ставь 👍 и забирай 📚 Базу знаний
🔥1