Что такое Trunk-based development?
Trunk-based Development (TBD) — модель ветвления, в которой разработчики совместно работают над кодом в одной ветви, называемой "стволом" (trunk). При этом другие ветви имеют короткий срок жизни благодаря использованию документированных методов.
Trunk-based Development (TBD) — модель ветвления, в которой разработчики совместно работают над кодом в одной ветви, называемой "стволом" (trunk). При этом другие ветви имеют короткий срок жизни благодаря использованию документированных методов.
На новом сервере не установлен Python, который требуется для работы Ansible. Как выполнить установку Python на сервере используя Ansible?
Использовать модуль raw, которому необходимо передать команду для установки python на сервере. Модуль raw принимает команду без дополнительной обработки Python и выполняет её на сервере.
Использовать модуль raw, которому необходимо передать команду для установки python на сервере. Модуль raw принимает команду без дополнительной обработки Python и выполняет её на сервере.
Как обеспечить, чтобы поды никогда не перешли в состояние Evicted на ноде?
Когда узлу (node) кластера не хватает памяти или дискового пространства, он активирует флаг, сигнализирующий о данной проблеме. Данное действие блокирует любое новое выделение ресурсов на ноде и запускает процесс "выселения" (evicted) пода с ноды.
В этот момент kubelet начинает восстанавливать ресурсы, удаляя контейнеры и объявляя поды, как Failed, пока использование ресурсов снова не станет ниже порога "выселения".
Сначала kubelet пытается освободить ресурсы узла, особенно диск, путем удаления мертвых модулей и их контейнеров, а затем неиспользуемых образов. Если этого недостаточно, kubelet начинает выселять поды конечных пользователей в следующем порядке:
Best Effort.
Burstable поды, использующие больше ресурсов, чем запрос истощенного ресурса.
Burstable поды, использующие меньше ресурсов, чем запрос истощенного ресурса.
Чтобы под не был удален при "выселении", необходимо настроить политики QoS для пода как Guaranteed.
Когда узлу (node) кластера не хватает памяти или дискового пространства, он активирует флаг, сигнализирующий о данной проблеме. Данное действие блокирует любое новое выделение ресурсов на ноде и запускает процесс "выселения" (evicted) пода с ноды.
В этот момент kubelet начинает восстанавливать ресурсы, удаляя контейнеры и объявляя поды, как Failed, пока использование ресурсов снова не станет ниже порога "выселения".
Сначала kubelet пытается освободить ресурсы узла, особенно диск, путем удаления мертвых модулей и их контейнеров, а затем неиспользуемых образов. Если этого недостаточно, kubelet начинает выселять поды конечных пользователей в следующем порядке:
Best Effort.
Burstable поды, использующие больше ресурсов, чем запрос истощенного ресурса.
Burstable поды, использующие меньше ресурсов, чем запрос истощенного ресурса.
Чтобы под не был удален при "выселении", необходимо настроить политики QoS для пода как Guaranteed.
В Ansible роли есть директории vars и default. Что они содержат и чем отличаются?
Ansible применяет порядок приоритета переменных. Ниже представлен список в порядке повышения приоритета.
command line values (for example, -u my_user, these are not variables)
role defaults (defined in role/defaults/main.yml)
inventory file or script group vars
inventory group_vars/all
playbook group_vars/all
inventory group_vars/*
playbook group_vars/*
inventory file or script host vars
inventory host_vars/*
playbook host_vars/*
host facts / cached set_facts
play vars
play vars_prompt
play vars_files
role vars (определяемые в role/vars/main.yml)
block vars (только для задач в block)
task vars (только для задач)
include_vars
set_facts / registered vars
role (и include_role) params
include params
extra vars (например, -e "user=my_user") (всегда приоритетнее)
Соответственно, переменные в vars будут приорететнее, чем в defaults.
Ansible применяет порядок приоритета переменных. Ниже представлен список в порядке повышения приоритета.
command line values (for example, -u my_user, these are not variables)
role defaults (defined in role/defaults/main.yml)
inventory file or script group vars
inventory group_vars/all
playbook group_vars/all
inventory group_vars/*
playbook group_vars/*
inventory file or script host vars
inventory host_vars/*
playbook host_vars/*
host facts / cached set_facts
play vars
play vars_prompt
play vars_files
role vars (определяемые в role/vars/main.yml)
block vars (только для задач в block)
task vars (только для задач)
include_vars
set_facts / registered vars
role (и include_role) params
include params
extra vars (например, -e "user=my_user") (всегда приоритетнее)
Соответственно, переменные в vars будут приорететнее, чем в defaults.
Что такое Docker? В чем отличие контейнера от образа?
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.
Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".
Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.
Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".
Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".
Что такое эфемерные контейнеры?
Эфемерные контейнеры стали бета-функцией в Kubernetes v1.23 и теперь включены по умолчанию. Эфемерные контейнеры предназначены для транзитных задач, когда вам нужно временно подключить дополнительный контейнер к существующему поду. Это идеально подходит для отладочных операций, когда вы хотите проверить поды, не затрагивая живые экземпляры контейнеров.
Эфемерные контейнеры стали бета-функцией в Kubernetes v1.23 и теперь включены по умолчанию. Эфемерные контейнеры предназначены для транзитных задач, когда вам нужно временно подключить дополнительный контейнер к существующему поду. Это идеально подходит для отладочных операций, когда вы хотите проверить поды, не затрагивая живые экземпляры контейнеров.
Чем отличается StatefulSet от Deployment?
Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.
StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.
Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.
StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.
Зачем нужен terraform taint?
Команда terraform taint пометит ресурс инфраструктуры, который будет удален и заново создан при следующем применении команды terraform apply.
Команда terraform taint пометит ресурс инфраструктуры, который будет удален и заново создан при следующем применении команды terraform apply.
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем отличается count от for_each?
count — это итерация по списку, который содержит целочисленные элементы, for_each — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.
resource "aws_instance" "web" {
count = 3
instance_type = "t2.micro"
ami = data.aws_ami.debian_buster.id
tags = {
Name = "WebServer-${count.index + 1}"
}
}
Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. count начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили 1.
resource "aws_instance" "server" {
for_each = {
web = { type = "t2.micro", public_ip = true },
db = { type = "m5.large", public_ip = false }
}
instance_type = each.value["type"]
ami = data.aws_ami.debian_buster.id
associate_public_ip_address = each.value["public_ip"]
tags = {
Name = "each.key"
}
}
Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам each.key и использовав значения вложенных словарей в конфигурации EC2.
count — это итерация по списку, который содержит целочисленные элементы, for_each — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.
resource "aws_instance" "web" {
count = 3
instance_type = "t2.micro"
ami = data.aws_ami.debian_buster.id
tags = {
Name = "WebServer-${count.index + 1}"
}
}
Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. count начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили 1.
resource "aws_instance" "server" {
for_each = {
web = { type = "t2.micro", public_ip = true },
db = { type = "m5.large", public_ip = false }
}
instance_type = each.value["type"]
ami = data.aws_ami.debian_buster.id
associate_public_ip_address = each.value["public_ip"]
tags = {
Name = "each.key"
}
}
Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам each.key и использовав значения вложенных словарей в конфигурации EC2.
Чем отличается Kubernetes от Openshift?
Openshift имеет более строгие политики безопасности и модели аутентификации.
Openshift поддерживает полную интеграцию CI/CD Jenkins.
Openshift имеет веб-консоль по-умолчанию. В Kubernetes консоль необходимо дополнительно устанавливать консоль.
В Kubernetes возможно устанавливать сторонние сетевые плагины. В Openshift используется собственное сетевое решение Open vSwitch, которое предоставляет 3 различный плагина.
Kubernetes может быть установлен практически на любой дистрибутив Linux. Openshift имеет ограничения на устанавливаемые дистрибутивы, преимущественно используются RH-дистрибутивы.
Kubernets доступен в большинстве облачных платформ - GCP, AWS, Azure, Yandex.Cloud. Openshift доступен на облачной платформе Azure и облаке от IBM.
По-умолчанию, в Openshift поды в кластере могут быть запущены только под обычным пользователем, чтобы запустить под под пользователем root необходимо выдать права для сервисного аккаунта. В Kubernetes по-умолчанию поды могут быть запущены по пользователем root.
Openshift имеет более строгие политики безопасности и модели аутентификации.
Openshift поддерживает полную интеграцию CI/CD Jenkins.
Openshift имеет веб-консоль по-умолчанию. В Kubernetes консоль необходимо дополнительно устанавливать консоль.
В Kubernetes возможно устанавливать сторонние сетевые плагины. В Openshift используется собственное сетевое решение Open vSwitch, которое предоставляет 3 различный плагина.
Kubernetes может быть установлен практически на любой дистрибутив Linux. Openshift имеет ограничения на устанавливаемые дистрибутивы, преимущественно используются RH-дистрибутивы.
Kubernets доступен в большинстве облачных платформ - GCP, AWS, Azure, Yandex.Cloud. Openshift доступен на облачной платформе Azure и облаке от IBM.
По-умолчанию, в Openshift поды в кластере могут быть запущены только под обычным пользователем, чтобы запустить под под пользователем root необходимо выдать права для сервисного аккаунта. В Kubernetes по-умолчанию поды могут быть запущены по пользователем root.
Теорема САР. Что это такое?
Теорема CAP (известная также как теорема Брюера) — эвристическое утверждение о том, что в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств:
Согласованность данных (англ. consistency) — во всех вычислительных узлах в один момент времени данные не противоречат друг другу;
Доступность (англ. availability) — любой запрос к распределённой системе завершается корректным откликом, однако без гарантии, что ответы всех узлов системы совпадают;
Устойчивость к разделению (англ. partition tolerance) — расщепление распределённой системы на несколько изолированных секций не приводит к некорректности отклика от каждой из секций.
Теорема CAP (известная также как теорема Брюера) — эвристическое утверждение о том, что в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств:
Согласованность данных (англ. consistency) — во всех вычислительных узлах в один момент времени данные не противоречат друг другу;
Доступность (англ. availability) — любой запрос к распределённой системе завершается корректным откликом, однако без гарантии, что ответы всех узлов системы совпадают;
Устойчивость к разделению (англ. partition tolerance) — расщепление распределённой системы на несколько изолированных секций не приводит к некорректности отклика от каждой из секций.
Что такое операторы в понятиях Kubernetes?
Операторы — это программные расширения Kubernetes,призванное автоматизировать выполнение рутинных действий над объектами кластера при определённых событиях.
Оператор работает по подписке на события к API Kubernetes.
Операторы — это программные расширения Kubernetes,призванное автоматизировать выполнение рутинных действий над объектами кластера при определённых событиях.
Оператор работает по подписке на события к API Kubernetes.
Чем Router в Openshift отличается от Ingress в Kubernetes?
Router Openshift использует haproxy, как прокси-вебсервер. Ingress как в Kubernetes, так и OpenShift может быть разным (nginx, haproxy, caddy, etc).
Router Openshift использует haproxy, как прокси-вебсервер. Ingress как в Kubernetes, так и OpenShift может быть разным (nginx, haproxy, caddy, etc).
Почему для установки Kubernetes требуется отключить swap?
Планировщик Kubernetes определяет наилучший доступный узел для развертывания вновь созданных модулей. Если в хост-системе разрешена подкачка памяти, это может привести к проблемам с производительностью и стабильностью в Kubernetes. По этой причине Kubernetes требует, чтобы вы отключили swap в хост-системе.
Планировщик Kubernetes определяет наилучший доступный узел для развертывания вновь созданных модулей. Если в хост-системе разрешена подкачка памяти, это может привести к проблемам с производительностью и стабильностью в Kubernetes. По этой причине Kubernetes требует, чтобы вы отключили swap в хост-системе.
Как оцениваете свой уровень знания ОС Linux по десятибальной шкале?
Вопрос с подвохом. Ответ «на десять» для заядлого линуксоида все равно что красная тряпка для быка, поэтому вы рискуете провести следующие два часа своей жизни максимально увлекательно :)
Вопрос с подвохом. Ответ «на десять» для заядлого линуксоида все равно что красная тряпка для быка, поэтому вы рискуете провести следующие два часа своей жизни максимально увлекательно :)
Объясните концепцию Sudo в Linux.
Команда sudo (superuser do) в Linux — это мощная утилита, которая позволяет пользователям выполнять команды с привилегиями другого пользователя, обычно суперпользователя или root. Концепция sudo обеспечивает контролируемый способ управления тем, какие пользователи могут выполнять административные задачи, не предоставляя им неограниченный root-доступ.
Команда sudo (superuser do) в Linux — это мощная утилита, которая позволяет пользователям выполнять команды с привилегиями другого пользователя, обычно суперпользователя или root. Концепция sudo обеспечивает контролируемый способ управления тем, какие пользователи могут выполнять административные задачи, не предоставляя им неограниченный root-доступ.
Что такое CBD?
Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
Компонентно-ориентированное программирование (CBD) представляет собой инновационный подход к разработке продукта. Вместо традиционного создания продукта с нуля, разработчики используют CBD для поиска уже существующих, проверенных и качественных компонентов, которые затем комбинируются для создания нового и оригинального продукта. Этот подход позволяет улучшить качество и надежность продукта, а также упростить его сопровождение и обновление, благодаря использованию уже проверенных компонентов. CBD открывает новые возможности для разработчиков, позволяя им быстрее и эффективнее создавать продукты, используя уже существующие ресурсы. нового и оригинального продукта. Этот процесс проходит вместо обычного для многих процесса создания продукта с нуля.
Есть ли разница между Agile и DevOps? Если да, пожалуйста, объясните.
Начните с описания общих черт. Затем перейдите к отличиям: Методика Agile предполагает создание и выпуск ПО, после чего разработчики за него формально не отвечают. С DevOps все обстоит иначе: эта методика направлена как раз на то, чтобы развернуть готовое ПО максимально надежным и безопасным способом.
Начните с описания общих черт. Затем перейдите к отличиям: Методика Agile предполагает создание и выпуск ПО, после чего разработчики за него формально не отвечают. С DevOps все обстоит иначе: эта методика направлена как раз на то, чтобы развернуть готовое ПО максимально надежным и безопасным способом.
Что такое автоматическое тестирование?
По умолчанию для тестирования системы используются ручные инструменты. Это означает, что для этого требуется много людских ресурсов и по этой причине такой подход имеет шанс человеческой ошибки. Однако автоматические тестирование позволяет внедрять автоматические процессы, способные тестировать систему за вас.
По умолчанию для тестирования системы используются ручные инструменты. Это означает, что для этого требуется много людских ресурсов и по этой причине такой подход имеет шанс человеческой ошибки. Однако автоматические тестирование позволяет внедрять автоматические процессы, способные тестировать систему за вас.
Как бы вы описали свой опыт в облачных технологиях?
Хороший инженер DevOps должен быть знаком с облачными технологиями.
В связи с тем, что мир обращается к облаку, растет спрос на инженеров с опытом работы с облачными технологиями, включая популярные Amazon Web Server (AWS) и RackSpace, Microsoft Azure, Google Elastic Cloud и OpenStack.
Дело не только в количестве технологий, с которыми работал кандидат, но и в степени его опыта на предыдущей работе. Несколько лет назад AWS, вероятно, была единственной технологией, которую знали большинство инженеров DevOps. В настоящее время опыта работы с AWS недостаточно; спросите об их опыте работы с S3, EC, Glacier, Redshift, Route53 и другими.
Хорошие кандидаты будет рад описать количество облачных экземпляров, с которыми они работают в настоящее время, и часы, которые они проводят, работая в облаке в различных средах. Они также могут упомянуть, работали ли они над проектированием, внедрением и переносом в облако или увеличивали масштаб среды с малого до большого в предыдущих работах.
Хороший инженер DevOps должен быть знаком с облачными технологиями.
В связи с тем, что мир обращается к облаку, растет спрос на инженеров с опытом работы с облачными технологиями, включая популярные Amazon Web Server (AWS) и RackSpace, Microsoft Azure, Google Elastic Cloud и OpenStack.
Дело не только в количестве технологий, с которыми работал кандидат, но и в степени его опыта на предыдущей работе. Несколько лет назад AWS, вероятно, была единственной технологией, которую знали большинство инженеров DevOps. В настоящее время опыта работы с AWS недостаточно; спросите об их опыте работы с S3, EC, Glacier, Redshift, Route53 и другими.
Хорошие кандидаты будет рад описать количество облачных экземпляров, с которыми они работают в настоящее время, и часы, которые они проводят, работая в облаке в различных средах. Они также могут упомянуть, работали ли они над проектированием, внедрением и переносом в облако или увеличивали масштаб среды с малого до большого в предыдущих работах.