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

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

前往频道在 Telegram
5 497
订阅者
-724 小时
-127
-1630
帖子存档
⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот кан
⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот каналы для айтишников: 👩‍💻 DevOps: @DevOps ⚙️ Backend: @Backend 🤓 Общее айти: @portalToIT 👩‍💻 Python: @Python 📱 GitHub: @GitHub 👩‍💻 Java: @Java 👩‍💻 C#: @Csharp 👩‍💻 С/С++: @Cpp 👩‍💻 Frontend: @Frontend 🖥 Базы Данных & SQL: @SQL 👩‍💻 Golang: @Golang 👩‍💻 PHP: @PHP 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Разработка игр: @GameDev 🖥 Data Science: @DataScience 🤔 Хакинг & ИБ: @InfoSec 🐞 Тестирование: @QA 📱 Маркетинг: @Marketing 🖥 Дизайн: @Design ➡️ Сохраняйте себе, чтобы не потерять

🤔 Что такое Continuous Deployment?
Anonymous voting

🤔 Какие параметры есть в deployment? Deployment в Kubernetes предоставляет множество параметров, которые можно настроить для управления развертыванием, обновлением и масштабированием приложений. Вот основные параметры, которые можно задать в манифесте Deployment: 🟠apiVersion: Версия API Kubernetes, используемая для объекта Deployment. Например: apiVersion: apps/v1 🟠kind: Тип объекта, в данном случае Deployment. Напримерkind: Deployment 🟠metadata: Метаинформация о Deployment, такая как имя и метки.
metadata:
  name: myapp-deployment
  labels:
    app: myapp  
🟠spec: Спецификация Deployment, включающая следующие параметры: 🚩Параметры спецификации (spec) 🟠replicas: Количество реплик подов, которые Deployment должен поддерживать. Например replicas: 3 🟠selector: Указывает метки, которые должны быть на подах, управляемых этим Deployment.
selector:
  matchLabels:
    app: myapp
🟠template: Шаблон пода, который используется для создания новых реплик.
template:
  metadata:
    labels:
      app: myapp
  spec:
    containers:
    - name: myapp-container
      image: myapp:latest
      ports:
      - containerPort: 80
🟠strategy: Определяет стратегию обновления подов.
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 1
    maxSurge: 1
🟠minReadySeconds: Минимальное количество секунд, которое новый под должен быть в состоянии "Ready" перед тем, как он будет считаться доступным. Напримрер, minReadySeconds: 30 🟠revisionHistoryLimit: Количество старых ReplicaSets, которые нужно сохранить для возможности отката. Например, revisionHistoryLimit: 10 🟠paused: Указывает, должно ли развертывание быть приостановлено. Например, paused: false 🟠progressDeadlineSeconds: Максимальное время в секундах, в течение которого развертывание должно завершиться. Например, progressDeadlineSeconds: 600 Ставь 👍 и забирай 📚 Базу знаний

Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения
+4
Senior-разработчик создал крутейший канал про SQL Благодаря простым картинкам даже новичок научится разрабатывать приложения с использованием баз данных. Присоединяйтесь: @SQL

🤔 Какую роль выполняет ELK Stack в DevOps?
Anonymous voting

🔥 Ресурсы для подготовки к работе в IT! 🔥 1️⃣ База собеседований IT – это уникальная коллекция собеседований от реальных топовых компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и многие другие! 🏢 Мы собрали 150+ собеседований, чтобы ты мог подготовиться к интервью с уверенностью и успехом. 2️⃣ База тестовых заданий – твоё секретное оружие для успешного прохождения этапов отбора! 📋 Здесь ты найдёшь 121+ тестовых заданий от тех же топовых компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries. Решай реальные задачи и набирайся опыта для будущих собеседований! 🎯 Присоединяйся к базам и прокачай свои шансы на успешное трудоустройство!

🤔 На чём строится изоляция докера? Изоляция в Docker достигается за счет использования нескольких ключевых технологий и механизмов, которые обеспечивают контейнеры с уровнем изоляции, сопоставимым с виртуальными машинами, но с меньшими накладными расходами. Основные технологии, на которых строится изоляция Docker, включают: 🟠Пространства имен (Namespaces): PID namespace: Изолирует идентификаторы процессов (PID), позволяя контейнерам иметь свои собственные процессы, которые не видны за пределами контейнера. Network namespace: Изолирует сетевые интерфейсы, IP-адреса, порты и маршруты контейнера от других контейнеров и хоста. Mount namespace: Изолирует файловую систему контейнера, позволяя ему видеть только свои собственные файловые системы. UTS namespace: Изолирует имя хоста и доменное имя, позволяя контейнеру иметь свое собственное имя хоста. IPC namespace: Изолирует объекты межпроцессного взаимодействия (например, очереди сообщений, семафоры и разделяемую память). User namespace: Изолирует идентификаторы пользователей и групп, позволяя запускать процессы в контейнере с привилегиями без необходимости предоставлять эти привилегии на хосте. 🟠Контрольные группы (Cgroups): Контрольные группы управляют использованием ресурсов контейнером, таких как процессорное время, память, дисковый ввод-вывод и сетевые ресурсы. Это позволяет ограничивать и отслеживать потребление ресурсов каждым контейнером, обеспечивая стабильную работу системы. 🟠Union File Systems (UnionFS): Docker использует UnionFS (например, OverlayFS, AUFS) для создания легковесных и быстрых файловых систем. Это позволяет контейнерам делить общие слои, что значительно снижает использование дискового пространства и ускоряет создание и запуск контейнеров. 🟠Сетевые интерфейсы и мосты (Bridges): Docker создает изолированные сетевые интерфейсы для каждого контейнера, позволяя им общаться с внешним миром через мостовые интерфейсы (bridges). Это обеспечивает сетевую изоляцию и позволяет создавать сложные сетевые топологии. 🚩Пример настройки изоляции Рассмотрим пример, где создается контейнер с ограничением ресурсов и изоляцией:
docker run -d --name isolated_container \
  --cpus=".5" \
  --memory="256m" \
  --memory-swap="256m" \
  --hostname="container_host" \
  ubuntu:latest
В этом примере: --cpus=".5" ограничивает использование процессора до 50%. --memory="256m" устанавливает лимит использования памяти на 256 MB. --memory-swap="256m" устанавливает лимит swap памяти на 256 MB. --hostname="container_host" задает имя хоста контейнера. Ставь 👍 и забирай 📚 Базу знаний

CodHub теперь в Telegram! Бесплатные обучающие материалы, которые лучше платных — книги, ресурсы, статьи и курсы топовых вузо
CodHub теперь в Telegram! Бесплатные обучающие материалы, которые лучше платных — книги, ресурсы, статьи и курсы топовых вузов страны тут: 👩‍💻 Материалы по Python 👩‍💻 Материалы по Frontend 👩‍💻 Материалы по Java 👩‍💻 Материалы по С# 👩‍💻 Материалы по C/C++ 👩‍💻 Материалы по Хакингу 🖥 Материалы по SQL 👩‍💻 Материалы по Kotlin/Swift 👩‍💻 Материалы по Linux 🐞 Материалы по QA 👩‍💻 Материалы по Go 👩‍💻 Материалы по PHP Подписываетесь: @CodHub_tg

🤔 Что такое Jenkins?
Anonymous voting

🤔 Какой основной параметр у stateful set? Это объект, который управляет развертыванием и масштабированием наборов подов с гарантией их уникальных идентификаторов и стабильных сетевых идентификаторов. Основной параметр, который определяет поведение StatefulSet, это `serviceName`. 🚩Основной параметр: serviceName Это имя службы (Service), связанной с StatefulSet, которая управляет доступом к подам. Эта служба используется для обеспечения стабильных сетевых идентификаторов для подов. 🚩Важные параметры и их функции replicas: Определяет количество реплик подов, которые должен поддерживать StatefulSet.
replicas: 3
selector: Указывает метки, которые должны быть на подах, управляемых StatefulSet.
selector:
matchLabels:
app: myapp     
template: Шаблон пода, который используется для создания новых реплик.
template:
  metadata:
    labels:
      app: myapp
  spec:
    containers:
    - name: myapp-container
      image: myapp:latest
      ports:
      - containerPort: 80
volumeClaimTemplates: Шаблоны PersistentVolumeClaim для создания постоянных хранилищ для каждого пода.
volumeClaimTemplates:
- metadata:
    name: myapp-storage
  spec:
    accessModes: [ "ReadWriteOnce" ]
    resources:
      requests:
        storage: 1Gi
🚩Пример конфигурации StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: myapp-statefulset
spec:
  serviceName: "myapp-service"
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: myapp:latest
        ports:
        - containerPort: 80
        volumeMounts:
        - name: myapp-storage
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: myapp-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
🚩Объяснение полей apiVersion: Версия API Kubernetes для объекта StatefulSet. kind: Тип объекта, в данном случае StatefulSet. metadata: Метаинформация о StatefulSet, включая имя. spec: Спецификация StatefulSet. serviceName: Имя службы, связанной с StatefulSet, обеспечивающей стабильные сетевые идентификаторы. replicas: Количество реплик подов. selector: Метки для выбора подов. template: Шаблон пода, включающий метаданные и спецификацию контейнеров. volumeClaimTemplates: Шаблоны для создания PersistentVolumeClaim. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какую функцию выполняет инструмент Prometheus в DevOps?
Anonymous voting

🤔 Какой опыт работы со stateful set? StatefulSet в Kubernetes — это объект, который управляет развертыванием и масштабированием наборов подов, и обеспечивает их уникальные идентификаторы и постоянное хранение данных. . 🚩Основные возможности StatefulSet 🟠Уникальные идентификаторы подов: Каждый под в StatefulSet имеет стабильный уникальный идентификатор, который сохраняется при перезапусках. 🟠Порядковый запуск и завершение: Поды запускаются и завершаются в определенном порядке, что важно для приложений. 🟠Стабильные сетевые идентификаторы: Каждый под имеет постоянное DNS-имя, что упрощает связь между компонентами приложения. 🟠Постоянное хранилище: StatefulSet использует PersistentVolume (PV) для хранения данных, что обеспечивает сохранение данных при перезапусках или пересоздании подов. 🚩Пример использования Запуск базы данных Один из наиболее распространенных случаев использования StatefulSet — это развертывание и управление кластерами баз данных, такими как Cassandra, MySQL или PostgreSQL.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql"
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: mysql-persistent-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
Объяснение полей конфигурации 🟠apiVersion: Версия API Kubernetes для объекта StatefulSet. 🟠kind: Тип объекта, в данном случае StatefulSet. 🟠metadata: Метаинформация о StatefulSet, включая имя. 🟠spec: Спецификация StatefulSet. 🟠serviceName: Имя службы, используемой для управления доступом к подам. 🟠replicas: Количество реплик, которые StatefulSet должен поддерживать. 🟠selector: Метки для выбора подов, управляемых этим StatefulSet. 🟠template: Шаблон пода, включающий метаданные и спецификацию контейнеров. 🚩Опыт использования 1⃣Развертывание кластеров баз данных: Успешное развертывание и управление кластерами MySQL и Cassandra, обеспечивая высокую доступность и отказоустойчивость. 2⃣Поддержание состояния приложений: Развертывание приложений, требующих сохранения состояния, таких как Zookeeper и Kafka. 3⃣Порядковое обновление подов: Управление порядковым обновлением подов для обеспечения правильной последовательности операций и минимизации времени простоя. 4⃣Мониторинг и масштабирование: Настройка мониторинга состояния подов и автоматическое масштабирование StatefulSet для адаптации к изменяющимся нагрузкам. 🚩ПлюсыСтабильность и предсказуемость: StatefulSet обеспечивает стабильные сетевые идентификаторы и уникальные имена для подов, что упрощает управление состоянием. ➕Постоянство данных: Использование PersistentVolume гарантирует, что данные сохраняются между перезапусками подов. Ставь 👍 и забирай 📚 Базу знаний

Знаем, что многие тут хотят прокачать навыки прохождения DevOps собесов. 💪 Советуем бесплатный мета-курс Devops Roadmap - эт
Знаем, что многие тут хотят прокачать навыки прохождения DevOps собесов. 💪 Советуем бесплатный мета-курс Devops Roadmap - это расширенный чек-лист, который поможет сориентироваться в мире DevOps и покорить все собеседования. 👀 В мета-курсе перечислены все основные разделы и навыки, которыми должен обладать DevOps инженер: от Linux до программирования в удобном формате. 👽 Кстати, бонусом крутой канал о девопс. Там тоже самые свежие IT-новости, полезные советы от DevOps-инженера с 20-летним стажем, эксклюзивные материалы, релизы топовых инструментов, обзоры вакансий и личный взгляд на девопс-сферу. 📌 Ну а тем, кто хочет комплексно прокачаться под руководством наставника - индивидуальная программа в которую дополнительно включен список популярных вопросов/ответов на собеседованиях, собранный на практике.

🤔 Что такое Continuous Integration (CI)?
Anonymous voting

Конкурс IT-стартапов Startup2B от Yandex Cloud Участвуй в конкурсе технологичных компаний. Получи крупных клиентов от Яндекса
Конкурс IT-стартапов Startup2B от Yandex Cloud Участвуй в конкурсе технологичных компаний. Получи крупных клиентов от Яндекса, RITA и ФРИИ. Финалисты конкурса Startup2B могут получить экспертную поддержку и консультацию IT-архитекторов Яндекса, а ещё гранты до 1 000 000 рублей на облачную инфраструктуру и сервисы по программе Yandex Cloud Boost. Регистрация участников — до 11 октября Подать заявку #реклама 16+ yandex.cloud О рекламодателе

🤔 Почему плохо запускать контейнер от рута? Запуск контейнеров от имени пользователя root (рута) в Docker является обычной практикой, но это может привести к серьезным проблемам безопасности. Вот основные причины, почему это считается плохой практикой: 🟠Повышение рисков безопасности: Эксплуатация уязвимостей: Если злоумышленник получает доступ к контейнеру, запущенному от имени root, он может легко использовать уязвимости контейнера для атаки на хост-систему. Злоумышленники: Контейнеры могут содержать уязвимые или злонамеренные коды, которые при запуске с привилегиями root могут получить доступ к чувствительной информации или вызвать сбои. 🟠Отсутствие изоляции: Гостевая изоляция: Контейнеры должны быть изолированы от хост-системы. Запуск контейнера от имени root нарушает эту изоляцию, так как root внутри контейнера — это также root на хосте. Повышенные привилегии: Контейнеры, запущенные от имени root, могут иметь доступ к системным ресурсам, что увеличивает риск нарушения безопасности. 🟠Нарушение принципа наименьших привилегий: Принцип наименьших привилегий: Этот принцип гласит, что процесс должен иметь только те привилегии, которые необходимы для выполнения его задач. Запуск контейнера от имени root нарушает этот принцип, предоставляя ему избыточные права. 🚩Примеры проблем 🟠Повышение привилегий: Если в контейнере, запущенном от имени root, найдена уязвимость, злоумышленник может использовать ее для выполнения команд с привилегиями root на хосте, что может привести к серьезным нарушениям безопасности. 🟠Доступ к файловой системе хоста: Контейнер, запущенный от имени root, может получить доступ к критически важным файлам хостовой системы, изменять их или удалять, что может привести к нарушению работы всей системы. 🚩Как избежать запуска контейнеров от рута Использование непривилегированных пользователей: В Dockerfile можно создать пользователя с ограниченными привилегиями и переключиться на него.
FROM ubuntu:20.04
RUN useradd -m myuser
USER myuser
CMD ["myapp"]     
Использование флага --user: При запуске контейнера можно использовать флаг --user, чтобы указать непривилегированного пользователя.
docker run --user 1000:1000 myapp
Использование механизмов безопасности Docker: Использование профилей seccomp для ограничения системных вызовов. Использование AppArmor или SELinux для ограничения доступа контейнеров к системным ресурсам. Ставь 👍 и забирай 📚 Базу знаний

👩‍💻 Программирование уже в Telegram! Вот 10 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё напра
👩‍💻 Программирование уже в Telegram! Вот 10 обучающих каналов по самым востребованным направлениям в IT. Выбирай своё направление: 👩‍💻 Python: @python_ready 👩‍💻 Java: @java_ready 👩‍💻 C/C++: @cpp_ready 👩‍💻 C#: @csharp_ready 👩‍💻 Backend: @backend_ready 👩‍💻 Frontend: @code_ready 🖥 Базы Данных & SQL: @sql_ready 👩‍💻 Весь IT: @roadmap_ready 📖 IT Архив: @archive_ready 🖥 Design: @time_design 📌 Ресурсы, гайды, шпаргалки, книги и задачи для каждого языка программирования.

🤔 Что такое микросервисы в DevOps?
Anonymous voting

Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а зап
Обучаем Java-разработчиков оплата после выхода на работу В Kata Academy можно выучиться на Java-разработчика бесплатно, а заплатить уже после трудоустройства по специальности из фактической зарплаты. Если задуматься, то все в выигрыше: — ты получаешь работу в Москве или Санкт-Петербурге с хорошей зарплатой, мы получаем процент за инвестиции в тебя; — в наших интересах научить тебя так, чтобы твоя зарплата была как можно выше; — мы прокачиваем твои навыки еще 2 года после курса: проводим выездные мероприятия и мастер-классы — и доходы наших выпускников растут; — мы не зависим от банков и их рассрочек — кризис не повлиял на доступность курсов. Чтобы попасть на курс, нужно выполнить небольшое тестовое задание. Переходи по ссылке и оставляй заявку! Узнать больше #реклама 16+ kata.academy О рекламодателе

🤔 Какие команды порождают слой? В Docker образ состоит из нескольких слоев, каждый из которых представляет собой изменения, внесенные в файловую систему контейнера. Эти слои создаются при выполнении команд в Dockerfile. Слои позволяют эффективно использовать кэширование и делиться образами. Основные команды, которые создают слои, включают: 🚩Команды и их влияние FROM — это первая команда в Dockerfile, которая указывает базовый образ для последующих инструкций. Каждый FROM создает новый базовый слой.
FROM ubuntu:20.04
RUN — эта команда выполняет команды в новом слое поверх текущего образа и создает новый образ. Часто используется для установки пакетов и выполнения скриптов.
RUN apt-get update && apt-get install -y python3
COPY — эта команда копирует файлы и директории из контекста сборки (локальной файловой системы) в файловую систему контейнера. Она создает новый слой с добавленными или измененными файлами.
COPY . /app
ADD — аналогична команде COPY, но с дополнительными возможностями. Она может извлекать архивы и загружать файлы из URL. Эта команда также создает новый слой.
ADD myfile.tar.gz /app
🚩Команды, не создающие новые слои - CMD: Определяет команду по умолчанию для выполнения при запуске контейнера. - ENTRYPOINT: Устанавливает исполняемую команду для контейнера. - ENV: Устанавливает переменные окружения. - EXPOSE: Указывает на порты, которые контейнер будет слушать. - WORKDIR: Устанавливает рабочую директорию для последующих команд.
ENV PATH=/app/bin:$PATH
EXPOSE 8080
WORKDIR /app
🚩Кэширование слоев Docker использует кэширование для ускорения сборки образов. Если инструкция и контекст для команды не изменились, Docker использует закэшированный слой вместо создания нового.
# Если requirements.txt не изменился, этот слой будет закэширован
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt

# Остальные файлы копируются
COPY . /app
Ставь 👍 и забирай 📚 Базу знаний