This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый совет по Linux
Команда
Но знаешь ли ты, что её можно использовать и для просмотра содержимого директории? По сути, она показывает вывод команды
Зачем это нужно?
Ну, как минимум, тебе больше не придётся задумываться о том, что
👉 DevOps Portal
Команда
less используется для чтения содержимого файлов, это не секрет.Но знаешь ли ты, что её можно использовать и для просмотра содержимого директории? По сути, она показывает вывод команды
lsЗачем это нужно?
Ну, как минимум, тебе больше не придётся задумываться о том, что
less нельзя применять к директорииPlease open Telegram to view this post
VIEW IN TELEGRAM
😁8👍5❤4
Опенсорс платформа, которая может быть использована для управления секретами. Доступна как облачная версия, так локальная (Docker Compose, Kubernetes)
GitHub: infisical
👉 DevOps Portal
GitHub: infisical
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6
Изучите топ-10 техник траблшутинга в Kubernetes, которые должен освоить каждый DevOps инженер. Эти советы по отладке K8s основаны на реальных кейсах и показывают, как быстро и надёжно решать типовые и критические проблемы в Kubernetes
Читайте здесь
👉 DevOps Portal
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5
Образы контейнеров
Довольно часто можно встретить практику, когда статически слинкованный бинарник на Go просто кладут в образ, собранный
- нет rootfs-лейаута
- отсутствуют CA-сертификаты
- нет базы данных часовых поясов
Решение? Использовать distroless-базу вместо этого
Подробнее о проблеме и одном из возможных решений:
🔹 Building Container Images FROM Scratch: 6 Pitfalls That Are Often Overlooked
🔹 What's Inside Distroless Container Images: Taking a Closer Look
👉 DevOps Portal
FROM scratch стоит ли так делать? 🤔Довольно часто можно встретить практику, когда статически слинкованный бинарник на Go просто кладут в образ, собранный
FROM scratch. Но у такого подхода есть ряд подводных камней:- нет rootfs-лейаута
- отсутствуют CA-сертификаты
- нет базы данных часовых поясов
Решение? Использовать distroless-базу вместо этого
Подробнее о проблеме и одном из возможных решений:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Этот репозиторий содержит более 20 инструментов, которые автоматически генерируют диаграммы архитектуры Kubernetes на основе манифестов, Helm-чартов или состояния кластера.
Github: Awesome-Kubernetes-Architecture-Diagrams
👉 DevOps Portal
Github: Awesome-Kubernetes-Architecture-Diagrams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2
Как удаляется Pod: разбор закулисных процессов
Когда мы выполняем команду:
появляется сообщение подтверждения, что Pod удалён (если всё прошло успешно):
Задумывались, что происходит “под капотом”?
Прежде чем разбирать процесс удаления Pod’а, нужно понимать базовые сигналы, которые используются при завершении процессов.
На картинке показан пошаговый разбор процесса, чтобы было понятнее✌️
👉 DevOps Portal
Когда мы выполняем команду:
kubectl delete pod
появляется сообщение подтверждения, что Pod удалён (если всё прошло успешно):
$ kubectl delete pod techops-pod
pod "techops-pod" deleted
Задумывались, что происходит “под капотом”?
Прежде чем разбирать процесс удаления Pod’а, нужно понимать базовые сигналы, которые используются при завершении процессов.
SIGTERM — запрашивает корректное завершение работы. Позволяет приложению завершить активные задачи и выполнить очистку перед остановкой. В Kubernetes при получении SIGTERM Pod получает время, чтобы завершиться “по-человечески”.
SIGKILL — принудительно завершает процесс без какой-либо очистки. Если Pod не завершился в отведённое время после SIGTERM, Kubernetes отправляет SIGKILL, чтобы окончательно его убить.
На картинке показан пошаговый разбор процесса, чтобы было понятнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5
Начиная с Kubernetes 1.34.1, интерфейс контейнерного рантайма (CRI-O) по умолчанию требует указания полностью квалифицированных имён образов.
При указании образов контейнеров в ваших деплойментах используйте полный путь до реестра.
Например: docker.io/nginx вместо просто nginx.
Если вы укажете короткое имя образа, которое совпадает с несколькими реестрами, пулл образа завершится ошибкой со следующим сообщением:
👉 DevOps Portal
При указании образов контейнеров в ваших деплойментах используйте полный путь до реестра.
Например: docker.io/nginx вместо просто nginx.
Если вы укажете короткое имя образа, которое совпадает с несколькими реестрами, пулл образа завершится ошибкой со следующим сообщением:
Warning Failed 57m (x12 over 59m) kubelet Error: ImageInspectError
Warning InspectFailed 4m43s (x258 over 59m) kubelet Failed to inspect image "": rpc error: code = Unknown
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5
Официальным языком DevOps должен быть YAML
- Helm использует YAML
- GitHub использует YAML
- Ansible использует YAML
- Argo CD использует YAML
- Kubernetes использует YAML
- Azure DevOps использует YAML
- Docker Compose использует YAML
и многие другие…
Все продвинутые инструменты, которые ты стремишься изучить и применять, работают на YAML.
Так что сначала разберись с ним, вот тебе шпаргалка
👉 DevOps Portal
- Helm использует YAML
- GitHub использует YAML
- Ansible использует YAML
- Argo CD использует YAML
- Kubernetes использует YAML
- Azure DevOps использует YAML
- Docker Compose использует YAML
и многие другие…
Все продвинутые инструменты, которые ты стремишься изучить и применять, работают на YAML.
Так что сначала разберись с ним, вот тебе шпаргалка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤7👍5🏆2
10 ошибок Kubernetes, которые нужно знать (и как их исправить)
Ошибки в K8s - одна из самых распространённых проблем, с которыми разработчики сталкиваются при запуске ворклоадов в продакшене, что приводит к неудачным деплоям, даунтайму и пустой трате времени на траблшутинг.
Читайте здесь
👉 DevOps Portal
Ошибки в K8s - одна из самых распространённых проблем, с которыми разработчики сталкиваются при запуске ворклоадов в продакшене, что приводит к неудачным деплоям, даунтайму и пустой трате времени на траблшутинг.
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5
В этой статье экспериментируют с запуском кластера MariaDB Galera в Kubernetes-лаборатории за $150, собранной на платах Orange Pi.
Подробно разбираются установка K3s, деплой MariaDB Kubernetes Operator и настройка resource limits для малых SBC
Читайте здесь
👉 DevOps Portal
Подробно разбираются установка K3s, деплой MariaDB Kubernetes Operator и настройка resource limits для малых SBC
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁3❤1
Знал, что в IP-адресах можно опускать нули - и всё равно будет работать?
Например:
Оба варианта указывают на один и тот же хост.
Маленький, но прикольный трюк, который реально экономит пару нажатий в лабах.
👉 DevOps Portal
Например:
10.20.0.2 → 10.20.210.0.0.68 → 10.68Оба варианта указывают на один и тот же хост.
Маленький, но прикольный трюк, который реально экономит пару нажатий в лабах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯24👍10❤5💊4😁1
Знали ли вы, что поды могут становиться «невидимыми»?
Проверьте свои знания Kubernetes, попробуйте найти невидимый pod в этом челлендже: https://labs.iximiuz.com/challenges/kubernetes-invisible-pod-0bf2109b
Никаких подсказок и решений. Готовьтесь к жёсткой задаче😈
👉 DevOps Portal
Проверьте свои знания Kubernetes, попробуйте найти невидимый pod в этом челлендже: https://labs.iximiuz.com/challenges/kubernetes-invisible-pod-0bf2109b
Никаких подсказок и решений. Готовьтесь к жёсткой задаче
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6💊2
Быстрый совет по Linux
Хочешь повторно использовать последний аргумент из предыдущей команды? Используй
Сбережёшь своё драгоценное время✌️
👉 DevOps Portal
Хочешь повторно использовать последний аргумент из предыдущей команды? Используй
!$Сбережёшь своё драгоценное время
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤8🔥1
Упрощённое визуальное руководство по CI/CD
Непрерывная интеграция (CI) — практика частого слияния изменений кода в общий репозиторий с автоматической проверкой их целостности
Непрерывное развёртывание (CD) — автоматизирует релиз и деплой изменений кода в продакшен, обеспечивая отлаженный и надёжный процесс
Этот визуальный гайд поможет быстро разобраться, как это работает
👉 DevOps Portal
Непрерывная интеграция (CI) — практика частого слияния изменений кода в общий репозиторий с автоматической проверкой их целостности
Непрерывное развёртывание (CD) — автоматизирует релиз и деплой изменений кода в продакшен, обеспечивая отлаженный и надёжный процесс
Этот визуальный гайд поможет быстро разобраться, как это работает
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Совет дня по Linux
В Linux оператор конвейера (|) полезен, когда нужно направить вывод одной команды на вход другой для дальнейшей обработки:
Однако это не перенаправляет ошибки. Если файл не существует, команда
Что если нужно перенаправить и обработать как ошибки, так и обычный вывод?
Здесь на помощь приходит оператор перенаправления
Этот оператор направляет как стандартный вывод (stdout), так и стандартные ошибки (stderr) первой команды через конвейер на стандартный ввод (stdin) второй команды. Посмотрите на следующий пример:
Обратите внимание на разницу: команда
Оператор
👉 DevOps Portal
В Linux оператор конвейера (|) полезен, когда нужно направить вывод одной команды на вход другой для дальнейшей обработки:
$ cat data.txt | grep "No such file"
Однако это не перенаправляет ошибки. Если файл не существует, команда
grep не даст результата.Что если нужно перенаправить и обработать как ошибки, так и обычный вывод?
Здесь на помощь приходит оператор перенаправления
|&.Этот оператор направляет как стандартный вывод (stdout), так и стандартные ошибки (stderr) первой команды через конвейер на стандартный ввод (stdin) второй команды. Посмотрите на следующий пример:
$ cat data.txt |& grep "No such file"
Обратите внимание на разницу: команда
grep смогла найти совпадение.Оператор
|& в bash является сокращением для оператора перенаправления 2>&1 |:$ cmd-1 2>&1 | cmd-2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
Мы все знаем, что у AWS недавно случился даунтайм. Давайте разберём, что именно произошло.
Регион US-EAST-1 — один из крупнейших и наиболее критичных дата-центров AWS, где размещена инфраструктура тысяч крупных сайтов и приложений. Когда у DynamoDB, ключевого сервисa баз данных, начали расти ошибки, это вызвало эффект домино по взаимосвязанным системам AWS. Сбои стали массовыми, потому что многие приложения полагаются на DynamoDB для операций хранения и выборки данных.
DynamoDB глубоко интегрирован в архитектуру control plane AWS. Многие сервисы AWS используют его внутри для хранения метаданных, информации о состоянии и конфигураций сервисов. Поэтому, когда API-эндпоинт DynamoDB стал недоступен через DNS, зависящие от него сервисы потеряли доступ к критически важным операционным данным. Сбой одновременно затронул более 36 сервисов AWS.
Когда упала DNS-резолюция, клиенты просто перестали находить нужные эндпоинты DynamoDB. Это запустило фидбек-луп, похожий на тот, что произошёл во время даунтайма DynamoDB в сентябре 2015 года: каждый повторный запрос потреблял больше ресурсов, вызывал новые таймауты, которые, в свою очередь, генерировали ещё больше ретраев - и так по кругу, пока система не ушла в штопор.
AWS, вместо того чтобы ждать, пока найдут и устранят одну конкретную корневую причину, сразу пошёл по нескольким параллельным сценариям восстановления.
Основное исправление заключалось в стабилизации инфраструктуры DNS-резолвинга для эндпоинта DynamoDB. Команды инженеров AWS, вероятно:
🔹 переконфигурировали или перезапустили DNS-резолверы, обслуживающие DynamoDB
🔹 временно перевели трафик на альтернативные пути DNS-резолвинга
🔹 применили аварийные настройки DNS-кэширования
Этот инцидент отражает взаимозависимость и хрупкость крупномасштабных облачных экосистем, где даже единственная точка отказа в базовом сервисе способна за минуты вызвать каскад проблем в десятках систем.
P.S. Это лишь часть деталей и предположений, которые я нашёл в интернете и сформировал на основе собственного понимания. Точные и подробные данные AWS ещё не раскрыл.
👉 DevOps Portal
Регион US-EAST-1 — один из крупнейших и наиболее критичных дата-центров AWS, где размещена инфраструктура тысяч крупных сайтов и приложений. Когда у DynamoDB, ключевого сервисa баз данных, начали расти ошибки, это вызвало эффект домино по взаимосвязанным системам AWS. Сбои стали массовыми, потому что многие приложения полагаются на DynamoDB для операций хранения и выборки данных.
DynamoDB глубоко интегрирован в архитектуру control plane AWS. Многие сервисы AWS используют его внутри для хранения метаданных, информации о состоянии и конфигураций сервисов. Поэтому, когда API-эндпоинт DynamoDB стал недоступен через DNS, зависящие от него сервисы потеряли доступ к критически важным операционным данным. Сбой одновременно затронул более 36 сервисов AWS.
Когда упала DNS-резолюция, клиенты просто перестали находить нужные эндпоинты DynamoDB. Это запустило фидбек-луп, похожий на тот, что произошёл во время даунтайма DynamoDB в сентябре 2015 года: каждый повторный запрос потреблял больше ресурсов, вызывал новые таймауты, которые, в свою очередь, генерировали ещё больше ретраев - и так по кругу, пока система не ушла в штопор.
AWS, вместо того чтобы ждать, пока найдут и устранят одну конкретную корневую причину, сразу пошёл по нескольким параллельным сценариям восстановления.
Основное исправление заключалось в стабилизации инфраструктуры DNS-резолвинга для эндпоинта DynamoDB. Команды инженеров AWS, вероятно:
Этот инцидент отражает взаимозависимость и хрупкость крупномасштабных облачных экосистем, где даже единственная точка отказа в базовом сервисе способна за минуты вызвать каскад проблем в десятках систем.
P.S. Это лишь часть деталей и предположений, которые я нашёл в интернете и сформировал на основе собственного понимания. Точные и подробные данные AWS ещё не раскрыл.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤11
Kubernetes позволяет добавлять собственные API
В Kubernetes есть мощный механизм под названием API Aggregation Layer.
Он помогает добавлять кастомные API в кластер.
Это означает, что вы можете создавать собственные типы ресурсов и заставлять Kubernetes делать больше, чем он умеет из коробки.
Классический пример использования Aggregation Layer в Kubernetes - это реализация Metrics Server.
Metrics Server реализует Metrics API как дополнительный API-сервер, используя Aggregation Layer.
Это означает, что хоть Metrics Server и является отдельным сервисом, к его API можно обращаться так, как будто он - нативная часть Kubernetes API.
В целом, поток запросов выглядит так:
- Когда вы запускаете
- Когда вы запускаете
Prometheus Adapter также использует этот механизм, чтобы отдавать кастомные метрики по адресу
👉 DevOps Portal
В Kubernetes есть мощный механизм под названием API Aggregation Layer.
Он помогает добавлять кастомные API в кластер.
Это означает, что вы можете создавать собственные типы ресурсов и заставлять Kubernetes делать больше, чем он умеет из коробки.
Классический пример использования Aggregation Layer в Kubernetes - это реализация Metrics Server.
Metrics Server реализует Metrics API как дополнительный API-сервер, используя Aggregation Layer.
Это означает, что хоть Metrics Server и является отдельным сервисом, к его API можно обращаться так, как будто он - нативная часть Kubernetes API.
В целом, поток запросов выглядит так:
- Когда вы запускаете
kubectl get pods, запрос уходит на /api/v1/pods и маршрутизируется в Core API Server.- Когда вы запускаете
kubectl top pods, запрос уходит на /apis/metrics.k8s.io/v1beta1/ и маршрутизируется в Metrics Server.Prometheus Adapter также использует этот механизм, чтобы отдавать кастомные метрики по адресу
/apis/custom.metrics.k8s.io/Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Свежий сбой в AWS (US-EAST-1)
Самое время пересмотреть стратегии аварийного восстановления в облаке (объяснённые простым языком)
Любая стратегия Disaster Recovery начинается с определения:
🔹 RTO (Recovery Time Objective) —
сколько простоя вы можете себе позволить?
🔹 RPO (Recovery Point Objective) —
какую потерю данных вы готовы терпеть?
Стратегии Disaster Recovery:
1. Backup and Restore → регулярные бэкапы и восстановление после инцидента
RTO: от нескольких часов до нескольких дней, RPO: момент последнего бэкапа
2. Pilot Light → ядро системы находится в standby и разворачивается при необходимости
RTO: от минут до часов, RPO: зависит от частоты репликации
3. Warm Standby → укороченная «живая» копия среды, которую можно быстро расшscaleить
RTO: минуты, RPO: от нескольких минут до часов
4. Hot / Multi-Site → оба сайта работают активно с мгновенным фейловером
RTO: близок к нулю, RPO: секунды
👉 DevOps Portal
Самое время пересмотреть стратегии аварийного восстановления в облаке (объяснённые простым языком)
Любая стратегия Disaster Recovery начинается с определения:
сколько простоя вы можете себе позволить?
какую потерю данных вы готовы терпеть?
Стратегии Disaster Recovery:
1. Backup and Restore → регулярные бэкапы и восстановление после инцидента
RTO: от нескольких часов до нескольких дней, RPO: момент последнего бэкапа
2. Pilot Light → ядро системы находится в standby и разворачивается при необходимости
RTO: от минут до часов, RPO: зависит от частоты репликации
3. Warm Standby → укороченная «живая» копия среды, которую можно быстро расшscaleить
RTO: минуты, RPO: от нескольких минут до часов
4. Hot / Multi-Site → оба сайта работают активно с мгновенным фейловером
RTO: близок к нулю, RPO: секунды
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4