DevOps Star (Звезда Девопса)
2.16K subscribers
271 photos
211 videos
19 files
328 links
Devops, Linux, SRE, Kubernetes, Сисадмин, Девопс, Python, JS, Java, Git, IT канал, программирование, безопасность, ИТ, Sysadmin

По всем вопросам @evgenycarter
Download Telegram
Что будет если на сервере LA = 100?

Вероятно, что на сервере будет наблюдаться замедленная работа сервисов, но если параметр LA равен количеству ядер в системе или количеству потоков в системе, то данная нагрузка является нормальной.

👉 @devops_star
👍2
В Ansible роли есть директории file и templates. Что они содержат и чем отличаются?

files — содержит файлы, которые будут скопированы на настраиваемые хосты; так же — может содержать скрипты, которые позже будут запускаться на хостах.

templates — содержит шаблоны файлов с переменными.

👉 @devops_star
👍2
Что такое утечка памяти?

Утечки памяти - распространенная и досадная проблема при разработке программного обеспечения. Эти проблемы возникают, когда программа не может освободить память, которая больше не используется, что приводит к постепенной потере доступной памяти с течением времени.

Хотя поначалу утечки памяти незаметны, они могут серьезно ухудшить производительность и стабильность системы, приводя к вялому поведению, сбоям или зависанию. Они возникают из-за ошибок в программировании, например, из-за забывания деаллокации памяти или сохранения ссылок на удаленные объекты.

https://www.codereliant.io/what-is-a-memory-leak/

👉 @devops_star
👍1
Архитектура Kubernetes

👉 @devops_star
👍4
Какие есть best practices для написания Dockerfile?

1. Запускать только один процесс на контейнер.
2. Стараться объединять несколько команд RUN в одну для уменьшения количества слоёв образа.
3. Частоизменяемые слои образа необходимо располагать ниже по уровню, чтобы ускорить процесс сборки, т.к. при изменении верхнего слоя, все нижеследующие слои будут пересобираться.
4. Указывать явные версии образов в инструкции FROM, чтобы избежать случая, когда выйдет новая версия образа с тегом latest.
5. При установке пакетов указывать версии пакетов.
6. Очищать кеш пакетного менеджера и удалять ненужные файлы после выполненной инструкции.
7. Использовать multistage build для сборки артифакта в одном контейнере и размещении его в другом.

👉 @devops_star
👍7
Восстановление проблемных подсов с нуля

Контейнеры - это удивительная технология. Они предоставляют огромные преимущества и создают полезные ограничения для распространения программного обеспечения. Программное обеспечение на базе Golang не нуждается в контейнере так же, как Ruby или Python, которые объединяют среду выполнения и зависимости. Для статически компилируемого приложения на Go контейнеру не нужно ничего, кроме бинарного файла.

Поскольку программное обеспечение предназначено для работы в кластере Kubernetes, контейнер обеспечивает механизм выпуска и распространения, который Helm chart использует для ссылки на эти бинарные файлы. Это также позволяет выпускать несколько архитектур процессоров, ссылаясь на их собственные образы. Для общего устранения неполадок существуют довольно хорошие ресурсы, такие как Refinery и OpenTelemetry Collector.

https://www.honeycomb.io/blog/rescue-struggling-pods-from-scratch

👉 @devops_star
👍1
Для чего нужна команда git commit --amend?

commit --ammend используется для исправления сообщения последнего коммита. Также возможно использовать, чтобы добавить файлы в индекс (git add), после добавить файлы в коммит git commit --ammend.

👉 @devops_star
👍1
В ветке develop есть коммит с изменениями, которые нужно перенести в ветку master. Как это сделать?

Необходимо найти хеш этого коммита и выполнить следующую комманду в ветке, в которую нужно перенести коммит.

git cherry-pick <commit_hash>

👉 @devops_star
👍2
Как Grafanalib помогает управлять дашбордами в масштабе

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

https://www.contino.io/insights/grafanalib

👉 @devops_star
👍2
Как работает докер🐳

👉 @devops_star
🤡2👍1
Media is too big
VIEW IN TELEGRAM
Docker с 0 до 100%. Всё, что нужно знать.

00:00:00 Intro
00:01:35 Основы Docker.
00:19:30 Установка Docker в Linux и Windows.
00:25:40 Основные команды.
00:54:55 Управление портами: Port Mapping.
01:08:55 Переменные в Docker: Environment Variables.
01:20:20 Постоянные данные: Docker Volumes.
01:48:41 Сети в Docker. Network.
02:30:11 Создание своих контейнеров. Dockerfile.
03:40:59 Docker Compose. Применение.
04:32:28 Portainer – Web UI для управления Docker.

источник

👉 @devops_star
🔥61
Руководство по обнаружению сервисов с помощью Prometheus Operator - как использовать Pod Monitor, Service Monitor и Scrape Config.

Prometheus Operator - это популярный инструмент для управления и развертывания Prometheus и связанных с ним компонентов мониторинга в Kubernetes. Чтобы создать эффективную стратегию мониторинга с его помощью, нам нужно знать основы, например, как обнаруживать сервисы. В настоящее время это можно сделать с помощью Pod Monitor, Service Monitor и новой функции Scrape Config CRD.

https://medium.com/@helia.barroso/a-guide-to-service-discovery-with-prometheus-operator-how-to-use-pod-monitor-service-monitor-6a7e4e27b303

👉 @devops_star
👍1
В 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.

👉 @devops_star
👍3
🇷🇺 100% российская разработка

INFRAX — платформа all-in-one для управления ИТ-инфраструктурой:

Мониторинг инфраструктуры (ITOM)
Удаленный доступ для сотрудников и привилегированных пользователей
Обработка заявок пользователей (ServiceDesk)
База знаний с разграничением доступа к категориям (публичные и закрытые)
Автоматизация (скрипты и планировщик)
Контроль привилегированных пользователей. Видеозапись сессий RDP/SSH/VNC. (PAM)
Управление доступами. Доступ ко всем корпоративным сервисам через одну учетку (IAM)

БЕСПЛАТНО до 100 пользователей! 🎁

👉 Попробовать INFRAX

Реклама. ООО «АУДИТ-ТЕЛЕКОМ», ОГРН 1167746696776, erid: 2Vtzqv8Ag74
Архитектурные паттерны: Circuit-Breaker

Что такое « Circuit Breaker»?
В мире распределенных систем вероятность того, что компоненты выйдут из строя или перестанут реагировать на запросы, выше по сравнению с монолитными системами. Учитывая взаимозависимость микросервисов или модулей в распределенной системе, отказ одного компонента может привести к каскадным сбоям во всей системе, потенциально вызывая сбой или остановку всей системы. Поэтому устойчивость - способность системы справляться со сбоями и восстанавливаться после них - становится критически важной в распределенных средах.

https://lab.scub.net/architecture-patterns-the-circuit-breaker-8f79280771f1

👉 @devops_star
👍1
Что такое Trunk-based development?

Trunk-based Development (TBD) — модель ветвления, в которой разработчики совместно работают над кодом в одной ветви, называемой "стволом" (trunk). При этом другие ветви имеют короткий срок жизни благодаря использованию документированных методов.

👉 @devops_star
👍1
Профилирование: Flame Chart vs. Flame Graph

Flame charts и Flame graphs - это методы визуализации данных профилирования. Для многих инженеров-программистов они являются первыми визуализациями, с которыми мы сталкиваемся, когда начинаем работать над производительностью. Если вы, как и я, являетесь инженером фронтенда, то, скорее всего, диаграмма Flame - это то, с чем вы знакомы больше всего. Хотя диаграммы Flame и графики Flame выглядят и звучат похоже, это не одно и то же.

https://medium.com/performance-engineering-for-the-ordinary-barbie/profiling-flame-chart-vs-flame-graph-7b212ddf3a83

👉 @devops_star
1👍1
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".

👉 @devops_star
👍31
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.

👉 @devops_star
👍42
Что ты такое, dhclient?

Сетевой стек Linux не прост даже на первый взгляд: приложение — в юзерспейсе, а всё, что после сокета, — в ядре операционки. И там тысяча реализаций TCP. Любое взаимодействие с сетью — системный вызов с переключением контекста в ядре.

Чтобы лишний раз не дёргать ядро прерываниями, придумали DMA — Direct Memory Access. Это когда трафик пишется напрямую в память, откуда он считывается приложением в обход ядра. И это дало жизнь классу софта с режимом работы kernel bypass. Например, при DPDK (Intel Data Plane Development Kit) сетевая карта целиком передаётся в userspace, а ядро даже не подозревает о её существовании.

Потом был BPF. А ещё потом усилиями Алексея Старовойтова и компании миру была показана eBPF — штука, умеющая делать прокол в ядро и инжектировать туда микроскопические виртуальные машины с кодом, которые могут в обход всего и вся взаимодействовать с системными событиями, и в том числе с трафиком. Супербыстро и оптимально (на фоне стандартного стека, конечно же). А это в свою очередь дало возможность использовать XDP для ускорения обработки трафика.

Но даже помимо хаков работы с ядром есть такие штуки, как sk_buff, в которой хранятся метаданные всех миллионов протоколов (в большинстве случаев они вообще не нужны: тащим с собой легаси). Есть NAPI (New API), которая призвана уменьшить число прерываний. А 100500 вариантов разных tables? Iptables, arptables, ip6tables, ebtables, nftables…

Если вам мало — ещё придумали SR-IOV. Там тоже уже упомянутый DMA, а ещё можно посплитить физическую карточку на несколько виртуальных и раздать их в разные виртуалки и приложения. Под ручку с DMA идёт и RDMA, когда мы пишем трафик напрямую в память, но не в свою, а в чужую на удалённой по сети машине.

И в этих копаниях можно уйти безгранично далеко. Но сегодня мы всё же поговорим о вещах более приземлённых и повседневных, которые лишь приоткрывают вход в эту разветвлённую сеть кроличьих нор. Мы разберём одну любопытную задачку, на примере которой ужаснёмся (а кто-то ухмыльнётся деловито в усы) тому, как сложно может быть реализован такой простой протокол, как DHCP.

https://habr.com/ru/companies/yandex/articles/774462/

👉 @devops_star
👍1