DevOps | Вопросы собесов
5.19K subscribers
30 photos
815 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Как поставить отличную версию питона от системного на астре?

В Astra Linux (как и в Debian/Ubuntu) системный Python используется для работы ОС, и его обновление может привести к проблемам. Поэтому лучше устанавливать другую версию Python отдельно**, не заменяя системную.

🟠Установка Python через deadsnakes PPA (для Astra на основе Debian 9/10)
Если Astra Linux основана на Debian 9/10 (например, Astra Smolensk или Orlov), можно использовать PPA
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.10 # Устанавливаем нужную версию


После установки можно проверить
python3.10 --version


🟠Компиляция Python из исходников (универсальный способ)
Если нужная версия недоступна в репозитории, компилируем Python вручную.
Устанавливаем зависимости
sudo apt update
sudo apt install -y build-essential libssl-dev \
libreadline-dev libsqlite3-dev \
zlib1g-dev libbz2-dev libffi-dev


Скачиваем исходники Python
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
sudo tar xvf Python-3.11.6.tgz


Компилируем Python
cd Python-3.11.6
sudo ./configure --enable-optimizations
sudo make -j$(nproc)
sudo make altinstall # НЕ make install, чтобы не затереть системный Python


Проверяем
python3.11 --version


🟠Использование pyenv (изолированные версии Python)
Если нужно переключаться между разными версиями Python, лучше использовать pyenv.
curl https://pyenv.run | bash


Добавляем в ~/.bashrc или ~/.profile
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"


Активируем изменения
source ~/.bashrc


Устанавливаем новую версию Python
pyenv install 3.10.12
pyenv global 3.10.12 # Делаем версию по умолчанию


Проверяем:
python --version


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

По умолчанию в Astra Linux (Смоленск, Орел) может быть отключён доступ к репозиториям.
1. Открой файл /etc/apt/sources.list.
2. Убедись, что в нём указаны актуальные репозитории.
3. Выполни:
4. sudo apt update


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔5👍4💊4
🤔 Как сделать rebase на main branch?

Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main).

🟠Переключаемся на вашу текущую ветку
Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch


🟠Выполняем rebase на `main`
Сначала убедимся, что main обновлена:
git checkout main
git pull origin main


Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main


🟠Разрешение конфликтов (если есть)
Если у вас есть конфликты, Git остановит процесс и попросит их решить.
Откройте файлы с конфликтами, исправьте их.
Добавьте исправленные файлы:

   git add <файл>


Продолжите rebase:

   git rebase --continue


🟠Обновление удалённого репозитория
Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Какие преимущества HTTP/2 перед HTTP/1?

- Мультиплексирование — несколько запросов по одному соединению.
- Сжатие заголовков (HPACK).
- Сервер push — сервер может отправить данные заранее.
- Меньше оверхеда, нет блокировок запросов.
Итог: быстрее, надёжнее, меньше сетевой нагрузки.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
🤔 Назови инструменты для развернутого окружения и настройки серверов

В DevOps используются разные инструменты для автоматизации развертывания и конфигурации серверов.

🟠Инструменты управления конфигурацией (Configuration Management)
Используются для настройки ОС, пакетов, сервисов и приложений.
Ansible – прост в освоении, использует SSH, без агентов
Puppet – декларативный подход, работает по клиент-серверной модели
Chef – использует Ruby DSL, сложнее в настройке
SaltStack – быстрый, поддерживает master-minion и режим без мастера
yaml  
- name: Установка Nginx
hosts: web
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present



🟠Инструменты инфраструктуры как код (IaC)
Используются для автоматического развертывания серверов и облачной инфраструктуры.
Terraform – лучший выбор для облаков (AWS, GCP, Azure)
CloudFormation – инструмент от AWS для управления ресурсами
Pulumi – позволяет писать инфраструктуру на Python, TypeScript
hcl  
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}



🟠Инструменты управления образами серверов (Image-based Deployment)
Используются для создания готовых образов ОС с предустановленным ПО.
Packer – создает образы для AWS AMI, Docker, VMware
Docker – контейнеризация для изолированных окружений
Vagrant – для локального тестирования инфраструктуры
json  
{
"builders": [{
"type": "amazon-ebs",
"region": "us-east-1",
"source_ami": "ami-123456",
"instance_type": "t2.micro",
"ssh_username": "ubuntu"
}]
}



🟠Инструменты оркестрации и контейнеризации
Используются для управления контейнерами и кластеризацией.
Docker Compose – для локального запуска нескольких контейнеров
Kubernetes – для управления контейнерами в продакшене
Nomad – альтернатива Kubernetes от HashiCorp
yaml  
version: '3'
services:
web:
image: nginx
ports:
- "80:80"


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🤔 Что известно про pause-контейнер?

Pause-контейнер — это служебный контейнер, который запускается в каждом pod'e первым. Он удерживает сетевой namespace и выполняет роль "якоря" для остальных контейнеров внутри pod’а, позволяя им делить IP-адрес, порты и volume'ы.

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

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

🚩Почему нужна визуализация логов?

🟠Упрощает анализ
вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии.
🟠Помогает в мониторинге
можно отслеживать изменения в режиме реального времени.
🟠Ускоряет диагностику проблем
легче выявить причину ошибки, если видеть всплески или изменения в логах.
🟠Облегчает работу с большими объемами данных
миллионы строк логов можно представить в виде сводных диаграмм.

🚩Какие инструменты используются?

🟠ELK Stack (Elasticsearch + Logstash + Kibana)
Logstash – собирает и обрабатывает логи.
Elasticsearch – хранит и индексирует логи для быстрого поиска.
Kibana – визуализирует данные, строит графики и дашборды.
Пример: Можно создать график с количеством ошибок 500 за последние 24 часа.

🟠Grafana + Loki (альтернатива ELK)
Loki – хранит и обрабатывает логи.
Grafana – строит красивые дашборды с логами и метриками.
Пример: Можно создать панель с последними логами приложений, используя tail-подобное обновление.

🟠Graylog
Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты.
Пример: Можно отфильтровать логи по уровню ERROR и вывести их в виде диаграммы.

🟠Datadog, Splunk, New Relic
Коммерческие решения с мощными инструментами аналитики логов.
Пример: Автоматическая корреляция логов с метриками системы.

🚩Простой пример работы с ELK

Logstash конфиг (сбор логов из файла)
   input {
file {
path => "/var/log/app.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🤔 Что такое S3 в Amazon?

Это облачное хранилище объектов, используемое для:
- Хранения и резервного копирования данных.
- Хранения статики для веб-приложений.
- Архивации данных (Glacier).
- Хранения логов, баз данных, машинного обучения.
- Хранения образов Docker и артефактов CI/CD.
Функции:
- Версионирование – отслеживание изменений файлов.
- Lifecycle Management – автоматическое перемещение файлов между классами хранения.
- IAM-политики и ACL – контроль доступа.
- S3 Select – фильтрация данных без загрузки всего файла.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
🤔 Что такое basic auth?

Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.

🟠Как работает Basic Auth?
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:

   HTTP/1.1 401 Unauthorized  
WWW-Authenticate: Basic realm="Restricted Area"


Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:

   Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=


🟠Пример запроса с Basic Auth
В curl
curl -u username:password http://example.com/protected


В Python (requests):
import requests
from requests.auth import HTTPBasicAuth

response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)


В JavaScript (fetch):
fetch("http://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));


🚩Минусы

Не безопасен без HTTPS
данные передаются в открытом виде (Base64 — это не шифрование!).
Логин и пароль передаются в каждом запросе
что делает систему уязвимой.
Нет механизма разлогинивания
браузеры кэшируют креды, и их сложно сбросить.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
🤔 За что отвечают cgroups в Docker?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
🤔 Сервис типа кластер P со значением nan, что это значит?

Если в системе мониторинга или логах кластерный сервис (Cluster P) показывает значение NaN (Not a Number), это означает, что данные недоступны или не определены.

🚩Возможные причины NaN в кластере

🟠Нет данных от сервиса (сбой мониторинга)
Метрика не обновляется из-за сбоя Prometheus, Zabbix или Grafana.
Датчики или агенты не отправляют данные.
Посмотреть логи агента

  journalctl -u node_exporter --no-pager | tail -20


Проверить доступность сервиса

  curl -s http://service-ip:port/metrics


🟠Ошибка в коде (деление на 0, пустой запрос)
Если метрика рассчитывается (X / Y), но Y = 0, результат будет NaN.
SQL-запрос возвращает пустой результат. Если используется PromQL, попробуйте запросить сырые данные:

  rate(http_requests_total[5m])


Проверить SQL-запрос, если данные идут из базы:

  SELECT AVG(value) FROM metrics WHERE time > now() - interval '1 hour';


🟠Проблема с кластером (узлы не отвечают)
Один или несколько узлов в кластере недоступны. DNS или балансировщик не может найти сервис.
Посмотреть статус узлов:

  kubectl get nodes


Проверить доступность сервиса в кластере:

  kubectl get pods -n monitoring


🟠Проблема с сетью (файрвол, маршрутизация)
Запросы блокируются файрволом (iptables, firewalld). Метрика приходит с другого узла, но между ними нет связи.
Проверить сетевые правила:

  iptables -L -n | grep DROP


Проверить соединение между узлами:

  nc -zv service-ip port


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что означают DNS records?

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


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

Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.

🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>


или принудительно
kill -9 <PID>


Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>


или
fuser <filename>


🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать lsof и /proc

1⃣Найдите открытые дескрипторы процесса:
ls -l /proc/<PID>/fd/


2⃣Закройте конкретный дескриптор:
exec 3>&-


🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через gdb:
gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit


🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /


Или использовать lsof для очистки удаленных файлов
lsof | grep deleted


🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>


или
service <service> restart


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

Нужно посмотреть список активных пользователей. Существуют команды, которые отображают информацию о текущих сессиях, терминалах, времени входа и командах, которые выполняются. Также можно увидеть, какие процессы запущены от других пользователей.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊13👍4🤔4🔥1
🤔 Видим что места нет находим большой файл 5 Гб например удаляем его а пишет что места всё равно нет в чём причина?

В Linux удаленный файл может оставаться в памяти, если он все еще используется запущенным процессом. Это происходит, потому что файл не удаляется физически, пока его дескриптор (file descriptor) открыт.
Файл все еще используется процессом
Файл удален, но все еще открыт (deleted в /proc)
Файл удален, но был записан в смонтированный том

🚩Проверить, какие процессы держат удаленный файл (`lsof`)

Команда
lsof | grep deleted


Вывод
nginx     1234  www-data   4w   REG  8,1  5G   /var/log/nginx/access.log (deleted)


Решение: Перезапустить процесс:
systemctl restart nginx


или
kill -HUP 1234  # Закрыть процесс (PID = 1234)


🚩Освободить место вручную (`/proc`)

Если процесс нельзя перезапустить, можно освободить занятую память без перезапуска.
ls -l /proc/*/fd/ | grep deleted


Вывод
lrwx------ 1 root root 64 Feb 21 14:23 /proc/5678/fd/4 -> /var/log/nginx/access.log (deleted)


Очистить файл, не перезапуская процесс
> /proc/5678/fd/4


🚩Проверить монтирование (Docker, NFS, tmpfs)

Если файл хранился в смонтированном томе, он может не удалиться сразу.
Проверить монтированные диски:
df -h
mount | grep /var/log


Если файл был в Docker-контейнере, проверить объемы:
docker system df


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🤔 Если переменная объявлена внутри функции, можно ли её использовать в другой функции?

Нет. Переменная, объявленная внутри функции, имеет локальную область видимости — она недоступна в других функциях.


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

Это платформа для управления Kubernetes-кластерами. Она позволяет развертывать, настраивать, мониторить и управлять несколькими кластерами Kubernetes из единой панели управления. Rancher упрощает работу с Kubernetes, предоставляя удобный UI, API и инструменты автоматизации.

🚩Зачем нужен Rancher?

🟠Управление несколькими кластерами
Rancher позволяет управлять кластерами Kubernetes, развернутыми в различных облаках (AWS, GCP, Azure) и на локальной инфраструктуре.
🟠Упрощенная установка и настройка
С помощью Rancher можно быстро развернуть Kubernetes-кластеры с минимальными усилиями.
🟠Безопасность и контроль доступа
Поддерживает аутентификацию через LDAP, Active Directory, GitHub и другие методы.
🟠Мониторинг и логирование
Встроенная поддержка Prometheus, Grafana и Fluentd для мониторинга и логов.
🟠Развертывание приложений
Поддерживает Helm-чарты и стандартные манифесты Kubernetes.

🚩Как работает Rancher?

🟠Rancher Server
центральный компонент, управляющий кластерами и предоставляющий UI/API.
🟠Kubernetes-кластеры
могут быть развернуты с помощью Rancher (RKE, RKE2) или добавлены вручную (например, EKS, AKS, GKE).
🟠Rancher Agents
агенты, установленные в кластерах для обеспечения связи с сервером Rancher.

🚩Пример развертывания Rancher

Для развертывания Rancher можно использовать Docker
docker run -d --name=rancher --restart=unless-stopped \
-p 80:80 -p 443:443 \
rancher/rancher:latest


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Чем отличается Dockerfile от Docker Compose?

- Dockerfile – инструкция для создания образа (docker build).
- Docker Compose – управление несколькими контейнерами (docker-compose up).
- Dockerfile нужен для создания образа, а Docker Compose – для оркестрации сервисов.
- Docker Compose поддерживает многоконтейнерные приложения, а Dockerfile – только один контейнер.
- В docker-compose.yml можно задать сети, volume, зависимости между сервисами.


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

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

🚩Существует три основных типа:

🟠Liveness Probe (Проверка жизнеспособности)
Liveness Probe проверяет, работает ли контейнер. Если проверка liveness не удалась, Kubernetes перезапускает контейнер.

🟠Readiness Probe (Проверка готовности)
Readiness Probe проверяет, готов ли контейнер обслуживать запросы. Если проверка readiness не удалась, под будет исключен из службы (service) и не будет получать трафик.

🟠Startup Probe (Проверка при запуске)
Startup Probe проверяет, что контейнер успешно запустился. Если проверка startup не удалась, Kubernetes считает, что контейнер не может запуститься, и перезапускает его.

🚩Когда они выполняются:

🟠Периодически в течение жизни контейнера, начиная после заданного периода initialDelaySeconds. Используется для проверки состояния контейнеров, которые могут войти в неопределенное состояние и требуют перезапуска для восстановления работоспособности.
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3


🟠Периодически в течение жизни контейнера, начиная после заданного периода initialDelaySeconds. Используется для проверки готовности контейнеров, которые могут быть временно не готовы обслуживать трафик, например, во время загрузки данных или выполнения миграций.
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3


🟠В начале жизни контейнера, начиная с момента запуска и до тех пор, пока проверка не будет успешной или пока не истечет заданное время. Используется для контейнеров, которые могут долго запускаться, что предотвращает преждевременные сбои liveness и readiness проб.
startupProbe:
httpGet:
path: /startup
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 30


🚩Механизмы

🟠HTTP GET:
Проверка выполняется путем отправки HTTP GET запроса к контейнеру.
httpGet:
path: /healthz
port: 8080


🟠TCP Socket:
Проверка выполняется путем установления TCP-соединения с контейнером.
tcpSocket:
port: 8080


🟠Exec:
Проверка выполняется путем выполнения команды внутри контейнера.
exec:
command:
- cat
- /tmp/healthy


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💊1
🤔 Какие характеристики микросервисов есть?

- Изолированность — каждый сервис выполняет одну задачу;
- Независимое развертывание;
- Собственные БД и логику;
- Общение по API (обычно REST, gRPC);
- Автономность и масштабируемость;
- Командная ответственность за конкретный сервис.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2