Как стать автором
Обновить
71.12

Kubernetes *

ПО для работы с контейнерными приложениями

Сначала показывать
Порог рейтинга
Уровень сложности

Как несвязанные коммиты в пакетах Linux привели к неожиданным проблемам. Практические истории из SRE-будней. Часть 7

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6.7K

Иногда происходит так, что выполняешь привычную последовательность действий, которую уже делал много раз, а результат получается неожиданным. Например, с утра мы кипятим воду, кладём две ложки кофе и две ложки сахара в чашку, заливаем водой и наслаждаемся ароматным кофе. Но одним утром мы делаем глоток и понимаем, что в чашке холодный кофе.

Так однажды произошло и в процессе установки нашего продукта. Мы столкнулись с тем, что привычные действия приводят к совершенно непривычному результату. Об этом мы и решили рассказать. В этой статье мы разберём проблему с закрытием файловых дескрипторов при выполнении команды на создание пула в Ceph. Расскажем, как мы её обнаружили, что делали, чтобы определить причину её возникновения, и самое важное — почему это произошло и как решить проблему. Получился настоящий детектив.

Читать далее

Как мы управляем инфраструктурой на более 1000 серверов при помощи Ansible

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров20K

Привет, Хабр! Мы системные инженеры X5 Tech — Алексей Кузнецов и Борис Мурашин. У нас за плечами больше 15 лет опыта, в том числе поддержка сервисов Rapida, CyberPlat, TeleTrade, сопровождение стека BigData и внедрение кластеров Hadoop. В этой статье мы расскажем, как выбирали систему управления конфигурациями, какими критериями руководствовались, что в итоге выбрали, с какими проблемами столкнулись и как их решали.

Рассматривать вопрос, зачем вообще нужна система управления конфигурацией, не будем. Потому что считаем, что если у вас больше одного сервера, она уже необходима. Перейдём сразу к тому, почему мы выбрали именно Ansible.

Читать далее

Запуск проекта в Kubernetes за 60 минут: инструменты, GitLab, Terraform

Время на прочтение14 мин
Количество просмотров20K


Привет, Хабр! Меня зовут Илья Нырков, я архитектор в VK Cloud. В своей работе встречаюсь с желанием партнеров (это и крупный энтерпрайз, и различные стартапы) использовать Kubernetes, но их останавливает сложность поднятия, конфигурирования кластера, деплоя в нём приложений и построения CI/CD-процессов вокруг него. Я постараюсь показать на практическом примере, который вы можете повторить сами, как развернуть за сравнительно небольшое время полноценный CI/CD с рабочим приложением, доступным для внешних пользователей.
Читать дальше →

10 самых распространенных проблем при линтинге Dockerfile'ов

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров13K

Весной 2023 года разработчики Depot добавили в свой сервис возможность проверять Dockerfile'ы при каждой сборке.

В этой статье они делятся десятью наиболее распространенными проблемами при линтинге Dockerfile'ов, разбирают каждую проблему и объясняют, почему она возникает и как ее решить. Авторы отмечают, что со временем список может измениться, но даже в таком виде он станет хорошей отправной точкой для оптимизации Dockerfile'ов.

Читать далее

Впихнуть невпихуемое, или Как мы боролись с сервисами, которые слишком много «ели»

Время на прочтение7 мин
Количество просмотров6.5K

Всем привет! Меня зовут Максим, я релиз-инженер Ozon, и в этой статье я расскажу про впихивание невпихуемого, или про оптимальную с точки зрения используемых ресурсов стратегию деплоя в Kubernetes, которая позволила нам сэкономить тысячи ядер CPU и терабайты RAM.

Читать далее

Опыт масштабирования Kubernetes на 2k узлов и на 400k подов

Уровень сложностиСложный
Время на прочтение8 мин
Количество просмотров12K

Расскажу, как мы в PayPal начинали осваивать Kubernetes. На тот момент большинство наших рабочих нагрузок выполнялось на Apache Mesos, и в рамках этой миграции нам требовалось разобраться с некоторыми аспектами производительности у кластеров, в которых будет работать Kubernetes – с учётом той плоскости управления, что действует в PayPal. Из всех этих аспектов важнее всего было понять, как именно масштабируется платформа, а также выявить, как можно было бы улучшить масштабируемость, настраивая параметры кластера.

Тогда как Apache Mesos может прямо из коробки масштабироваться вплоть до 10 000 узлов, масштабировать Kubernetes непросто. При масштабировании Kubernetes требуется учитывать не только количество узлов и подов, но и ещё некоторые вещи, в частности: сколько ресурсов создано, сколько у нас контейнеров на под, сколько всего сервисов задействовано, а также пропускная способность при развёртывании подов. В этом посте описаны некоторые проблемы, с которыми нам довелось столкнуться при масштабировании, и рассказано, как нам удалось с ними справиться.
Читать дальше →

Как сделать Spark в Kubernetes простым в использовании: опыт команды VK Cloud

Время на прочтение10 мин
Количество просмотров5.8K


Сегодня Spark — отраслевой стандарт среди инструментов обработки данных. Его часто используют в связке с Hadoop, однако Hadoop не очень подходит для работы в облаке. Альтернативой может быть Kubernetes, однако самостоятельно его настраивать и конфигурировать очень сложно. Чтобы упростить ситуацию и помочь пользоваться всеми преимуществами технологий, не сталкиваясь с трудностями, мы сделали в VK Cloud Spark в Kubernetes. Для работы с ним не нужна глубокая экспертиза в K8s. 

Меня зовут Алексей Матюнин, я ведущий программист команды разработки ML Platform в компании VK Cloud. Расскажу, почему мы решили делать Spark в Kubernetes, с какими сложностями столкнулись и как их обходили, а также что получили в итоге.

Материал подготовлен по мотивам моего выступления на конференции VK Data Meetup.
Читать дальше →

Создание эмулятора игр MS-DOS в Kubernetes

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров5K

В этой статье мы разберёмся, как можно интегрировать JavaScript-библиотеку js-dos в собственное решение Kubernetes, что позволит нам предоставлять доступ к играм MS-DOS в виде сервисов Kubernetes и запускать их в браузере.

Кроме того, по ходу статьи я дам советы и рекомендации начального, продвинутого и высокого уровней по разработке собственных контроллеров Kubernetes при помощи Golang и Kubebuilder или Operator SDK.
Читать дальше →

Работа с хранилищами в Kubernetes: руководство для инженеров

Время на прочтение21 мин
Количество просмотров25K
image

Как DevOps-инженер я часто сталкиваюсь с необходимостью глубокого понимания тонких аспектов Kubernetes. Одним из таких ключевых элементов является управление хранилищем данных. Хотя этот элемент иногда остаётся в тени других задач, его важность для успешного развёртывания и поддержки приложений велика.

Накопленный мною опыт в этой области стал основой для этой статьи.

Я сфокусируюсь на трёх ключевых элементах управления хранилищем в Kubernetes:

  • PersistentVolumes (PV).
  • PersistentVolumeClaims (PVC).
  • Storage Classes.

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

Так, при развёртывании масштабируемого веб-приложения, которое обрабатывает большие объёмы пользовательских данных и транзакций, хорошо настроенное управление хранилищем заметно повышает производительность и доступность данных. И тогда при увеличении нагрузки на приложение доступ к данным остаётся быстрым и надёжным, задержки уменьшаются, общее взаимодействие пользователя с приложением улучшается.

Например, у нас была задача обеспечить надёжное и масштабируемое хранение данных в веб-приложении для управления клиентскими заказами. Мы настроили в Kubernetes Storage Class на основе SSD для базы данных (что не является хорошей практикой): это помогло обеспечить быстрый доступ и обработку транзакций. А для логов и нечасто применяемых данных использовали отдельный Storage Class с HDD, и это позволило снизить затраты.

А главное, Storage в Kubernetes — это такая штука, которую ты сделал и забыл, дальше оно там само работает.

Рассказываю детально.
Читать дальше →

Kubernetes и Kernel Panic

Время на прочтение6 мин
Количество просмотров3.5K


Команда VK Cloud перевела статью о том, как на контейнерной платформе Netflix увязали ошибку  Kernel Panic ядра Linux с подами Kubernetes.
Читать дальше →

Kubernetes 1.29: бэкенд на nftables, изменение атрибутов тома и другие фичи

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров7K

Сегодня ожидается выход очередной версии Kubernetes — 1.29. Среди главных изменений — бэкенд на основе nftables для kube-proxy, множественные CIDR для сервисов и функция QueueingHint, которая помогает решить, как повторно ставить поды в очередь. TaintManager стал отдельным контроллером, а список допустимых значений лейблов для метрики теперь можно настраивать динамически. Еще появился объект VolumeAttributesClass — он позволяет менять атрибуты тома после его заказа. Также стал доступен инструментарий для реализации структурированной auth-конфигурации, предусмотренный в KEP’е от «Фланта», и появилась нативная поддержка операции sleep для PreStop-хуков.

Читать далее

Практическая магия Istio при построении архитектуры крупных микросервисных систем. Часть 1 — функциональная

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров21K

Под Новый Год мы с женой пересматриваем одну популярную магическую сагу — хочется знаете ли в жизни волшебства. В IT волшебства тоже хватает — от танцев с бубнами до самых современных технологий, принцип работы которых проще объяснить тёмной магией. Так, например, бытует мнение, что настройка service mesh — это магия, подвластная лишь волшебникам DevOps. Но у нас в Альфа-Банке разработчики исторически не маглы, а, как минимум, полукровки, поэтому имеют право приобщиться к волшебному миру.

В этой серии статей я хочу поделиться опытом изучения технологии service mesh, а именно Istio, на примере практической задачи, возникшей какое то время назад в одной из систем Альфа Банка, системным архитектором которой я являюсь.

В первой статье я расскажу о наших архитектурных подходах, породивших задачу, а также в подробностях, со схемами и примерами, покажу как мы ее решали и с какими трудностями столкнулись.

Вторая статья будет посвящена нагрузочному тестированию и выводам об эффективности полученного решения.

Читать далее

7 ошибок джунов в DevOps, которые мешают им стать мидлами

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров21K

Привет! Меня зовут Сергей, я руковожу направлением DevOps в KTS.

В прошлой статье мы рассмотрели, каким должен быть джуниор-DevOps-инженер. Сегодня пойдём чуть дальше, вспомним наш опыт и расскажем, какие ошибки могут мешать джуниорам перейти на грейд «мидл».

Читать далее

Ближайшие события

Правильные, но (не)простые бэкапы. Как настроить резервное копирование в Kubernetes?

Время на прочтение13 мин
Количество просмотров8.1K

Разработчикам и системным администраторам важно обеспечивать надежность и доступность данных в приложениях Kubernetes. Несмотря на высокую степень автоматизации и управления контейнерами, всегда остаются риски сбоев или человеческих ошибок — поэтому необходимо заранее задуматься о резервном копировании.

Меня зовут Филипп, я системный администратор в отделе Data- и ML-продуктов Selectel. В этой статье постараюсь раскрыть, какие есть решения для резервного копирования в Kubernetes, и на простом примере покажу, как с ними работать. Подробности под катом.
Читать дальше →

Как разбить видеокарту и поделиться с коллегами? Динамический шеринг GPU в Kubernetes с помощью MIG, MPS и TimeSlicing

Уровень сложностиСложный
Время на прочтение31 мин
Количество просмотров5.7K

Привет, Хабр! С вами снова Антон, все еще DevOps-инженер в отделе Data- и ML-продуктов Selectel, который все еще исследует тему шеринга GPU. В предыдущей статье я рассказал, как можно использовать шеринг видеокарт в Kubernetes.

В комментариях была затронута тема динамического переконфигурирования MIG. Вопрос: можно ли настраивать деление GPU при активной нагрузке? Я погрузился подробнее в этот вопрос и нашел несколько способов, как это сделать. Интересно? Тогда добро пожаловать под кат!
Читать дальше →

Соблюдай, или must die: правила безопасного обновления Kubernetes до новой версии

Время на прочтение6 мин
Количество просмотров4.1K


Регулярное обновление Kubernetes — медаль с двумя сторонами. С одной стороны, с выкаткой обновлений оперативно фиксятся проблемы, добавляются новые возможности и реализации. С другой — для многих пользователей из-за отсутствия компетенций и понимания нюансов настройки обновление K8s до новой версии сопряжено со сложностями. Пробуем исправить ситуацию: рассказываем, как обновиться, чтобы ничего не сломать.
Читать дальше →

«Иногда лучше написать велосипед»: как тестировать кластеры Kubernetes с помощью Python

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров7.4K

Сегодня Kubernetes — это основное средство для оркестрации контейнеров на рынке, поэтому их тестирование занимает особую позицию в перечне задач. Большинство тривиальных тестов можно запустить через команду kubectl, либо фреймворк Sonobuoy для тестирования сертификации версий.

Однако для сложных интеграционных тестов, которые завязаны на Kubernetes API, необходимо реализовать что-то свое. Я воспользовался клиентской библиотекой Python для Kubernetes, которая позволяет работать со всеми прелестями его интерфейса, соединил ее с PyTest и API нашего продукта — Managed Kubernetes. Что из этого вышло, показываю в статье.
Читать дальше →

Kubernetes Networking: сервисы, Ingress и Network Policies

Время на прочтение16 мин
Количество просмотров23K
image

Когда я впервые столкнулся с задачей масштабирования сложного приложения в Kubernetes, то был полон оптимизма. Однако вскоре стало ясно, что управление сетевым трафиком и безопасностью в такой динамичной среде — это непросто. Наше приложение начало страдать от потерь пакетов данных и сетевых задержек, что сказывалось на общей производительности и пользовательском опыте. Из-за этого возникла потребность в глубоком понимании сетевых возможностей Kubernetes, таких, как сервисы, Ingress и Network Policies, чтобы эффективно управлять трафиком, обеспечивать безопасность и максимизировать производительность. Этот опыт стал для меня настоящим откровением и подтолкнул к написанию данной статьи.

Меня зовут Дмитрий, и я старший DevOps-инженер в ГК Иннотех. В моей работе я часто сталкиваюсь с задачами, которые требуют глубокого понимания сетевых аспектов в Kubernetes.

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

Когда дело доходит до экспозиции наших приложений наружу, я применяю Ingress для управления входящим трафиком. Это не только упрощает настройку SSL/TLS, но и предоставляет гибкие возможности для маршрутизации. И, конечно же, безопасность стоит не на последнем месте. С помощью Network Policies можно тонко настроить сетевые правила, определяя, какие поды могут взаимодействовать друг с другом, что значительно повышает уровень безопасности нашей инфраструктуры.

Данная статья будет особенно полезна для DevOps-инженеров, системных администраторов и архитекторов, которые хотят глубже понять механизмы сетевого взаимодействия в Kubernetes.

Сосредоточимся на критически важных элементах, таких, как сервисы, Ingress и Network Policies. Освоение этих базовых принципов не только упростит вашу работу с Kubernetes, но и даст вам уверенность в управлении сложными системами. Надеюсь, это будет полезно!
Читать дальше →

Существуют ли джуниор-DevOps-инженеры и почему их ищут

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров15K

Привет! Меня зовут Сергей, я занимаюсь направлением DevOps в KTS. Сегодня поговорим о том, существуют ли джуниоры в DevOps-разработке — и какими они должны быть.

Читать далее

Установка Deckhouse в kind: пробуем K8s-платформу на ноутбуке — без серверов и облаков

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров7K

Чтобы попробовать Kubernetes-платформу Deckhouse в деле, придется найти мощный сервер, пространство у облачного провайдера или несколько машин и прокси-сервер. Но что делать, если хочется просто потестировать Deckhouse, а технических возможностей для этого нет? Конечно же, установить Deckhouse в kind — ведь для этой задачи сгодится даже ноутбук, а на выходе у нас будет рабочая инсталляция Kubernetes-платформы, правда, с некоторыми ограничениями. 

Читать далее

Вклад авторов

Работа

DevOps инженер
31 вакансия