Kubernetes для DevOps
256 subscribers
29 photos
7 videos
1 file
35 links
Полезное для разработчиков
Download Telegram
⚡️ Лекции: Основы контейнеризации, микросервисы, Kubernetes и как это защитить?

Контейнеры, микросервисы, лямбды и где они обитают
Устройство сети в Kubernetes
Calico для сети в Kubernetes
Межсетевой экран и Kubernetes
Сетевые политики Kubernetes
CloudGuard для Kubernetes - Обзор и демо

📌 источник

#devops #девопс
⚙️ Инновации в CI/CD на основе Kubernetes и Helm Charts


Каждый день CI/CD становится более важным для быстрого развертывания приложений. Kubernetes и Helm Charts упрощают рабочие процессы, позволяя вам бесперебойно интегрировать и развертывать ваши приложения. 🚀



Использование GitOps для управления конфигурациями является новым трендом.


🔗 Подробности по теме: Kubernetes CI/CD


📈 Имейте в виду лучшие практики в DevOps!
⚙️ Kubernetes pentest

Эта статья посвящена тестированию на проникновение Kubernetes. Предварительно статья разделена на сервисы и как их можно найти, эксплуатировать и может быть закрепиться.

📌 Ссылка на статью.

#Kubernetes #pentest

Kubernetes в телеграм
🖥 Karpenter — это автомасштабирующий кластер, который автоматически запускает только необходимые вычислительные ресурсы для обработки модулей вашего кластера. Он разработан, чтобы позволить вам в полной мере использовать преимущества облака с помощью быстрого и простого предоставления вычислительных ресурсов!

🔗 Ссылка: *клик*
▪️Github
Juices - это облачная высокопроизводительная распределенная файловая система, основанная на объектном хранилище и базе данных, для создания архитектуры разделения данных и метаданных

В ней легко хранятся десятки миллиардов файлов

https://github.com/juicedata/juicefs

Kubernetes в телеграм
👣 helm-chartsnap предоставляет инструмент для Snapshot тестов (snapshot testing) Helm-чартов.


💡 Snapshot тесты — это тесты, которые делают скриншот экрана (эталонный скриншот) и сравнивают с актуальным скриншотом, который делается во время прогона тестов.

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

Чарты – это пакеты, которые могут включать в себя все для запуска приложения в Kubernetes, от deployments до services.

helm-chartsnap помогает тестировать Kubernetes Helm-чарты, автоматически сравнивая текущее состояние с предыдущими снимками, что позволяет выявлять изменения и предотвращать нежелательные конфигурации

🔐 Лицензия: MIT

▪️Github
💻 Kubernetes для современной инженерии данных!

🌟 В этом видео вы подробно окунетесь в мир Kubernetes — мощного инструмента для управления контейнеризированными приложениями, а также рассмотрите его применение в области инжиниринга данных!

🕞 Продолжительность: 1:25:17

🔗 Ссылка: *клик*
💻 Разрешения Kubernetes RBAC, о которых вы могли не знать, но должны знать!

🌟 K8s RBAC предлагает три разрешения со скрытыми полномочиями, которые могут быть использованы злонамеренно. Узнайте, как контролировать их использование!

🔗 Читать: *клик*

Kubernetes в телеграм
Как Kubernetes определяет готовность узла: детальный разбор

💡 В Kubernetes узлы играют ключевую роль, предоставляя ресурсы для запуска контейнеров. Чтобы гарантировать, что узел может эффективно выполнять свои функции, Kubernetes использует статус "Node Ready", который указывает, что узел готов к обработке рабочих нагрузок. Однако этот статус не статичен и может изменяться в зависимости от состояния различных компонентов узла.

Как работает определение готовности узла?

❗️ Kubernetes использует компонент kubelet для управления состоянием узла. Kubelet — это агент, который работает на каждом узле кластера и отвечает за запуск и мониторинг контейнеров через контейнерный runtime (например, Docker или containerd). Этот агент регулярно отправляет обновления в контроллер управления жизненным циклом узлов (node lifecycle controller), который определяет состояние узла и решает, может ли узел принимать новые задачи.

💡 Чтобы узел считался "готовым", kubelet проверяет состояние различных критичных компонентов, включая:
🌟 Контейнерный runtime. Он отвечает за выполнение контейнеров, и если он не функционирует корректно, узел будет считаться неготовым.
🌟 Сетевые компоненты. Узел должен иметь рабочее сетевое соединение, чтобы взаимодействовать с другими узлами кластера и внешними ресурсами.
🌟 Физическое состояние узла. Например, узел может стать неготовым, если заканчиваются ресурсы (память, процессор и т.д.).

🔍 Проверка состояния узла

💡 Kubelet периодически отправляет Heartbeat сигналы, которые содержат данные о состоянии узла. Если контроллер не получает такие сигналы в течение определённого времени, он считает, что узел "упал", и изменяет его статус на Unknown (неизвестно), чтобы предотвратить отправку задач на этот узел.

Если хотя бы один из критичных компонентов перестает работать, статус узла изменяется на NotReady (не готов). В такой ситуации узел продолжает функционировать, но новые задачи на него не отправляются.

🔍 Метки состояния узла

Каждый узел в Kubernetes имеет набор меток (conditions), которые описывают его текущее состояние. Например, для статуса "Node Ready" используются следующие метки:
🌟 Ready: True, False или Unknown. Определяет, может ли узел принимать новые задачи.
🌟 MemoryPressure: указывает, если на узле нехватка оперативной памяти.
🌟 DiskPressure: показывает, есть ли проблемы с дисковым пространством.
🌟 PIDPressure: информирует о том, что узел исчерпал лимиты процессов.

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

Как отслеживать готовность узлов?

Чтобы узнать статус узлов в кластере, можно использовать команду:


kubectl get nodes


💡 Она покажет список всех узлов и их состояние. Узлы со статусом "NotReady" могут временно не принимать задачи, что может быть вызвано, например, недостатком ресурсов или проблемами с контейнерным runtime.

Для более детальной информации можно использовать:


kubectl describe node <node-name>


💡 Это предоставит подробное описание всех меток состояния и диагностики узла, что поможет быстрее обнаружить причину проблем

Kubernetes в телеграм
💻 kube-startup-cpu-boost от Google — контроллер для Kubernetes, который временно увеличивает запросы и лимиты CPU во время старта рабочих нагрузок. Это помогает приложениям быстрее запускаться в контейнерах, выделяя дополнительные ресурсы в критический момент. После инициализации ресурсы возвращаются к обычным значениям.

🔐 Лицензия: Apache-2.0

🖥 Github
💻 Kubernetes для современной инженерии данных!

🌟 В этом видео вы подробно окунетесь в мир Kubernetes — мощного инструмента для управления контейнеризированными приложениями, а также рассмотрите его применение в области инжиниринга данных!

🕞 Продолжительность: 1:25:17

🔗 Ссылка: *клик*
👣 Holocron — библиотека для управления выбором лидера в распределённых системах

💡 Библиотека использует объектное хранилище, чтобы несколько узлов в системе могли координироваться и выбирать ведущий узел (лидера), который будет управлять процессами. Лидер выбирается с помощью условных записей: только один узел может стать лидером, пока другие остаются в ожидании. Это важно для систем, где нужно избегать конфликтов между узлами при управлении ресурсами, особенно при сбоях

🔐 Лицензия: MIT

🖥 Github
🛟🛟 Архитектура кластеров Kubernetes — выбор размера рабочего узла

Если вы создаете on-premises кластер, стоит ли вам использовать несколько мощных серверов последнего поколения или использовать около дюжины старых машин, которые будут валяться в центре обработки данных?

Или, если вы используете управляемый сервис Kubernetes, такой как Google Kubernetes Engine (GKE), следует ли вам использовать восемь экземпляров n1-standard-1 или два экземпляра n1-standard-4 для достижения желаемой вычислительной мощности?

Продолжение здесь

#гайд
💻 Kube Trace NFS — это инструмент для мониторинга сетевых файловых систем (NFS) в Kubernetes-кластерах с использованием eBPF!

🌟 Он отслеживает операции чтения, записи, открытия и получения атрибутов для сбора телеметрии на уровне узла, экспортируя данные в Prometheus для анализа в Grafana. Инструмент предназначен для более детального контроля NFS-трафика между клиентами и серверами, поддерживает метрики по производительности и задержкам, а также интегрируется с Helm для установки.

🖥 Github
🔥 Keep — полезный инструмент для управления инженерными оповещениями!

🌟 Он позволяет командам разработчиков и DevOps эффективно фильтровать, группировать и анализировать инциденты, предоставляя мощные инструменты визуализации и интеграции. Keep собирает оповещения из различных систем мониторинга и автоматизации, включая Prometheus, Datadog, Sentry, и другие, а затем предоставляет контекст для их анализа.

🌟 Основные функции Keep включают настройку уведомлений, создание аналитических дашбордов, а также возможность интеграции с внешними API. Он ориентирован на улучшение реакции на инциденты и минимизацию шума от незначительных событий, помогая командам сосредотачиваться на решении критических проблем.

🖥 Github

Kubernetes в телеграм
Прогрессивный инструмент, автоматизирующий процесс релизов приложений, работающих на #Kubernetes

на базе #golang

https://github.com/fluxcd/flagger

Kubernetes в телеграм
Content-CheatsheetKubernetes.pdf
4.4 MB
💻 Шпаргалка метрик Kubernetes

Полезная шпаргалка по k8s с листингом метрик диска, джобов, сервисов и событий.

#kubernetes #шпаргалка
👣 helm-cel — плагин для валидации значений в Helm-чартах с помощью CEL

💡 helm-cel помогает валидировать значения(values.yaml) helm чартов через CEL(Common Expression Language) - язык для написания простых логических выражений), что дает более выразительную валидацию, возможность переиспользования правил, разные уровни строгости и четкие сообщения об ошибках, в отличие от стандартной JSON Schema валидации (values.schema.json), которая более ограничена в возможностях написания сложных правил и переиспользования кода.

Пример правил:
expressions:
portRange: 'values.service.port >= 1 && values.service.port <= 65535'
nodePortRange: 'values.service.nodePort >= 30000 && values.service.nodePort <= 32767'

rules:
- expr: "${portRange}"
desc: "Service port must be valid"

- expr: 'values.service.type == "NodePort" ? ${nodePortRange} : true'
desc: "NodePort must be valid when type is NodePort"


❤️ Проект от подписчика, если хотите поделиться своим проектом - пишите сюда...