fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

DevOps | Вопросы собесов

DevOps | Вопросы собесов

رفتن به کانال در Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads

نمایش بیشتر
5 566
مشترکین
+124 ساعت
-37 روز
-1030 روز
آرشیو پست ها
🤔 Что порождает init процесс? `init` — это первый процесс, который запускается ядром операционной системы после её загрузки. Он порождается непосредственно ядром как процесс с идентификатором PID 1 и отвечает за инициализацию системы, запуск всех остальных процессов и управление ними. `init` остаётся родительским процессом для всех орфанных процессов, обеспечивая их завершение или управление. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Yandex DataLens Festival, 2-18 декабря Для аналитиков, тимлидов, разработчиков, продактов и маркетологов. Эксперты Яндекса по
Yandex DataLens Festival, 2-18 декабря Для аналитиков, тимлидов, разработчиков, продактов и маркетологов. Эксперты Яндекса поделятся опытом. Онлайн и бесплатно Зарегистрироваться #реклама 16+ yandex.cloud О рекламодателе Реклама на Яндексе

🤔 Как реализовать идеальный деплой кода в production с помощью argocd? Argo CD — это инструмент для непрерывной доставки (CD) на основе GitOps, который автоматизирует развертывание приложений в Kubernetes. Он позволяет синхронизировать состояние кластера с состоянием в репозитории Git, что обеспечивает декларативное управление инфраструктурой и приложениями. 🚩Настройки идеального деплоя кода в production 1⃣Установка Argo CD Первым шагом является установка Argo CD в ваш Kubernetes кластер.
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
2⃣Доступ к интерфейсу Argo CD После установки необходимо настроить доступ к интерфейсу Argo CD. Вы можете использовать kubectl port-forward для локального доступа:
kubectl port-forward svc/argocd-server -n argocd 8080:443
3⃣Настройка аутентификации Получите начальный пароль для пользователя admin:
kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2
4⃣Создание приложения Argo CD Создайте репозиторий в Git, который будет содержать манифесты Kubernetes для вашего приложения. Репозиторий должен содержать все необходимые файлы для развертывания приложения (например, файлы Deployment, Service, ConfigMap и т.д.). 5⃣Добавление приложения в Argo CD Используйте веб-интерфейс или командную строку для создания нового приложения в Argo CD, которое будет синхронизироваться с вашим Git-репозиторием. 6⃣Синхронизация и развертывание Argo CD автоматически синхронизирует состояние вашего кластера с состоянием в Git-репозитории. Если вы включили автоматическую синхронизацию, изменения в репозитории будут автоматически развернуты в кластере. 7⃣Настройка уведомлений Argo CD можно настроить для отправки уведомлений о статусе развертываний через интеграции с такими инструментами, как Slack, email, или вебхуками. 8⃣Мониторинг и обратная связь Используйте веб-интерфейс Argo CD для мониторинга состояния приложений и синхронизации. Также можно настроить метрики и мониторинг через Prometheus и Grafana для более глубокого анализа. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие существуют Probe? В Kubernetes существуют три типа Probe: `Liveness Probe`, `Readiness Probe` и `Startup Probe`. `Liveness Probe` проверяет, жив ли контейнер и работает ли он корректно, перезапуская его при необходимости. `Readiness Probe` определяет, готов ли контейнер обрабатывать запросы, и управляет включением/выключением его из баланса нагрузки. `Startup Probe` используется для проверки успешного старта контейнера перед выполнением других Probe. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Цены на все Серверы онлайн! Удобный конфигуратор! Серверы STSS Flagman✅ Огромный выбор решений 👍 Консультации лучших эксперт
Цены на все Серверы онлайн! Удобный конфигуратор! Серверы STSS Flagman✅ Огромный выбор решений 👍 Консультации лучших экспертов 👌 Непревзойденный сервис ❤️ Получить предложение #реклама stss.ru О рекламодателе

🤔 Как прикрутить авторизацию кластеру? Для настройки авторизации в кластере Kubernetes можно использовать несколько механизмов, включая роль RBAC (Role-Based Access Control), аутентификацию с использованием токенов, сертификатов, и интеграцию с внешними системами аутентификации, такими как OpenID Connect (OIDC). Рассмотрим основные шаги для настройки RBAC и аутентификации с помощью токенов. 🚩Настройка RBAC (Role-Based Access Control) 1⃣Создание роли (Role) или кластерной роли (ClusterRole) Роли определяют, какие действия разрешены над какими ресурсами в определенном namespace (Role) или во всем кластере (ClusterRole).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: read-pods
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
2⃣Создание роли связывания (RoleBinding) или кластерного связывания роли (ClusterRoleBinding) Связывание роли привязывает роль к конкретному пользователю, группе или субъекту службы (ServiceAccount).
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-pods-binding
subjects:
- kind: User
  name: jane
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: read-pods
  apiGroup: rbac.authorization.k8s.io
🚩Настройка аутентификации с использованием токенов Kubernetes поддерживает несколько методов аутентификации, включая использование токенов. Один из способов — использование токенов ServiceAccount. 1⃣Создание ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-service-account
  namespace: default
2⃣Создание связывания роли для ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods-binding
  namespace: default
subjects:
- kind: ServiceAccount
  name: my-service-account
  namespace: default
roleRef:
  kind: Role
  name: read-pods
  apiGroup: rbac.authorization.k8s.io
3⃣Получение токена ServiceAccount
kubectl get secret $(kubectl get serviceaccount my-service-account -o jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | base64 --decode
🚩Интеграция с внешними системами аутентификации (OIDC) Для интеграции с внешними системами аутентификации, такими как OpenID Connect (OIDC), нужно настроить параметры API-сервера Kubernetes. Настройка API-сервера Добавьте параметры конфигурации OIDC в команду запуска kube-apiserver
--oidc-issuer-url=https://accounts.google.com \
--oidc-client-id=<client-id> \
--oidc-username-claim=email \
--oidc-groups-claim=groups
Ставь 👍 и забирай 📚 Базу знаний

📢 Хотите стать востребованным DevOps специалистом? 🚀 Пройдите короткий опрос из 12 вопросов и получите 3 бесплатных урока п
📢 Хотите стать востребованным DevOps специалистом? 🚀 Пройдите короткий опрос из 12 вопросов и получите 3 бесплатных урока по ключевым темам DevOps! Эти темы помогут вам освоить самые актуальные технологии и методы: - Технология контейнеризации. Введение в Docker - Методология DevOps: стратегии деплоев - Подход инфраструктура как код (Infrastructure as Code) Представьте, что вы сможете автоматизировать процессы, улучшить производительность и повысить свою ценность на рынке труда! Наши бесплатные уроки помогут вам сделать первые шаги к этим результатам! После прохождения опроса вам на почту придут все три урока! 📧Пройти опрос: https://otus.pw/7L9W/ Также сейчас действует скидка 15% на покупку курса "DevOps практики и инструменты" до 24.11.  Успейте приобрести курс со скидкой: https://otus.pw/8x3G/?erid=LjN8KB4Wh #реклама О рекламодателе

🤔 Зачем нужен OOM OOM (Out Of Memory) — это механизм, срабатывающий, когда системе не хватает памяти для работы, что приводит к завершению процессов с высокой нагрузкой. Он защищает систему от полного исчерпания памяти, освобождая ресурсы, чтобы другие процессы могли продолжать работать. OOM-killer используется для выбора и завершения наименее критичных процессов, предотвращая полное зависание системы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специал
+9
Помощь в трудоустройстве в IT-сфере! В России из-за дефицита айтишников запустили бесплатную программу по обучению IT-специалистов. Теперь любой желающий может попробовать себя в IT с полного нуля и начать обучение бесплатно! Узнайте про дальнейшее трудоустройство в ведущие IT-компании для восполнения кадрового дефицита. Для этого нужно: - Перейти по ссылке - Заполнить анкету и ответить на вопросы (занимает менее 3 минут) - На основании ваших ответов вы сразу узнаете, подходит ли вам сфера IT и сможете ли вы в ней работать Перейти на сайт #реклама 16+ urban-university.ru О рекламодателе

🤔 Разница между докером и kubernetes? 🟠Назначение: Docker: Создание и запуск контейнеров. Kubernetes: Оркестрация и управление кластерами контейнеров. 🟠Уровень абстракции: Docker: Работает с контейнерами и образами. Kubernetes: Работает с подами, службами и другими абстракциями для управления контейнерами. 🟠Масштабируемость: Docker: Локальное масштабирование контейнеров. Kubernetes: Автоматическое масштабирование и управление контейнерами на кластерах. 🟠Управление состоянием: Docker: Не отслеживает состояние контейнеров. Kubernetes: Автоматически восстанавливает и управляет состоянием контейнеров. Ставь 👍 и забирай 📚 Базу знаний

🤔 По какой причине inode могут закончиться Inodes заканчиваются, когда файловая система достигает максимального количества файлов, которые можно создать, даже если еще есть свободное место на диске. Это может произойти при наличии большого количества мелких файлов, которые занимают inodes, особенно в файловых системах с ограниченным количеством inodes. Когда inodes исчерпаны, создание новых файлов становится невозможным, несмотря на наличие доступного дискового пространства. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 На каких ключевых особенностях базируется докер? 🟠Контейнеризация: Контейнеры Docker предоставляют легковесную и изолированную среду для выполнения приложений. Контейнеры включают все необходимые для работы приложения зависимости и библиотеки, обеспечивая портативность и консистентность между различными средами (разработка, тестирование, производство). 🟠Образы (Images): Docker образы представляют собой неизменяемые шаблоны, содержащие все, что необходимо для запуска приложения: код, библиотеки, конфигурационные файлы, настройки среды и т.д. Образы можно легко версионировать, передавать и повторно использовать. 🟠Регистры (Registries): Docker использует регистры для хранения и распространения образов. Docker Hub — это публичный регистр, предоставляемый Docker, но также можно создавать собственные приватные регистры. Это упрощает совместное использование и управление образами. 🟠Изоляция и безопасность: Docker использует пространства имен (namespaces) и контрольные группы (cgroups) для изоляции процессов и управления ресурсами. Это обеспечивает контейнерам высокий уровень безопасности и предотвращает конфликт между приложениями, работающими в разных контейнерах. 🟠Легковесность и производительность: В отличие от виртуальных машин, контейнеры не требуют отдельной операционной системы, что делает их намного более легковесными и быстрыми. Это позволяет запускать большее количество контейнеров на одном хосте с меньшими накладными расходами. 🟠Масштабируемость и оркестрация: Docker предоставляет инструменты для управления контейнерами в масштабе, такие как Docker Swarm и интеграция с Kubernetes. Эти инструменты позволяют автоматизировать развертывание, управление, масштабирование и мониторинг контейнеров в распределенных системах. 🟠Управление жизненным циклом приложений: Docker упрощает создание, тестирование и развертывание приложений через контейнеры. Это способствует интеграции и непрерывной доставке (CI/CD), так как контейнеры гарантируют, что приложение будет работать одинаково во всех средах. 🚩Создание образа и запуска контейнера 1⃣Dockerfile
# Используем базовый образ
FROM ubuntu:latest

# Устанавливаем необходимые пакеты
RUN apt-get update && apt-get install -y python3

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

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

# Определяем команду для запуска приложения
CMD ["python3", "app.py"]   
2⃣Сборка образа:
docker build -t my-python-app .
3⃣Запуск контейнера:
docker run -d --name python-app-container my-python-app
Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём разница между TCP и UDP TCP — это протокол с установлением соединения, который гарантирует надежную доставку данных с подтверждением и контролем последовательности. UDP — это протокол без установления соединения, передающий данные быстрее, но без гарантии доставки и контроля порядка. TCP подходит для приложений, требующих надежности (например, HTTP), тогда как UDP используется для быстрой передачи данных, где небольшая потеря пакетов допустима (например, видео- и аудиопотоки). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔Что такое системные вызовы и системные сигналы? 🚩Системные вызовы Это интерфейс между прикладными программами и ядром операционной системы. Они позволяют программам запрашивать услуги у операционной системы, такие как управление файлами, управление процессами, сетевое взаимодействие и управление памятью. 🚩Зачем нужны системные вызовы? 🟠Доступ к ресурсам Программы могут получить доступ к аппаратным ресурсам, таким как диски, сеть, память и устройства ввода/вывода. 🟠Изоляция Обеспечивают изоляцию между прикладными программами и аппаратными ресурсами, что повышает безопасность и стабильность системы. 🟠Управление процессами Позволяют создавать, завершать и управлять процессами. 🚩Примеры системных вызовов open - Открытие файла. read - Чтение данных из файла или устройства. write - Запись данных в файл или устройство. fork - Создание нового процесса. exec - Выполнение программы. kill - Отправка сигнала процессу. wait - Ожидание завершения дочернего процесса.
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
    int fd = open("example.txt", O_RDONLY);
    if (fd == -1) {
        perror("open");
        return 1;
    }

    char buffer[100];
    ssize_t bytesRead = read(fd, buffer, sizeof(buffer));
    if (bytesRead == -1) {
        perror("read");
        return 1;
    }

    write(STDOUT_FILENO, buffer, bytesRead);
    close(fd);
    return 0;
}
🚩Системные сигналы Это механизмы, используемые в Unix-подобных операционных системах для уведомления процессов о различных событиях. Сигналы могут быть отправлены процессом, ядром ОС или пользователем для уведомления о системных событиях или управления процессами. 🚩Зачем нужны системные сигналы? 🟠Уведомление о событиях Уведомляют процессы о событиях, таких как завершение программы, ошибки, прерывания и другие. 🟠Управление процессами Позволяют приостанавливать, возобновлять или завершать процессы. 🟠Обработка исключений Предоставляют механизм для обработки исключительных ситуаций, таких как деление на ноль или доступ к недопустимым адресам памяти. 🚩Примеры системных сигналов SIGINT (2) - Прерывание (обычно отправляется при нажатии Ctrl+C в терминале). SIGTERM (15) - Завершение процесса. SIGKILL (9) - Немедленное завершение процесса. SIGSTOP (19)- Приостановка процесса. SIGCONT (18) - Возобновление приостановленного процесса. SIGSEGV (11) - Сегментационная ошибка (доступ к несуществующей памяти).
#include <stdio.h>
#include <signal.h>
#include <unistd.h>

void handle_signal(int signal) {
    if (signal == SIGINT) {
        printf("Caught SIGINT, exiting...\n");
        _exit(0);
    }
}

int main() {
    signal(SIGINT, handle_signal);

    while (1) {
        printf("Running...\n");
        sleep(1);
    }

    return 0;
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое и нужен ли swap Swap — это область диска, которую операционная система использует как виртуальную память, расширяя возможности оперативной памяти. Он помогает системе работать стабильно, когда физической памяти не хватает, перенося неактивные данные из RAM на диск. Swap полезен для поддержания работы системы под нагрузкой, но его чрезмерное использование может замедлить производительность из-за более медленного доступа к данным на диске. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Курс по frontend-разработке с junior до middle Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку! У
Курс по frontend-разработке с junior до middle Стань специалистом по frontend-разработке с помощью менторов. Оставь заявку! Узнать больше #реклама 16+ ykul.ru О рекламодателе

🤔 Из чего состоит роль из каких папок из каких файлов? Роль в Ansible состоит из набора папок и файлов, которые организуют задачи, переменные, файлы конфигурации, шаблоны и другие ресурсы, необходимые для выполнения конкретной роли. 🚩Описание каждой папки и файла 🟠defaults/main.yml Содержит переменные по умолчанию для роли.
# roles/role_name/defaults/main.yml
some_default_variable: "default_value"     
🟠files/ Содержит статические файлы, которые можно копировать на удаленные хосты. Пример: roles/role_name/files/myfile.conf 🟠handlers/main.yml Содержит хендлеры, которые можно вызывать для выполнения действий, таких как перезапуск службы.
# roles/role_name/handlers/main.yml
- name: restart nginx
  service:
  name: nginx
  state: restarted     
🟠meta/main.yml Содержит метаинформацию о роли, такую как зависимости от других ролей.
# roles/role_name/meta/main.yml
dependencies:
 - role: another_role     
🟠tasks/main.yml Содержит основной список задач, которые выполняются при использовании роли.
# roles/role_name/tasks/main.yml
- name: Install nginx
  apt:
   name: nginx
   state: present     
🟠templates/ Содержит шаблоны Jinja2, которые могут быть использованы для создания конфигурационных файлов с динамическими значениями.
# roles/role_name/templates/nginx.conf.j2
server {
    listen 80;
    server_name {{ nginx_server_name }};
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
}
🟠tests/ Содержит файлы для тестирования роли.
# roles/role_name/tests/test.yml
- hosts: localhost
  roles:
    - role_name
🟠vars/main.yml Содержит переменные с высоким приоритетом, используемые в роли.
# roles/role_name/vars/main.yml
some_variable: "value"
🟠README.md Документация роли, содержащая информацию о том, как использовать роль, примеры и описание переменных. 🚩Пример структуры роли defaults/main.yml
# roles/nginx/defaults/main.yml
nginx_port: 80
vars/main.yml
# roles/nginx/vars/main.yml
nginx_user: "www-data"
tasks/main.yml
# roles/nginx/tasks/main.yml
- name: Install Nginx
  apt:
    name: nginx
    state: present

- name: Configure Nginx
  template:
    src: nginx.conf.j2
    dest: /etc/nginx/nginx.conf

- name: Start Nginx
  service:
    name: nginx
    state: started
    enabled: true
templates/nginx.conf.j2
# roles/nginx/templates/nginx.conf.j2
user {{ nginx_user }};
worker_processes auto;

events {
    worker_connections 1024;
}

http {
    server {
        listen {{ nginx_port }};
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое ELK? ELK — это стек программ, состоящий из Elasticsearch, Logstash и Kibana, предназначенный для сбора, хранения и визуализации логов. Elasticsearch хранит и индексирует данные, Logstash собирает и обрабатывает их, а Kibana позволяет визуализировать и анализировать. ELK часто используется для мониторинга и анализа больших объемов данных в реальном времени. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚Базу Знаний

Получите грант на обучение в Центральном университете Прояви себя, получи грант до 2,8 млн на обучение ИТ и бизнесу в вузе. Для школьников 10-х и 11-х классов, СПО. Подать заявку #реклама apply.centraluniversity.ru О рекламодателе

🤔 Какая иерархия переменных в ролях? 🚩Иерархия переменных в ролях 🟠defaults/main.yml Переменные с самым низким приоритетом. Используются для значений по умолчанию, которые могут быть переопределены. 🟠vars/main.yml Переменные с более высоким приоритетом, чем defaults. Используются для значений, которые не должны быть легко изменены пользователем. 🟠Переменные в задачах (tasks) Переменные, заданные с помощью set_fact в задачах, имеют более высокий приоритет. Также переменные, определенные в локальном контексте задачи. 🚩Общая иерархия переменных 🟠Переменные из роли defaults/main.yml в роли. 🟠Переменные плейбука Переменные из vars плейбука. 🟠Переменные инвентаря Переменные из статического или динамического инвентаря. 🟠Факты Ansible (gathered facts) Динамически собранные данные о хостах. 🟠Переменные командной строки Переменные, переданные через командную строку с помощью флага -e. 🚩Пример defaults/main.yml
# roles/example/defaults/main.yml
example_variable: "default_value"
vars/main.yml
# roles/example/vars/main.yml
example_variable: "vars_value"
Переменная в плейбуке
# playbook.yml
- hosts: all
  roles:
    - role: example
      example_variable: "playbook_value"
Переменная командной строки
ansible-playbook playbook.yml -e "example_variable=command_line_value"
🚩Приоритет переменных 1⃣defaults/main.yml задает example_variable как "default_value". 2⃣vars/main.yml переопределяет это значение на "vars_value". 3⃣Переменная, указанная в плейбуке, переопределяет это значение на "playbook_value". 4⃣Переменная командной строки, переданная при запуске плейбука, переопределяет все предыдущие значения на "command_line_value". Ставь 👍 и забирай 📚 Базу знаний