В чём разница между git rebase и git merge ?
Спросят с вероятностью 20%
Команды git rebase и git merge используются для интеграции изменений из одной ветки в другую, но они делают это разными способами, и каждый из этих способов имеет свои преимущества и недостатки.
Git Merge
Берет содержимое двух веток (обычно текущей ветки и одной, которую мы хотим смержить) и объединяет их вместе. При этом создается новый "merge commit", который содержит изменения обеих веток.
Пример использования:
Преимущества:
✅Сохраняет историческую точность того, как изменения были внедрены.
✅Легко понять, когда определенные функции были добавлены.
Недостатки:
✅История коммитов может стать сложной и запутанной, особенно в активно разрабатываемых проектах с множеством параллельных веток.
Git Rebase
Переписывает историю изменений путем перемещения или "перебазирования" ряда коммитов на новую базу. Это может быть использовано для переноса всей ветки на вершину другой ветки.
Пример использования:
Преимущества:
✅Создает более чистую, линейную историю коммитов.
✅Упрощает процесс отладки путем удаления лишних мерж-коммитов.
✅Изменения из базовой ветки можно интегрировать в текущую ветку, что упрощает последующий merge.
Недостатки:
✅Переписывание истории может создать проблемы в общедоступных репозиториях. Если коммиты уже были опубликованы и кто-то другой начал их использовать, rebase может усложнить совместную работу.
✅Требует более тщательного понимания Git, так как легко можно потерять коммиты или создать дубликаты.
Когда их использовать
Merge:
✅Когда важно сохранить точную историю изменений.
✅В общих ветках, таких как
Rebase:
✅Для локальной работы над изменениями перед интеграцией их в основную ветку, чтобы история была более чистой и понятной.
✅Когда нужно включить последние изменения из основной ветки в вашу фича-ветку перед ее слиянием.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 20%
Команды git rebase и git merge используются для интеграции изменений из одной ветки в другую, но они делают это разными способами, и каждый из этих способов имеет свои преимущества и недостатки.
Git Merge
Берет содержимое двух веток (обычно текущей ветки и одной, которую мы хотим смержить) и объединяет их вместе. При этом создается новый "merge commit", который содержит изменения обеих веток.
Пример использования:
git checkout main
git merge feature-branch
Преимущества:
✅Сохраняет историческую точность того, как изменения были внедрены.
✅Легко понять, когда определенные функции были добавлены.
Недостатки:
✅История коммитов может стать сложной и запутанной, особенно в активно разрабатываемых проектах с множеством параллельных веток.
Git Rebase
Переписывает историю изменений путем перемещения или "перебазирования" ряда коммитов на новую базу. Это может быть использовано для переноса всей ветки на вершину другой ветки.
Пример использования:
git checkout feature-branch
git rebase main
Преимущества:
✅Создает более чистую, линейную историю коммитов.
✅Упрощает процесс отладки путем удаления лишних мерж-коммитов.
✅Изменения из базовой ветки можно интегрировать в текущую ветку, что упрощает последующий merge.
Недостатки:
✅Переписывание истории может создать проблемы в общедоступных репозиториях. Если коммиты уже были опубликованы и кто-то другой начал их использовать, rebase может усложнить совместную работу.
✅Требует более тщательного понимания Git, так как легко можно потерять коммиты или создать дубликаты.
Когда их использовать
Merge:
✅Когда важно сохранить точную историю изменений.
✅В общих ветках, таких как
main
или develop
, где сохранение истории важно для всех участников проекта.Rebase:
✅Для локальной работы над изменениями перед интеграцией их в основную ветку, чтобы история была более чистой и понятной.
✅Когда нужно включить последние изменения из основной ветки в вашу фича-ветку перед ее слиянием.
git merge
сохраняет полную историю ветвлений и слияний, что добавляет сложности в историю коммитов, но упрощает отслеживание изменений. Создает более чистую историю за счет перемещения коммитов, что может упростить понимание истории изменений, но может создавать сложности при совместной работе в общедоступных ветках.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥5
Anonymous Quiz
90%
Kubernetes
1%
Vagrant
8%
Docker
0%
Consul
Что дает load balancer ?
Спросят с вероятностью 13%
Балансировщик нагрузки (Load Balancer) — это ключевой компонент современных распределённых систем, предназначенный для улучшения распределения входящего сетевого трафика между несколькими серверами (или другими ресурсами). Это устройство или программное решение помогает увеличить надёжность, доступность и производительность приложений и сервисов, обрабатывая запросы пользователей более эффективно и гарантируя, что нагрузка распределяется равномерно между серверами.
Основные функции и преимущества:
1️⃣Распределение трафика: Нагрузки равномерно распределяет входящий трафик между всеми серверами в пуле, что предотвращает перегрузку отдельных серверов и оптимизирует использование ресурсов.
2️⃣Повышение доступности и надёжности: Путём автоматического перенаправления трафика с недоступных серверов на здоровые, балансировщик нагрузки увеличивает общую доступность и надёжность приложения. Это особенно важно для критически важных систем, где требуется высокий уровень доступности.
3️⃣Масштабируемость: Нагрузки позволяет легко добавлять или удалять серверы из пула без прерывания обслуживания. Это делает систему гибкой и легко масштабируемой, что особенно важно при росте или изменении нагрузки.
4️⃣Эффективность обработки: Нагрузки могут оптимизировать использование ресурсов сервера, распределяя задачи (например, комплексные вычисления или обработку больших объемов данных) между серверами, которые наиболее способны их выполнить.
5️⃣Управление сессиями: Некоторые нагрузки могут управлять сессиями пользователей, например, сохраняя сессии на определенном сервере, чтобы обеспечить согласованность взаимодействия пользователя с приложением.
Типы:
1️⃣Аппаратные (Hardware): Физические устройства, оптимизированные для обработки сетевого трафика и балансировки нагрузки на высокой скорости.
2️⃣Программные (Software): Приложения, которые могут быть запущены на обычных серверах или виртуальных машинах. Они более гибкие и легко интегрируются с облачными технологиями.
3️⃣Балансировщики на уровне приложений (Layer 7): Работают на высоком уровне OSI модели, могут принимать решения на основе содержимого запросов (URL, заголовки HTTP).
4️⃣Балансировщики на транспортном уровне (Layer 4): Работают на более низком уровне, распределяя трафик на основе адреса IP и порта без анализа содержимого пакетов.
Балансировщики нагрузки являются неотъемлемой частью архитектуры большинства высоконагруженных веб-приложений, микросервисов и облачных решений, поскольку они обеспечивают стабильную и эффективную работу системы даже при высоких нагрузках и сбоях отдельных компонентов.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Балансировщик нагрузки (Load Balancer) — это ключевой компонент современных распределённых систем, предназначенный для улучшения распределения входящего сетевого трафика между несколькими серверами (или другими ресурсами). Это устройство или программное решение помогает увеличить надёжность, доступность и производительность приложений и сервисов, обрабатывая запросы пользователей более эффективно и гарантируя, что нагрузка распределяется равномерно между серверами.
Основные функции и преимущества:
1️⃣Распределение трафика: Нагрузки равномерно распределяет входящий трафик между всеми серверами в пуле, что предотвращает перегрузку отдельных серверов и оптимизирует использование ресурсов.
2️⃣Повышение доступности и надёжности: Путём автоматического перенаправления трафика с недоступных серверов на здоровые, балансировщик нагрузки увеличивает общую доступность и надёжность приложения. Это особенно важно для критически важных систем, где требуется высокий уровень доступности.
3️⃣Масштабируемость: Нагрузки позволяет легко добавлять или удалять серверы из пула без прерывания обслуживания. Это делает систему гибкой и легко масштабируемой, что особенно важно при росте или изменении нагрузки.
4️⃣Эффективность обработки: Нагрузки могут оптимизировать использование ресурсов сервера, распределяя задачи (например, комплексные вычисления или обработку больших объемов данных) между серверами, которые наиболее способны их выполнить.
5️⃣Управление сессиями: Некоторые нагрузки могут управлять сессиями пользователей, например, сохраняя сессии на определенном сервере, чтобы обеспечить согласованность взаимодействия пользователя с приложением.
Типы:
1️⃣Аппаратные (Hardware): Физические устройства, оптимизированные для обработки сетевого трафика и балансировки нагрузки на высокой скорости.
2️⃣Программные (Software): Приложения, которые могут быть запущены на обычных серверах или виртуальных машинах. Они более гибкие и легко интегрируются с облачными технологиями.
3️⃣Балансировщики на уровне приложений (Layer 7): Работают на высоком уровне OSI модели, могут принимать решения на основе содержимого запросов (URL, заголовки HTTP).
4️⃣Балансировщики на транспортном уровне (Layer 4): Работают на более низком уровне, распределяя трафик на основе адреса IP и порта без анализа содержимого пакетов.
Балансировщики нагрузки являются неотъемлемой частью архитектуры большинства высоконагруженных веб-приложений, микросервисов и облачных решений, поскольку они обеспечивают стабильную и эффективную работу системы даже при высоких нагрузках и сбоях отдельных компонентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Anonymous Quiz
1%
HTTP
7%
FTP
27%
SSH
65%
SFTP
Что такое Kata Containers ?
Спросят с вероятностью 13%
Kata Containers — это проект с открытым исходным кодом, который обеспечивает легковесные виртуальные машины, используя технологию контейнеризации для запуска каждого контейнера внутри своей собственной изолированной виртуальной машины (VM). Это решение сочетает в себе скорость и практичность контейнеров с безопасностью и полной изоляцией, которые предоставляют виртуальные машины.
Основные характеристики и преимущества:
1️⃣Безопасность: Обеспечивает дополнительный уровень безопасности за счет изоляции контейнеров в отдельных виртуальных машинах, что уменьшает риск взаимодействия контейнеров и воздействия на хост-систему.
2️⃣Совместимость: Совместимы со стандартами OCI (Open Container Initiative), что позволяет использовать их с такими системами, как Docker и Kubernetes, без необходимости изменения существующих рабочих процессов или инструментов.
3️⃣Производительность: Несмотря на то, что они запускают контейнеры внутри виртуальных машин, они стараются максимально сократить накладные расходы, связанные с виртуализацией, чтобы приблизить производительность к традиционным контейнерам.
4️⃣Изоляция: Поскольку каждый контейнер работает в своей виртуальной машине, Kata Containers предлагает улучшенную изоляцию и модель безопасности по сравнению с традиционными контейнерами, которые делят ядро операционной системы хоста.
Архитектура и компоненты
Работает, используя легковесное ядро виртуализации, которое создает виртуальные машины для каждого контейнера. Основные компоненты включают:
✅Kata Agent: Запущен внутри виртуальной машины, управляет контейнерами и обрабатывает запросы от хоста.
✅Kata Runtime: Замена стандартного контейнерного рантайма (например, runc), который используется для управления жизненным циклом контейнеров в их виртуальных машинах.
✅Kata Shim: Запускается на хост-машинах и предоставляет связь между контейнером и виртуальной машиной.
✅Kata Proxy: Перенаправляет ввод-вывод между контейнерами и хост-системой.
Использование
Можно использовать в средах, где требуется строгая безопасность и изоляция, но при этом важна совместимость с экосистемой контейнеров. Это может быть полезно в мульти-тенантных средах, таких как публичные облачные службы, где высокий уровень изоляции помогает предотвратить вредоносные действия и утечки данных между разными клиентами.
Kata Containers предоставляет гибридный подход к виртуализации, комбинируя безопасность виртуальных машин с легкостью и удобством использования контейнеров. Это делает их идеальным выбором для использования в высоко безопасных или сильно регулируемых средах, где требуется строгая изоляция при сохранении гибкости контейнерных технологий.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Kata Containers — это проект с открытым исходным кодом, который обеспечивает легковесные виртуальные машины, используя технологию контейнеризации для запуска каждого контейнера внутри своей собственной изолированной виртуальной машины (VM). Это решение сочетает в себе скорость и практичность контейнеров с безопасностью и полной изоляцией, которые предоставляют виртуальные машины.
Основные характеристики и преимущества:
1️⃣Безопасность: Обеспечивает дополнительный уровень безопасности за счет изоляции контейнеров в отдельных виртуальных машинах, что уменьшает риск взаимодействия контейнеров и воздействия на хост-систему.
2️⃣Совместимость: Совместимы со стандартами OCI (Open Container Initiative), что позволяет использовать их с такими системами, как Docker и Kubernetes, без необходимости изменения существующих рабочих процессов или инструментов.
3️⃣Производительность: Несмотря на то, что они запускают контейнеры внутри виртуальных машин, они стараются максимально сократить накладные расходы, связанные с виртуализацией, чтобы приблизить производительность к традиционным контейнерам.
4️⃣Изоляция: Поскольку каждый контейнер работает в своей виртуальной машине, Kata Containers предлагает улучшенную изоляцию и модель безопасности по сравнению с традиционными контейнерами, которые делят ядро операционной системы хоста.
Архитектура и компоненты
Работает, используя легковесное ядро виртуализации, которое создает виртуальные машины для каждого контейнера. Основные компоненты включают:
✅Kata Agent: Запущен внутри виртуальной машины, управляет контейнерами и обрабатывает запросы от хоста.
✅Kata Runtime: Замена стандартного контейнерного рантайма (например, runc), который используется для управления жизненным циклом контейнеров в их виртуальных машинах.
✅Kata Shim: Запускается на хост-машинах и предоставляет связь между контейнером и виртуальной машиной.
✅Kata Proxy: Перенаправляет ввод-вывод между контейнерами и хост-системой.
Использование
Можно использовать в средах, где требуется строгая безопасность и изоляция, но при этом важна совместимость с экосистемой контейнеров. Это может быть полезно в мульти-тенантных средах, таких как публичные облачные службы, где высокий уровень изоляции помогает предотвратить вредоносные действия и утечки данных между разными клиентами.
Kata Containers предоставляет гибридный подход к виртуализации, комбинируя безопасность виртуальных машин с легкостью и удобством использования контейнеров. Это делает их идеальным выбором для использования в высоко безопасных или сильно регулируемых средах, где требуется строгая изоляция при сохранении гибкости контейнерных технологий.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯6❤1
Anonymous Quiz
13%
Round Robin
5%
Least Connections
76%
Content-based
6%
IP Hash
👍3
Что такое squash ?
Спросят с вероятностью 13%
Термин "squash" может иметь разные значения в различных контекстах. Вот два наиболее распространенных применения этого термина:
1️⃣Squash в Git
Относится к процессу объединения нескольких коммитов в один. Эта операция часто используется для упорядочивания истории изменений перед слиянием веток в основную ветку. Squash коммиты можно выполнить с помощью интерактивного режима rebase.
Пример:
Чтобы "squash" несколько коммитов в Git, вы можете использовать команду
Эта команда откроет текстовый редактор со списком последних трех коммитов, где вы можете указать, какие коммиты следует "squash".
В редакторе, вы увидите что-то вроде:
Чтобы совместить эти коммиты в один, вы можете изменить слово
После сохранения и закрытия редактора Git позволит вам сформировать новое сообщение коммита для результирующего объединенного коммита.
2️⃣SquashFS
Это сжатая файловая система для Linux, используемая для создания сжатых архивов файлов и директорий. Особенно полезен для создания образов файловых систем, которые можно монтировать в режиме чтения для различных приложений, таких как LiveCD, системы восстановления и встроенные системы. Эта файловая система поддерживает высокое сжатие данных, что позволяет существенно экономить место на диске.
Обеспечивает быстрый доступ к данным при низком использовании процессорных ресурсов для декомпрессии, что делает ее идеальной для использования в сценариях с ограниченными ресурсами, например, в встроенных системах.
"squash" может иметь различные значения в зависимости от контекста, но во всех случаях он связан с идеей компактности или объединения элементов в одно целое.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Термин "squash" может иметь разные значения в различных контекстах. Вот два наиболее распространенных применения этого термина:
1️⃣Squash в Git
Относится к процессу объединения нескольких коммитов в один. Эта операция часто используется для упорядочивания истории изменений перед слиянием веток в основную ветку. Squash коммиты можно выполнить с помощью интерактивного режима rebase.
Пример:
Чтобы "squash" несколько коммитов в Git, вы можете использовать команду
git rebase -i
, которая позволяет вам выбрать, какие коммиты объединить:git rebase -i HEAD~3
Эта команда откроет текстовый редактор со списком последних трех коммитов, где вы можете указать, какие коммиты следует "squash".
В редакторе, вы увидите что-то вроде:
pick e3a1b35 Изменение 1
pick 7ac9a67 Изменение 2
pick 1d2a3f5 Изменение 3
Чтобы совместить эти коммиты в один, вы можете изменить слово
pick
на squash
для всех коммитов, которые нужно объединить:pick e3a1b35 Изменение 1
squash 7ac9a67 Изменение 2
squash 1d2a3f5 Изменение 3
После сохранения и закрытия редактора Git позволит вам сформировать новое сообщение коммита для результирующего объединенного коммита.
2️⃣SquashFS
Это сжатая файловая система для Linux, используемая для создания сжатых архивов файлов и директорий. Особенно полезен для создания образов файловых систем, которые можно монтировать в режиме чтения для различных приложений, таких как LiveCD, системы восстановления и встроенные системы. Эта файловая система поддерживает высокое сжатие данных, что позволяет существенно экономить место на диске.
Обеспечивает быстрый доступ к данным при низком использовании процессорных ресурсов для декомпрессии, что делает ее идеальной для использования в сценариях с ограниченными ресурсами, например, в встроенных системах.
"squash" может иметь различные значения в зависимости от контекста, но во всех случаях он связан с идеей компактности или объединения элементов в одно целое.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Anonymous Quiz
35%
AES-256
17%
RSA-1024
41%
SHA-256
6%
Blowfish
Что такое volume и persistent volume и какие есть типы этих вольюмов ?
Спросят с вероятностью 13%
"volume" и "persistent volume" относятся к системам хранения данных, которые используются для управления данными приложений. Они играют важную роль в управлении состоянием и данными в среде контейнеров, где основной контейнер может быть временным и эфемерным.
Volume
Это директория, возможно, с данными, которая доступна контейнеру в поде. Эта директория может быть подключена из различных источников или создана внутри самого Kubernetes.
Типы:
✅emptyDir: Временный каталог, который удаляется при удалении пода. Используется для хранения данных, которые не нужно сохранять после остановки пода.
✅hostPath: Монтирует файловую систему хоста в под, что может быть полезно для доступа к системным файлам хоста.
✅configMap, secret: Используются для хранения конфигурационных данных и конфиденциальной информации, соответственно.
✅nfs: Подключает NFS-шару.
✅persistentVolumeClaim (PVC): Используется для монтирования постоянного хранилища в под.
Persistent Volume (PV)
Это ресурс в кластере, который администратор кластера предварительно настраивает. Он представляет собой сегмент хранилища, который был выделен для хранения и доступен для использования всеми подами.
Типы:
✅GCE Persistent Disks: Диски, предоставляемые Google Cloud.
✅AWS EBS: Блочные устройства хранения от Amazon Web Services.
✅Azure Disk Storage: Дисковое хранилище от Microsoft Azure.
✅NFS: Общий доступ к файлам через сетевую файловую систему.
✅iSCSI: Подключение к блочным устройствам хранения через интернет.
✅Local: Предоставляет хранилище с локальных узлов кластера.
✅CephFS, GlusterFS: Файловые системы, ориентированные на высокопроизводительное распределенное хранение.
Persistent Volume Claim (PVC)
Это запрос на хранилище, который делает пользователь кластера. Это похоже на пользовательский запрос на хранилище в облачных сервисах. PVC конкретизирует размер и параметры доступа к PV.
Использование и преимущества
Позволяет управлять данными более гибко:
✅Данные не теряются при остановке контейнера: PVs предоставляют постоянное хранилище, которое сохраняется независимо от жизненного цикла подов.
✅Эффективное использование ресурсов: Volumes могут быть монтированы по нескольким подам, что облегчает общий доступ к данным.
✅Безопасность: Секреты и конфигурации могут быть безопасно внедрены в контейнеры.
Volume обеспечивает временное хранение и подключение различных источников данных к контейнерам, тогда как Persistent Volume предоставляет постоянное и надежное хранилище, доступное для подов через механизм claims. Это позволяет приложениям работать с данными более гибко и безопасно.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
"volume" и "persistent volume" относятся к системам хранения данных, которые используются для управления данными приложений. Они играют важную роль в управлении состоянием и данными в среде контейнеров, где основной контейнер может быть временным и эфемерным.
Volume
Это директория, возможно, с данными, которая доступна контейнеру в поде. Эта директория может быть подключена из различных источников или создана внутри самого Kubernetes.
Типы:
✅emptyDir: Временный каталог, который удаляется при удалении пода. Используется для хранения данных, которые не нужно сохранять после остановки пода.
✅hostPath: Монтирует файловую систему хоста в под, что может быть полезно для доступа к системным файлам хоста.
✅configMap, secret: Используются для хранения конфигурационных данных и конфиденциальной информации, соответственно.
✅nfs: Подключает NFS-шару.
✅persistentVolumeClaim (PVC): Используется для монтирования постоянного хранилища в под.
Persistent Volume (PV)
Это ресурс в кластере, который администратор кластера предварительно настраивает. Он представляет собой сегмент хранилища, который был выделен для хранения и доступен для использования всеми подами.
Типы:
✅GCE Persistent Disks: Диски, предоставляемые Google Cloud.
✅AWS EBS: Блочные устройства хранения от Amazon Web Services.
✅Azure Disk Storage: Дисковое хранилище от Microsoft Azure.
✅NFS: Общий доступ к файлам через сетевую файловую систему.
✅iSCSI: Подключение к блочным устройствам хранения через интернет.
✅Local: Предоставляет хранилище с локальных узлов кластера.
✅CephFS, GlusterFS: Файловые системы, ориентированные на высокопроизводительное распределенное хранение.
Persistent Volume Claim (PVC)
Это запрос на хранилище, который делает пользователь кластера. Это похоже на пользовательский запрос на хранилище в облачных сервисах. PVC конкретизирует размер и параметры доступа к PV.
Использование и преимущества
Позволяет управлять данными более гибко:
✅Данные не теряются при остановке контейнера: PVs предоставляют постоянное хранилище, которое сохраняется независимо от жизненного цикла подов.
✅Эффективное использование ресурсов: Volumes могут быть монтированы по нескольким подам, что облегчает общий доступ к данным.
✅Безопасность: Секреты и конфигурации могут быть безопасно внедрены в контейнеры.
Volume обеспечивает временное хранение и подключение различных источников данных к контейнерам, тогда как Persistent Volume предоставляет постоянное и надежное хранилище, доступное для подов через механизм claims. Это позволяет приложениям работать с данными более гибко и безопасно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Anonymous Quiz
61%
kubectl apply -f
26%
kubectl deploy -f
8%
kubectl create -f
5%
kubectl start -f
Что такое service monitor в кубере ?
Спросят с вероятностью 13%
ServiceMonitor является частью экосистемы Prometheus, используемой вместе с оператором Prometheus для более удобного и автоматизированного мониторинга ресурсов в Kubernetes. Этот ресурс предназначен для упрощения процесса сбора метрик с различных сервисов, работающих внутри кластера Kubernetes.
Основная функция:
Это автоматизация процесса обнаружения сервисов и их метрик для Prometheus. В классическом использовании Prometheus, конфигурация целей сбора метрик обычно требует ручного определения. Автоматизирует этот процесс, позволяя Prometheus динамически обнаруживать сервисы в кластере и собирать с них метрики, основываясь на заданных критериях и метках.
Как он работает
Настраивается через манифест Kubernetes, в котором указываются:
✅Селекторы для выбора сервисов, с которых нужно собирать метрики.
✅Параметры, описывающие, какие порты, пути и схемы (HTTP или HTTPS) следует использовать для сбора метрик.
Автоматически связывается с сервисами, подходящими под его селекторы, и настраивает Prometheus на сбор метрик с этих сервисов.
В этом примере:
✅selector.matchLabels определяет, что ServiceMonitor должен применяться к сервисам, у которых метка
✅endpoints указывает, что метрики следует собирать с порта
Преимущества:
1️⃣Автоматизация: Автоматизирует процесс конфигурации мониторинга, что упрощает управление мониторингом в больших и динамически изменяющихся средах Kubernetes.
2️⃣Централизация управления: Все настройки мониторинга могут быть централизованно управляемы через Kubernetes манифесты, что облегчает изменение и распространение изменений.
3️⃣Масштабируемость: Подход подходит для масштабируемых приложений, автоматически адаптируясь к изменениям в числе экземпляров сервиса или его конфигурации.
Использование ServiceMonitor вместе с Prometheus значительно упрощает задачу мониторинга, позволяя более эффективно управлять производительностью и здоровьем приложений в кластере.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
ServiceMonitor является частью экосистемы Prometheus, используемой вместе с оператором Prometheus для более удобного и автоматизированного мониторинга ресурсов в Kubernetes. Этот ресурс предназначен для упрощения процесса сбора метрик с различных сервисов, работающих внутри кластера Kubernetes.
Основная функция:
Это автоматизация процесса обнаружения сервисов и их метрик для Prometheus. В классическом использовании Prometheus, конфигурация целей сбора метрик обычно требует ручного определения. Автоматизирует этот процесс, позволяя Prometheus динамически обнаруживать сервисы в кластере и собирать с них метрики, основываясь на заданных критериях и метках.
Как он работает
Настраивается через манифест Kubernetes, в котором указываются:
✅Селекторы для выбора сервисов, с которых нужно собирать метрики.
✅Параметры, описывающие, какие порты, пути и схемы (HTTP или HTTPS) следует использовать для сбора метрик.
Автоматически связывается с сервисами, подходящими под его селекторы, и настраивает Prometheus на сбор метрик с этих сервисов.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-service-monitor
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web
interval: 30s
В этом примере:
✅selector.matchLabels определяет, что ServiceMonitor должен применяться к сервисам, у которых метка
app
соответствует example-app
.✅endpoints указывает, что метрики следует собирать с порта
web
каждые 30 секунд.Преимущества:
1️⃣Автоматизация: Автоматизирует процесс конфигурации мониторинга, что упрощает управление мониторингом в больших и динамически изменяющихся средах Kubernetes.
2️⃣Централизация управления: Все настройки мониторинга могут быть централизованно управляемы через Kubernetes манифесты, что облегчает изменение и распространение изменений.
3️⃣Масштабируемость: Подход подходит для масштабируемых приложений, автоматически адаптируясь к изменениям в числе экземпляров сервиса или его конфигурации.
Использование ServiceMonitor вместе с Prometheus значительно упрощает задачу мониторинга, позволяя более эффективно управлять производительностью и здоровьем приложений в кластере.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
Anonymous Quiz
16%
Canary Deployment
41%
Blue-Green Deployment
40%
Rolling Deployment
3%
Recreate Deployment
Какие протоколы есть ?
Спросят с вероятностью 13%
Существует множество протоколов, каждый из которых выполняет определённые функции. Протоколы можно классифицировать по различным уровням сетевой модели OSI (Open Systems Interconnection) или по уровням модели TCP/IP. Вот краткий обзор некоторых из наиболее значимых протоколов в этих моделях:
Протоколы уровня приложений (Application Layer)
✅HTTP (Hypertext Transfer Protocol): используется для передачи веб-страниц и других данных в интернете.
✅HTTPS (HTTP Secure): расширение HTTP с поддержкой шифрования для безопасной передачи данных.
✅FTP (File Transfer Protocol): протокол для передачи файлов между системами через TCP/IP сети.
✅SMTP (Simple Mail Transfer Protocol): используется для отправки электронной почты.
✅IMAP (Internet Message Access Protocol) и POP3 (Post Office Protocol version 3): протоколы для получения электронной почты с сервера.
✅DNS (Domain Name System): протокол для преобразования доменных имен в IP-адреса.
Протоколы транспортного уровня (Transport Layer)
✅TCP (Transmission Control Protocol): обеспечивает надёжную, упорядоченную и безошибочную доставку данных.
✅UDP (User Datagram Protocol): обеспечивает передачу без установления соединения, что быстрее, но менее надёжно по сравнению с TCP.
Протоколы сетевого уровня (Network Layer)
✅IP (Internet Protocol): основной протокол для передачи пакетов данных через сеть. Включает IPv4 и IPv6.
✅ICMP (Internet Control Message Protocol): используется для передачи сообщений об ошибках и другой информационной диагностики.
✅ARP (Address Resolution Protocol): протокол для определения MAC-адреса по IP-адресу устройства в локальной сети.
Протоколы канального уровня (Data Link Layer)
✅Ethernet: наиболее распространённая технология для локальных сетей.
✅PPP (Point-to-Point Protocol): используется для прямого соединения двух узлов.
✅MAC (Media Access Control): управляет доступом к передающей среде.
Протоколы физического уровня (Physical Layer)
✅В этой категории протоколы обычно не называются, но они включают стандарты для передачи электрических, оптических или иных сигналов по физическим медиам, таким как медные кабели, волоконно-оптические кабели и радиоволны.
Каждый из этих протоколов выполняет определенные функции, необходимые для обеспечения эффективной и надежной передачи данных между компьютерами и другими устройствами в сети. Важно понимать, как они взаимодействуют друг с другом, чтобы построить эффективную и безопасную сетевую инфраструктуру.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Существует множество протоколов, каждый из которых выполняет определённые функции. Протоколы можно классифицировать по различным уровням сетевой модели OSI (Open Systems Interconnection) или по уровням модели TCP/IP. Вот краткий обзор некоторых из наиболее значимых протоколов в этих моделях:
Протоколы уровня приложений (Application Layer)
✅HTTP (Hypertext Transfer Protocol): используется для передачи веб-страниц и других данных в интернете.
✅HTTPS (HTTP Secure): расширение HTTP с поддержкой шифрования для безопасной передачи данных.
✅FTP (File Transfer Protocol): протокол для передачи файлов между системами через TCP/IP сети.
✅SMTP (Simple Mail Transfer Protocol): используется для отправки электронной почты.
✅IMAP (Internet Message Access Protocol) и POP3 (Post Office Protocol version 3): протоколы для получения электронной почты с сервера.
✅DNS (Domain Name System): протокол для преобразования доменных имен в IP-адреса.
Протоколы транспортного уровня (Transport Layer)
✅TCP (Transmission Control Protocol): обеспечивает надёжную, упорядоченную и безошибочную доставку данных.
✅UDP (User Datagram Protocol): обеспечивает передачу без установления соединения, что быстрее, но менее надёжно по сравнению с TCP.
Протоколы сетевого уровня (Network Layer)
✅IP (Internet Protocol): основной протокол для передачи пакетов данных через сеть. Включает IPv4 и IPv6.
✅ICMP (Internet Control Message Protocol): используется для передачи сообщений об ошибках и другой информационной диагностики.
✅ARP (Address Resolution Protocol): протокол для определения MAC-адреса по IP-адресу устройства в локальной сети.
Протоколы канального уровня (Data Link Layer)
✅Ethernet: наиболее распространённая технология для локальных сетей.
✅PPP (Point-to-Point Protocol): используется для прямого соединения двух узлов.
✅MAC (Media Access Control): управляет доступом к передающей среде.
Протоколы физического уровня (Physical Layer)
✅В этой категории протоколы обычно не называются, но они включают стандарты для передачи электрических, оптических или иных сигналов по физическим медиам, таким как медные кабели, волоконно-оптические кабели и радиоволны.
Каждый из этих протоколов выполняет определенные функции, необходимые для обеспечения эффективной и надежной передачи данных между компьютерами и другими устройствами в сети. Важно понимать, как они взаимодействуют друг с другом, чтобы построить эффективную и безопасную сетевую инфраструктуру.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Anonymous Quiz
8%
Docker Compose
1%
Nomad
86%
Kubernetes
5%
Swarm
❤1👍1
На каких технологиях базируется контейнеризация докер в том числе ?
Спросят с вероятностью 13%
Контейнеризация — это метод виртуализации на уровне операционной системы, который позволяет запускать и управлять приложениями и их зависимостями в изолированных "контейнерах". Docker, одна из наиболее популярных платформ для контейнеризации, использует ряд технологий Linux и функций ядра для обеспечения изоляции и безопасности контейнеров. Вот основные технологии, на которых она базируется:
1️⃣Пространства имён (Namespaces)
Являются ключевой функцией ядра Linux, которая ограничивает видимость и доступность системных ресурсов между различными процессами. Каждый контейнер работает в собственном наборе пространств имён, изолированно от других контейнеров и хост-системы. Основные пространства имён включают:
✅PID (Process ID): Изоляция процессов.
✅NET (Network): Управление сетевыми интерфейсами.
✅IPC (Inter-process Communication): Управление доступом к IPC ресурсам.
✅Mount: Управление точками монтирования файловых систем.
✅UTS (UNIX Time Sharing): Изоляция имени хоста и домена.
✅User: Изоляция пользователей и групп.
2️⃣Контрольные группы (Control Groups, cgroups)
Позволяют ограничивать и изолировать ресурсы системы, такие как ЦПУ, память, ввод-вывод и сеть, которые используются процессами. Docker использует cgroups для контроля над тем, сколько ресурсов системы может использовать каждый контейнер.
3️⃣Union File Systems
Это файловая система, которая поддерживает создание слоёв для файлов и папок, что позволяет контейнерам быть "легковесными". Docker использует UnionFS для предоставления базового образа контейнера, к которому можно добавлять изменения, не модифицируя исходный образ. Примеры таких файловых систем включают AuFS, OverlayFS и другие.
4️⃣Docker Engine
Это сервер с открытым API, который выполняет задачи по созданию, запуску и управлению Docker контейнерами. Он использует вышеупомянутые технологии для обеспечения изоляции и безопасности.
5️⃣Docker Image и Dockerfile
Строит свои контейнеры на основе образов (images), которые описаны в специальных файлах конфигурации — Dockerfile. Эти образы состоят из слоёв, каждый из которых представляет собой набор изменений относительно предыдущего слоя. Dockerfile содержит набор инструкций для сборки образа, что включает установку программного обеспечения, копирование файлов и другие команды.
Технологии позволяют создавать легковесные, но в то же время полнофункциональные и изолированные среды для приложений. Это делает контейнеризацию мощным инструментом и облегчает развертывание, масштабирование и управление приложениями.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Контейнеризация — это метод виртуализации на уровне операционной системы, который позволяет запускать и управлять приложениями и их зависимостями в изолированных "контейнерах". Docker, одна из наиболее популярных платформ для контейнеризации, использует ряд технологий Linux и функций ядра для обеспечения изоляции и безопасности контейнеров. Вот основные технологии, на которых она базируется:
1️⃣Пространства имён (Namespaces)
Являются ключевой функцией ядра Linux, которая ограничивает видимость и доступность системных ресурсов между различными процессами. Каждый контейнер работает в собственном наборе пространств имён, изолированно от других контейнеров и хост-системы. Основные пространства имён включают:
✅PID (Process ID): Изоляция процессов.
✅NET (Network): Управление сетевыми интерфейсами.
✅IPC (Inter-process Communication): Управление доступом к IPC ресурсам.
✅Mount: Управление точками монтирования файловых систем.
✅UTS (UNIX Time Sharing): Изоляция имени хоста и домена.
✅User: Изоляция пользователей и групп.
2️⃣Контрольные группы (Control Groups, cgroups)
Позволяют ограничивать и изолировать ресурсы системы, такие как ЦПУ, память, ввод-вывод и сеть, которые используются процессами. Docker использует cgroups для контроля над тем, сколько ресурсов системы может использовать каждый контейнер.
3️⃣Union File Systems
Это файловая система, которая поддерживает создание слоёв для файлов и папок, что позволяет контейнерам быть "легковесными". Docker использует UnionFS для предоставления базового образа контейнера, к которому можно добавлять изменения, не модифицируя исходный образ. Примеры таких файловых систем включают AuFS, OverlayFS и другие.
4️⃣Docker Engine
Это сервер с открытым API, который выполняет задачи по созданию, запуску и управлению Docker контейнерами. Он использует вышеупомянутые технологии для обеспечения изоляции и безопасности.
5️⃣Docker Image и Dockerfile
Строит свои контейнеры на основе образов (images), которые описаны в специальных файлах конфигурации — Dockerfile. Эти образы состоят из слоёв, каждый из которых представляет собой набор изменений относительно предыдущего слоя. Dockerfile содержит набор инструкций для сборки образа, что включает установку программного обеспечения, копирование файлов и другие команды.
Технологии позволяют создавать легковесные, но в то же время полнофункциональные и изолированные среды для приложений. Это делает контейнеризацию мощным инструментом и облегчает развертывание, масштабирование и управление приложениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Anonymous Quiz
39%
OAuth
3%
Basic Auth
25%
API Key
34%
JWT
Как посмотреть размер папки на диске ?
Спросят с вероятностью 13%
Для того чтобы узнать размер папки на диске, можно воспользоваться различными методами в зависимости от операционной системы. Вот несколько способов для наиболее распространённых ОС:
Windows
Использование проводника (Explorer)
1️⃣Откройте Проводник Windows.
1️⃣Наведите на папку, размер которой вы хотите узнать.
3️⃣Кликните правой кнопкой мыши и выберите "Свойства".
4️⃣В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".
Использование командной строки
1️⃣Откройте командную строку (Cmd) или PowerShell.
2️⃣Введите следующую команду, заменив
Для PowerShell можно использовать:
Здесь
macOS и Linux
Использование терминала
1️⃣Откройте терминал.
2️⃣Введите команду
Здесь:
✅
✅
Объяснение команды du
Используется в Unix-подобных операционных системах для измерения размера файлового пространства, используемого файлами и папками. Она может быть настроена для вывода размера отдельных файлов в папке или для подсчёта общего размера всех файлов в папке.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Для того чтобы узнать размер папки на диске, можно воспользоваться различными методами в зависимости от операционной системы. Вот несколько способов для наиболее распространённых ОС:
Windows
Использование проводника (Explorer)
1️⃣Откройте Проводник Windows.
1️⃣Наведите на папку, размер которой вы хотите узнать.
3️⃣Кликните правой кнопкой мыши и выберите "Свойства".
4️⃣В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".
Использование командной строки
1️⃣Откройте командную строку (Cmd) или PowerShell.
2️⃣Введите следующую команду, заменив
ПутьКПапке
на путь к интересующей вас папке:du -sh ПутьКПапке
Для PowerShell можно использовать:
Get-ChildItem ПутьКПапке -Recurse | Measure-Object -Property Length -Sum
Здесь
Get-ChildItem
перечисляет все файлы в папке, а Measure-Object
считает их размер.macOS и Linux
Использование терминала
1️⃣Откройте терминал.
2️⃣Введите команду
du
, чтобы узнать размер папки. Вот пример команды, которая показывает размер папки в читаемом виде (суммарный размер всех файлов):du -sh /путь/к/папке
Здесь:
✅
-s
означает "summary" (суммировать размер всех файлов в папке),✅
-h
означает "human-readable" (отображать размер в удобочитаемом формате, например, в КБ, МБ, ГБ).Объяснение команды du
Используется в Unix-подобных операционных системах для измерения размера файлового пространства, используемого файлами и папками. Она может быть настроена для вывода размера отдельных файлов в папке или для подсчёта общего размера всех файлов в папке.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯1
Anonymous Quiz
20%
1
11%
2
57%
auto
12%
4
👍1
Как уменьшить размер Docker image ?
Спросят с вероятностью 13%
Уменьшение размера Docker образа (Docker image) является важной задачей в процессе оптимизации Docker контейнеров, поскольку это помогает сократить время загрузки, улучшить производительность и уменьшить расход ресурсов хранения и сети. Вот несколько эффективных методов этого:
1️⃣Выбор подходящего базового образа
✅Используйте облегчённые (lightweight) базовые образы, такие как Alpine Linux, которые по умолчанию содержат минимум установленного программного обеспечения. Это значительно уменьшает размер конечного образа.
2️⃣Минимизация слоёв образа
✅Объединяйте RUN-команды в Dockerfile. Каждая инструкция
3️⃣Удаление ненужных файлов
✅Удаляйте временные файлы и зависимости, которые не нужны в финальном образе, в той же инструкции
4️⃣Использование многоэтапной сборки (multi-stage builds)
✅Многоэтапная сборка позволяет использовать один Dockerfile для создания нескольких промежуточных образов, из которых можно копировать только нужные файлы в финальный образ. Это особенно полезно для языков, требующих компиляции, таких как Java или C, где исходный код и компиляторы не нужны в рабочем образе.
5️⃣Использование .dockerignore
✅Добавляйте файл `.dockerignore` в ваш проект, чтобы исключить ненужные файлы и директории из контекста сборки (например, временные файлы, локальные конфигурационные файлы, каталоги с зависимостями типа
6️⃣Оптимизация добавления ресурсов
✅Минимизируйте количество инструкций
7️⃣Выбор правильных инструкций
✅Используйте
Используя эти методы, вы можете значительно сократить размер вашего Docker образа, что приведёт к более быстрому развёртыванию, меньшему потреблению ресурсов и улучшению общей безопасности вашего приложения.
🔥 ТОП ВОПРОСОВ С СОБЕСОВ
🔒 База собесов | 🔒 База тестовых
Спросят с вероятностью 13%
Уменьшение размера Docker образа (Docker image) является важной задачей в процессе оптимизации Docker контейнеров, поскольку это помогает сократить время загрузки, улучшить производительность и уменьшить расход ресурсов хранения и сети. Вот несколько эффективных методов этого:
1️⃣Выбор подходящего базового образа
✅Используйте облегчённые (lightweight) базовые образы, такие как Alpine Linux, которые по умолчанию содержат минимум установленного программного обеспечения. Это значительно уменьшает размер конечного образа.
2️⃣Минимизация слоёв образа
✅Объединяйте RUN-команды в Dockerfile. Каждая инструкция
RUN
, COPY
, и ADD
создаёт новый слой. Объединение этих команд в одну или несколько инструкций может значительно сократить количество слоёв и размер образа.RUN apt-get update && \
apt-get install -y package1 package2 && \
rm -rf /var/lib/apt/lists/*
3️⃣Удаление ненужных файлов
✅Удаляйте временные файлы и зависимости, которые не нужны в финальном образе, в той же инструкции
RUN
, которая их создаёт. Это включает кэши пакетных менеджеров, временные файлы и документацию.4️⃣Использование многоэтапной сборки (multi-stage builds)
✅Многоэтапная сборка позволяет использовать один Dockerfile для создания нескольких промежуточных образов, из которых можно копировать только нужные файлы в финальный образ. Это особенно полезно для языков, требующих компиляции, таких как Java или C, где исходный код и компиляторы не нужны в рабочем образе.
# Этап сборки
FROM golang:1.14 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
# Финальный этап
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
ENTRYPOINT ["/app/myapp"]
5️⃣Использование .dockerignore
✅Добавляйте файл `.dockerignore` в ваш проект, чтобы исключить ненужные файлы и директории из контекста сборки (например, временные файлы, локальные конфигурационные файлы, каталоги с зависимостями типа
node_modules
и т.д.), что уменьшает время сборки и размер образа.6️⃣Оптимизация добавления ресурсов
✅Минимизируйте количество инструкций
ADD
иак умень по возможности комбинируя копируемые файлы в одну инструкцию, чтобы сократить количество слоёв.7️⃣Выбор правильных инструкций
✅Используйте
COPY
вместоеньшить если вам не нужны дополнительные функции ADD
, такие как автоматическое распаковывание архивов и добавление файлов из URL.Используя эти методы, вы можете значительно сократить размер вашего Docker образа, что приведёт к более быстрому развёртыванию, меньшему потреблению ресурсов и улучшению общей безопасности вашего приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🤯1
Anonymous Quiz
5%
Лучшая производительность
16%
Императивное управление
72%
Декларативное управление
7%
Меньше зависимостей
Anonymous Quiz
70%
Docker Engine
3%
Docker Hub
21%
Docker Compose
5%
Docker Swarm