DevOps | Вопросы собесов
5.28K subscribers
28 photos
892 links
Download Telegram
📌 Какие команды знаешь?

💬 Спрашивают в 13% собеседований

🤔 Git

- git init: Инициализация нового репозитория.
- git clone <url>: Клонирование репозитория.
- git add <file>: Добавление файла к коммиту.
- git commit -m "сообщение": Создание коммита.
- git push: Отправка изменений.
- git pull: Получение изменений.
- git branch: Список веток.
- git checkout <branch>: Переключение ветки.

🤔 Docker

- docker build -t <image_name> .: Создание образа.
- docker run -d -p 80:80 <image_name>: Запуск контейнера.
- docker ps: Список контейнеров.
- docker stop <container_id>: Остановка контейнера.
- docker rm <container_id>: Удаление контейнера.
- docker images: Список образов.
- docker rmi <image_id>: Удаление образа.

🤔 Kubernetes (kubectl)

- kubectl get pods: Список подов.
- kubectl get services: Список сервисов.
- kubectl describe pod <pod_name>: Информация о поде.
- kubectl logs <pod_name>: Логи пода.
- kubectl apply -f <file.yaml>: Применение конфигурации.
- kubectl delete pod <pod_name>: Удаление пода.
- kubectl exec -it <pod_name> -- /bin/bash: Подключение к поду.

🤔 Ansible

- ansible-playbook <playbook.yml>: Запуск плейбука.
- ansible <host> -m ping: Проверка хостов.
- ansible <host> -m command -a 'uptime': Выполнение команды.
- ansible-galaxy install <role>: Установка роли.

🤔 Terraform

- terraform init: Инициализация.
- terraform plan: Планирование изменений.
- terraform apply: Применение изменений.
- terraform destroy: Удаление ресурсов.

🤔 Linux (bash)

- ls: Список файлов.
- cd <directory>: Перемещение в каталог.
- pwd: Текущий каталог.
- cp <source> <destination>: Копирование файлов.
- mv <source> <destination>: Перемещение файлов.
- rm <file>: Удаление файла.
- mkdir <directory>: Создание каталога.
- grep <pattern> <file>: Поиск шаблона.
- find <directory> -name <pattern>: Поиск файлов.
- chmod <permissions> <file>: Изменение прав.
- chown <user>:<group> <file>: Изменение владельца.
- top: Мониторинг процессов.
- ps aux: Список процессов.

🤔 CI/CD (GitLab, Jenkins, GitHub Actions)

🤔 GitLab CI/CD:
- .gitlab-ci.yml: Конфигурация пайплайна.
- gitlab-runner register: Регистрация Runner.
- gitlab-runner list: Список Runner.

🤔 Jenkins:
- jenkins-cli.jar: Утилита CLI.
- jenkins-jobs create <job_name>: Создание задачи.
- jenkins-jobs build <job_name>: Запуск задачи.
- jenkins-jobs list: Список задач.

🤔 GitHub Actions:
- workflow_dispatch: Ручной запуск.
- .github/workflows/<workflow>.yml: Конфигурация workflow.

🤔 Пример CI/CD пайплайна в GitLab CI/CD
stages:
- build
- test
- deploy

build:
stage: build
script:
- echo "Building..."
- ./build.sh

test:
stage: test
script:
- echo "Testing..."
- ./test.sh

deploy:
stage: deploy
script:
- echo "Deploying..."
- ./deploy.sh


🤔 Краткое резюме

Эти команды охватывают управление версиями, контейнеризацию, оркестрацию, автоматизацию развертывания и администрирование систем. Знание этих команд помогает эффективно управлять процессами разработки и эксплуатации ПО.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👾5
📌 Как посчитать размер node в кубах?

💬 Спрашивают в 13% собеседований

Для определения размера узла (node) в кластере Kubernetes необходимо собрать информацию о различных ресурсах, таких как количество процессоров (CPU), объем оперативной памяти (RAM) и объем дискового пространства, доступные на узле. Эти данные можно получить с помощью команды kubectl.

🤔 Шаги для определения размера узла

1️⃣ Получение списка узлов

Для начала необходимо получить список узлов в кластере:
kubectl get nodes


2️⃣ Получение информации о ресурсе узла

Для каждого узла из списка можно получить подробную информацию о ресурсах с помощью команды kubectl describe node <node-name>:
kubectl describe node <node-name>


Эта команда предоставит информацию о доступных и используемых ресурсах, таких как CPU, память и дисковое пространство.

3️⃣ Получение информации о ресурсах узлов в формате JSON/YAML

Чтобы получить информацию о ресурсах узлов в удобном для обработки формате (JSON или YAML), можно использовать команду kubectl get node <node-name> -o json или kubectl get node <node-name> -o yaml:
kubectl get node <node-name> -o json


🤔 Пример вывода команды
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "node1"
},
"status": {
"capacity": {
"cpu": "4",
"memory": "16384000Ki",
"ephemeral-storage": "100Gi"
},
"allocatable": {
"cpu": "4",
"memory": "16334000Ki",
"ephemeral-storage": "98Gi"
}
}
}


🤔 Расчет размера узла

- CPU: Количество процессоров.
- Memory: Объем оперативной памяти (в Ki, где 1 Ki = 1024 байт).

- Ephemeral Storage: Объем временного дискового пространства.

🤔 Пример расчета

Допустим, узел имеет следующие ресурсы:

- CPU: 4
- Memory: 16334000Ki (примерно 15.58 GiB)
- Ephemeral Storage: 98Gi

🤔 Конвертация памяти

Память в Kubernetes часто указывается в КиБ (Kibibytes). Для конвертации в гигабайты (GiB) используется следующая формула:

\[ \text{Memory (GiB)} = \frac{\text{Memory (KiB)}}{1024 \times 1024} \]

Пример:

\[ \text{Memory (GiB)} = \frac{16334000}{1024 \times 1024} \approx 15.58 \]

🤔 Объединение всех данных

В результате, размер узла можно представить как:

- CPU: 4
- Memory: 15.58 GiB
- Ephemeral Storage: 98 GiB

🤔 Пример команд для автоматизации

Если необходимо собрать и обработать данные для всех узлов в кластере, можно использовать скрипт. Например, на bash с использованием jq для обработки JSON:
#!/bin/bash

nodes=$(kubectl get nodes -o json | jq -r '.items[].metadata.name')

for node in $nodes; do
echo "Node: $node"
kubectl get node $node -o json | jq '.status.capacity, .status.allocatable'
echo ""
done


🤔 Краткое резюме

Для определения размера узла (node) в Kubernetes, используйте команды kubectl get nodes, kubectl describe node <node-name> и kubectl get node <node-name> -o json для получения информации о CPU, памяти и дисковом пространстве. Переведите данные о памяти из Ki в GiB для удобства и объедините все данные для полного представления ресурсов узла.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
📌 Как осуществляли деплой на kubernetes?

💬 Спрашивают в 13% собеседований

🤔 Осуществление деплоя на Kubernetes

Развертывание приложения на Kubernetes включает несколько шагов, таких как подготовка конфигурационных файлов, настройка окружения и выполнение команд для развертывания. Рассмотрим процесс на примере деплоя простого веб-приложения.

🤔 Шаги для деплоя на Kubernetes

1️⃣ Подготовка Docker-образа

Первый шаг — подготовить Docker-образ приложения. Пример Dockerfile:
# Используем официальный образ Python
FROM python:3.8-slim

# Устанавливаем рабочую директорию
WORKDIR /app

# Копируем все файлы в контейнер
COPY . /app

# Устанавливаем зависимости
RUN pip install --no-cache-dir -r requirements.txt

# Определяем команду запуска
CMD ["python", "app.py"]


Создание и загрузка Docker-образа в Docker Hub:
docker build -t username/myapp:latest .
docker push username/myapp:latest


2️⃣ Создание конфигурационных файлов Kubernetes

Для развертывания приложения на Kubernetes, необходимо создать манифесты для деплоя (Deployment), сервиса (Service) и других необходимых ресурсов.

🤔 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: username/myapp:latest
ports:
- containerPort: 80


🤔 Service
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80


3️⃣ Применение конфигураций

Применение манифестов для создания ресурсов в кластере Kubernetes:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml


4️⃣ Проверка статуса

Проверка статуса развертывания и сервисов:
kubectl get deployments
kubectl get services
kubectl get pods


5️⃣ Настройка автоскейлинга (по желанию)

Для обеспечения высокой доступности и масштабируемости можно настроить горизонтальное авто-масштабирование:
kubectl autoscale deployment myapp-deployment --cpu-percent=50 --min=1 --max=10


6️⃣ Обновление приложения

Для обновления приложения необходимо изменить образ в деплойменте и применить изменения:

Обновление Docker-образа:
docker build -t username/myapp:v2 .
docker push username/myapp:v2


Обновление манифеста Deployment:
spec:
template:
spec:
containers:
- name: myapp
image: username/myapp:v2


Применение изменений:
kubectl apply -f deployment.yaml


🤔 Пример полного пайплайна CI/CD с использованием GitLab CI/CD

Пример .gitlab-ci.yml для автоматизации деплоя:
stages:
- build
- push
- deploy

variables:
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG

build:
stage: build
script:
- docker build -t $DOCKER_IMAGE .
only:
- main

push:
stage: push
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push $DOCKER_IMAGE
only:
- main

deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
- kubectl apply -f service.yaml
only:
- main


🤔 Краткое резюме

1️⃣ Создание Docker-образа: Написание Dockerfile и загрузка образа в Docker Hub.

2️⃣ Подготовка манифестов Kubernetes: Создание YAML-файлов для Deployment и Service.

3️⃣ Применение конфигураций: Использование kubectl apply для развертывания ресурсов.

4️⃣ Проверка статуса: Команды kubectl get для проверки состояния деплоя.

5️⃣ Настройка автоскейлинга: Опционально, настройка горизонтального авто-масштабирования.

6️⃣ Автоматизация: Использование CI/CD систем, таких как GitLab CI/CD, для автоматизации процесса сборки и деплоя.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
📌 Расскажи о своих плюсах?

💬 Спрашивают в 13% собеседований

🤔 Плюсы и преимущества DevOps подходов и инструментов

1️⃣ Автоматизация

- Преимущество: Сокращение времени на рутинные операции и снижение риска ошибок.

- Пример: Автоматический деплой через CI/CD (например, GitLab CI/CD).

2️⃣ Быстрая доставка

- Преимущество: Ускорение выпуска новых функций и исправлений.

- Пример: Быстрая доставка через автоматизированные процессы деплоя.

3️⃣ Улучшенное качество кода

- Преимущество: Обнаружение ошибок на ранних этапах разработки.

- Пример: Линтеры (ESLint, Pylint) и анализаторы кода (SonarQube).

4️⃣ Масштабируемость

- Преимущество: Легкость масштабирования приложений.

- Пример: Авто-масштабирование подов в Kubernetes.

5️⃣ Надежность

- Преимущество: Быстрое обнаружение и устранение проблем.

- Пример: Мониторинг с Prometheus и Grafana.

6️⃣ Гибкость

- Преимущество: Быстрая адаптация к изменениям.

- Пример: Легкость интеграции новых технологий.

7️⃣ Сотрудничество

- Преимущество: Улучшение взаимодействия между командами.

- Пример: Совместная работа с использованием JIRA, Trello.

8️⃣ Безопасность

- Преимущество: Минимизация рисков и улучшение защиты.

- Пример: Инструменты безопасности (Aqua Security, Snyk).

🤔 Личные плюсы

1️⃣ Опыт с инструментами

- Плюс: Знание Jenkins, Docker, Kubernetes, Ansible, Terraform, Prometheus.

- Пример: Настройка CI/CD пайплайнов.

2️⃣ Решение комплексных задач

- Плюс: Разработка сложных систем автоматизации.

- Пример: Управление инфраструктурой с Terraform и Ansible.

3️⃣ Оптимизация процессов

- Плюс: Повышение эффективности процессов разработки и развертывания.

- Пример: Непрерывный мониторинг и алертинг.

4️⃣ Коммуникационные навыки

- Плюс: Эффективное взаимодействие с командами.

- Пример: Проведение DevOps тренингов и воркшопов.

5️⃣ Адаптивность

- Плюс: Быстрое освоение новых технологий.

- Пример: Внедрение GitOps и ArgoCD.

🤔 Краткое резюме

DevOps подходы и инструменты обеспечивают автоматизацию, быструю доставку, улучшенное качество кода, масштабируемость, надежность, гибкость, улучшенное сотрудничество и безопасность. Личные плюсы включают опыт работы с инструментами, решение комплексных задач, оптимизацию процессов, коммуникационные навыки и адаптивность к новым технологиям.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯6🤔2👍1
📌 Каким инцидентом готов на работе с чем разбиратьсясок?

💬 Спрашивают в 13% собеседований

🤔 Инциденты и их решение

1️⃣ Сбой развертывания приложения

Симптомы: Приложение не запускается, ошибки в логах.

Решение:
- Проверка логов пода (kubectl logs <pod-name>).
- Анализ конфигурации деплоя (kubectl describe pod <pod-name>).
- Откат к предыдущей версии (kubectl rollout undo deployment <deployment-name>).

2️⃣ Проблемы с производительностью

Симптомы: Высокая нагрузка на CPU, медленная работа приложений.

Решение:
- Мониторинг метрик (Prometheus, Grafana).
- Анализ потребления ресурсов (kubectl top pods).
- Масштабирование подов (kubectl scale deployment <deployment-name> --replicas=<number>).
- Оптимизация кода и запросов.

3️⃣ Недоступность сервисов

Симптомы: Приложение недоступно, ошибки 500/503.

Решение:
- Проверка состояния подов и сервисов (kubectl get pods, kubectl get services).
- Анализ логов ingress-контроллера.
- Проверка DNS и балансировки нагрузки.
- Перезапуск подов или сервисов.

4️⃣ Утечка памяти

Симптомы: Постепенное увеличение потребления памяти, перезапуски подов.

Решение:
- Мониторинг памяти (Prometheus, Grafana).
- Анализ логов и дампов памяти.
- Оптимизация кода.
- Настройка лимитов памяти (kubectl describe pod <pod-name>).
- Перезапуск подов.

5️⃣ Проблемы с базой данных

Симптомы: Ошибки подключения, медленные запросы.

Решение:
- Проверка состояния базы данных и логов.
- Анализ производительности запросов.
- Настройка параметров базы данных.
- Резервное копирование и восстановление данных.

🤔 Инструменты для решения инцидентов

🤔 Kubernetes (kubectl)

- Управление подами и сервисами.
- Анализ логов и описаний ресурсов.
- Масштабирование и обновление деплоя.

🤔 Prometheus и Grafana

- Мониторинг метрик.
- Настройка алертинга.
- Визуализация данных.

🤔 CI/CD инструменты (Jenkins, GitLab CI/CD)

- Автоматизация развертывания.
- Настройка пайплайнов.
- Интеграция с системами мониторинга.

🤔 Логирование (ELK Stack, Fluentd)

- Сбор и анализ логов.
- Настройка дашбордов.
- Централизованное логирование.

🤔 Краткое резюме

Готов решать инциденты, такие как сбои развертывания, проблемы с производительностью, недоступность сервисов, утечки памяти и проблемы с базами данных. Использую инструменты Kubernetes, Prometheus, Grafana, CI/CD системы и логирование для эффективного устранения проблем и поддержания стабильности приложений.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
📌 Чем отличается докер от kvm?

💬 Спрашивают в 13% собеседований

🤔 Docker vs. KVM: Основные отличия

Docker и KVM (Kernel-based Virtual Machine) — это два различных инструмента для изоляции и управления средами выполнения, но они работают на разных уровнях и используются для разных задач.

1️⃣ Уровень изоляции

- Docker:

- Использует контейнеры для изоляции приложений на уровне операционной системы.
- Контейнеры делят один и тот же ядро ОС, но изолируют файловую систему, сеть и другие ресурсы.
- Контейнеры быстрее в запуске и занимают меньше ресурсов по сравнению с виртуальными машинами.

- KVM:

- Использует виртуальные машины для изоляции приложений на уровне гипервизора.
- Каждая виртуальная машина имеет собственную операционную систему и ядро.
- Виртуальные машины обеспечивают полную изоляцию и большую гибкость, но требуют больше ресурсов и времени на запуск.

2️⃣ Производительность

- Docker:

- Контейнеры имеют более низкую накладную стоимость, так как они делят одно ядро ОС.
- Быстрое время запуска и остановки.
- Высокая плотность контейнеров на одном хосте.

- KVM:

- Виртуальные машины имеют большую накладную стоимость из-за наличия полной операционной системы.
- Более медленное время запуска по сравнению с контейнерами.
- Меньшая плотность виртуальных машин на одном хосте.

3️⃣ Использование ресурсов

- Docker:

- Контейнеры используют общий пул ресурсов хоста (CPU, память, диск), что позволяет эффективнее использовать ресурсы.
- Легко масштабируются и переносятся.

- KVM:

- Виртуальные машины получают выделенные ресурсы, что обеспечивает изоляцию и стабильность, но может привести к перерасходу ресурсов.
- Подходит для тяжелых приложений, требующих полной изоляции.

4️⃣ Сценарии использования

- Docker:

- Идеален для микросервисов и облачных приложений.
- Используется для разработки, тестирования и развертывания приложений.
- Поддерживает оркестрацию контейнеров с помощью Kubernetes и других инструментов.

- KVM:

- Идеален для виртуализации серверов и десктопов.
- Используется для запуска различных операционных систем на одном физическом сервере.
- Подходит для приложений, требующих высокой безопасности и полной изоляции.

5️⃣ Управление и оркестрация

- Docker:

- Управление контейнерами осуществляется с помощью Docker CLI или Docker Compose.
- Оркестрация контейнеров поддерживается Kubernetes, Docker Swarm и другими системами.

- KVM:

- Управление виртуальными машинами осуществляется с помощью инструментов, таких как libvirt, virt-manager и OpenStack.
- Поддержка оркестрации через OpenStack и другие платформы управления виртуализацией.

🤔 Пример использования Docker

Dockerfile для создания контейнера:
FROM python:3.8-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]


Команды для сборки и запуска контейнера:
docker build -t myapp:latest .
docker run -d -p 80:80 myapp:latest


🤔 Пример использования KVM

Создание и запуск виртуальной машины с помощью virt-manager:

1️⃣ Установите virt-manager:
   sudo apt-get install virt-manager


2️⃣ Создайте новую виртуальную машину через графический интерфейс virt-manager, указав ISO образ для установки операционной системы и настроив ресурсы (CPU, память, диск).

🤔 Краткое резюме

- Docker: Использует контейнеры для изоляции на уровне ОС, что обеспечивает быструю и эффективную работу приложений. Идеален для микросервисов и облачных приложений.

- KVM: Использует виртуальные машины для полной изоляции на уровне гипервизора, обеспечивая стабильность и безопасность. Подходит для виртуализации серверов и тяжелых приложений.

Docker предоставляет легковесную и быструю изоляцию, в то время как KVM обеспечивает полную виртуализацию и лучшую изоляцию ресурсов.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
3
📌 Какой опыт работы с openshift?

💬 Спрашивают в 13% собеседований

🤔 Опыт работы с OpenShift

OpenShift — это платформа контейнерной оркестрации от Red Hat, построенная на Kubernetes, с дополнительными функциями для развертывания, управления и масштабирования приложений. Вот основные аспекты моего опыта работы с OpenShift:

1️⃣ Установка и настройка OpenShift кластера

- Установка: Использование oc и openshift-installer для установки и настройки кластера.
- Платформы: Настройка кластеров на локальных и облачных платформах .
sudo dnf install -y origin-clients
openshift-install create cluster --dir=<installation_directory>


2️⃣ Развертывание и управление приложениями

- Создание приложений: Написание и применение манифестов (DeploymentConfig, Service, Route).
- Инструменты: Использование oc new-app для быстрого развертывания приложений.
oc new-app --name=myapp myregistry/myimage:latest
oc apply -f deploymentconfig.yaml


3️⃣ Настройка CI/CD пайплайнов

- Использование Tekton: Настройка CI/CD пайплайнов для автоматизации сборки, тестирования и развертывания.
- Интеграция: Интеграция с Git репозиториями и системами управления версиями.
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: myapp-pipeline
spec:
tasks:
- name: build
taskRef:
name: buildah
params:
- name: IMAGE
value: 'quay.io/myorg/myapp:latest'
- name: deploy
taskRef:
name: openshift-client
params:
- name: ARGS
value: ['apply', '-f', 'deploymentconfig.yaml']


4️⃣ Управление конфигурацией и секретами

- ConfigMap и Secret:t для хранения конфигураций и секретных данных.
oc create configmap myconfig --from-literal=key1=value1
oc create secret generic mysecret --from-literal=username=admin --from-literal=password=secret


5️⃣ Мониторинг и логирование

- Инструменты: Использование Prometheus, Grafana и Elasticsearch для мониторинга и логирования.
- Настройка алертинга: Настройка дашбордов и алертинга для отслеживания состояния приложений.

6️⃣ Масштабирование и авто-масштабирование приложений

- Горизонтальное и вертикальное масштабирование: Настройка авто-масштабирования подов на основе метрик ресурсов.
oc scale --replicas=3 deployment/myapp
oc autoscale deployment/myapp --min=1 --max=10 --cpu-percent=80


🤔 Примеры конфигурационных файлов

🤔 Пример DeploymentConfig
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
name: myapp
spec:
replicas: 3
selector:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: quay.io/myorg/myapp:latest
ports:
- containerPort: 8080
triggers:
- type: ConfigChange
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- myapp
from:
kind: ImageStreamTag
name: myapp:latest


🤔 Пример Service и Route
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: myapp-route
spec:
to:
kind: Service
name: myapp-service
port:
targetPort: 8080
tls:
termination: edge


🤔 Краткое резюме

Я имею опыт работы с OpenShift в установке и настройке кластеров, развертывании и управлении приложениями, настройке CI/CD пайплайнов, управлении конфигурацией и секретами, мониторинге, масштабировании и обеспечении безопасности. OpenShift позволяет эффективно управлять контейнерными приложениями и автоматизировать процессы разработки и развертывания.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31🔥1👀1
📌 Что такое LA?

💬 Спрашивают в 13% собеседований

🤔 Что такое LA (Load Average)?

Load Average (LA) — это метрика, используемая в Unix-подобных операционных системах для измерения нагрузки на систему. Она показывает среднее количество процессов, которые находятся в состоянии ожидания выполнения (использования CPU) или ожидания ввода-вывода (I/O) за определенные промежутки времени. Load Average отображается как три числа, представляющие среднюю нагрузку за последние 1, 5 и 15 минут.

🤔 Пример вывода Load Average

На большинстве систем командой uptime или top можно получить Load Average:
uptime


Пример вывода:
 14:32:45 up 3 days,  4:55,  2 users,  load average: 0.56, 0.74, 0.66


В этом примере:
- 0.56 — средняя нагрузка за последние 1 минуту.
- 0.74 — средняя нагрузка за последние 5 минут.
- 0.66 — средняя нагрузка за последние 15 минут.

🤔 Понимание Load Average

🤔 Как интерпретировать Load Average

- Значение Load Average: Число указывает среднее количество процессов, ожидающих выполнения или ввода-вывода. Например, значение 2.5 означает, что в среднем 2.5 процесса находились в очереди на выполнение или ввод-вывод.
- Относительно количества CPU: Для правильной интерпретации Load Average нужно учитывать количество процессорных ядер (CPU cores) на системе.
- Нагрузка ≤ Количество ядер: Если Load Average меньше или равен количеству ядер, система справляется с текущей нагрузкой.
- Нагрузка > Количество ядер: Если Load Average превышает количество ядер, это может указывать на перегрузку системы, и некоторые процессы будут ждать дольше.

🤔 Пример интерпретации

Если у вас 4-ядерный процессор, значения Load Average:
- 2.0: Система загружена наполовину.
- 4.0: Система загружена на полную мощность.
- 8.0: Система перегружена, и процессы вынуждены ждать выполнения.

🤔 Практическое использование Load Average

🤔 Мониторинг и диагностика

Load Average помогает системным администраторам и DevOps инженерам:
- Определять пиковую нагрузку: Анализируя изменение нагрузки, можно выявить пики и периоды высокой активности.
- Диагностировать проблемы производительности: Высокие значения Load Average могут указывать на необходимость оптимизации приложений, добавления ресурсов или перераспределения нагрузки.
- Планировать масштабирование: Анализируя тенденции нагрузки, можно принять обоснованные решения о необходимости масштабирования инфраструктуры.

🤔 Пример использования в DevOps

- Мониторинг в реальном времени: Использование инструментов мониторинга, таких как Prometheus и Grafana, для отслеживания Load Average и настройки алертов при достижении критических значений.
- Автоматическое масштабирование: Настройка правил автоскейлинга в Kubernetes на основе метрик Load Average, чтобы автоматически добавлять или удалять поды в зависимости от текущей нагрузки.
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70


🤔 Краткое резюме

Load Average (LA) — это метрика, показывающая среднее количество процессов, ожидающих выполнения или ввода-вывода за последние 1, 5 и 15 минут. Она помогает оценить загрузку системы и определить, справляется ли система с текущей нагрузкой. Правильная интерпретация требует учета количества процессорных ядер, и высокие значения могут указывать на перегрузку системы. Load Average широко используется для мониторинга, диагностики и планирования масштабирования в DevOps и системном администрировании.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
DevOps | Вопросы собесов pinned «👾 1120 вопросов собесов на DevOps 🔒 База реальных собесов 🔒 База тестовых заданий 👾 Список менторов 👩‍💻 DevOps ├ Вакансии └ Тесты 🖥 Data Science ├ Вопросы собесов ├ Вакансии └ Тесты 👩‍💻 С# ├ Вопросы собесов ├ Вакансии ├ LeetCode ответы └ Тесты 👩‍💻 Kotlin…»
🤔 Какой инструмент используется для мониторинга и логирования в DevOps?
Anonymous Quiz
6%
Ansible
3%
GitLab CI
81%
ELK Stack
9%
Jenkins
📌 Чем отличается докер от lxc?

💬 Спрашивают в 13% собеседований

🤔 Docker vs. LXC: Основные отличия

Docker и LXC (Linux Containers) — это два различных подхода к контейнеризации, которые обеспечивают изоляцию и управление приложениями. Хотя они имеют общие цели, они различаются по архитектуре, использованию и функциональности.

🤔 Основные отличия Docker и LXC

1️⃣ Уровень абстракции

- Docker:
- Предоставляет высокий уровень абстракции для контейнеров.
- Фокусируется на упаковке приложений и их зависимостей в образы, которые можно легко распространять и развертывать.
- Использует Docker Engine для управления контейнерами и их изоляции.

- LXC:
- Обеспечивает низкий уровень абстракции, ближе к традиционной виртуализации.
- Фокусируется на изоляции системных процессов, предоставляя полные системные контейнеры, работающие как легковесные виртуальные машины.
- Использует набор инструментов LXC для управления контейнерами.

2️⃣ Простота использования

- Docker:
- Обеспечивает простые команды для создания, запуска и управления контейнерами (docker run, docker build).
- Имеет развитую экосистему и множество готовых образов на Docker Hub.
- Использует Dockerfile для автоматизации сборки образов.
# Пример Dockerfile
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]


- LXC:
- Более сложен в настройке и управлении.
- Требует больше знаний о системных аспектах Linux.
- Использует конфигурационные файлы и команды LXC для управления контейнерами.

# Пример команды LXC для создания контейнера
lxc-create -n mycontainer -t ubuntu


3️⃣ Функциональность и возможности

- Docker:
- Предоставляет простые инструменты для создания, развертывания и масштабирования контейнерных приложений.
- Поддерживает оркестрацию с использованием Docker Swarm и Kubernetes.
- Обеспечивает возможность создания многоуровневых образов с помощью Dockerfile.

- LXC:
- Предоставляет большую гибкость и контроль над контейнерами.
- Может использоваться для запуска приложений, требующих глубокой интеграции с хостовой системой.
- Поддерживает различные виды изоляции, включая изоляцию сети, файловой системы и ресурсов.

4️⃣ Изоляция и безопасность

- Docker:
- Обеспечивает изоляцию на уровне процессов и файловой системы.
- Использует технологии namespaces и cgroups для изоляции контейнеров.
- Поддерживает дополнительные механизмы безопасности, такие как SELinux и AppArmor.

- LXC:
- Обеспечивает более глубокую изоляцию, приближенную к виртуальным машинам.
- Также использует namespaces и cgroups, но позволяет более гибкую настройку.
- Поддерживает различные уровни изоляции и настройки безопасности.

5️⃣ Производительность

- Docker:
- Быстрый запуск контейнеров благодаря легковесной изоляции.
- Низкая накладная стоимость по сравнению с традиционной виртуализацией.
- Хорошо подходит для микросервисной архитектуры и CI/CD пайплайнов.

- LXC:
- Может иметь более высокую накладную стоимость из-за глубокой изоляции.
- Подходит для запуска приложений, требующих высокой производительности и низкой латентности.
- Обеспечивает более стабильное и предсказуемое поведение для тяжелых приложений.

🤔 Краткое резюме

- Docker:
- Предоставляет высокий уровень абстракции для приложений.
- Легок в использовании и имеет богатую экосистему.
- Идеален для микросервисов и CI/CD пайплайнов.

- LXC:
- Обеспечивает низкий уровень абстракции, ближе к виртуализации.
- Более сложен в настройке, но предлагает больше гибкости.
- Подходит для приложений, требующих глубокой интеграции с хостовой системой и высокой производительности.

Docker предоставляет более упрощенный и специализированный подход к контейнеризации, ориентированный на разработку и развертывание приложений, тогда как LXC обеспечивает большую гибкость и контроль, подходя для более сложных сценариев использования.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9