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

Пользователь

Отправить сообщение

Корректное завершение работы подов в Kubernetes

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

Перевели статью и наглядную инфографику управляющего директора Learnk8s Daniele Polencic о корректном завершении работы подов в Kubernetes. В тексте много примеров и иллюстраций, которые помогут начинающим разобраться, как предотвратить разрыв соединений при запуске или остановке пода. В том числе для долгоживущих соединений и задач.

Читать далее
Всего голосов 22: ↑22 и ↓0+31
Комментарии5

Достать до звезд: Осваиваем операторы Ansible для управления приложениями в Kubernetes

Время на прочтение9 мин
Количество просмотров16K
Посмотрим, как использовать опубликованные в Ansible Galaxy роли (Role) в качестве операторов (Operator), управляющих приложениями в Kubernetes, и разберем это на примере создания оператора, который просто устанавливает приложение, гибко настраивая свое поведение в зависимости от среды.



Мы будем использовать Ansible Operator и модуль k8s, чтобы показать, как применять Ansible для создания Kubernetes-приложений.
Читать дальше: Осваиваем операторы Ansible для управления приложениями в Kubernetes
Всего голосов 13: ↑12 и ↓1+11
Комментарии2

Погружение в недра Apache Lucene: архитектура индекса, выполнение поиска и репликация данных

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

Это перевод моей статьи в моем блоге про архитектуру Apache Lucene, про одну из самых известных библиотек реализации поискового индекса. Elasticsearch и Solr, широко известные реализации масштабируемых решений для поиска, они используют эту библиотеку под капотом. Я работаю над созданием решений для поиска в сфере электронной коммерции, и постоянно сталкиваюсь с этой библиотекой при повседневной работе. Apache Lucene реализует большую часть необходимого функционала для построения поисковой системы. Начиная с процесса токенизации, который извлекает канонические формы слов в виде токенов, продолжая полной реализацией инвертированного индекса, и завершая репликацией сегментов в режиме близком к реальному времени. Количество практически полезных фичей, реализованных за два десялилетия существования библиотеки, колоссально. Эта библиотека интегрирует знания из лингвистики, математики и компьютерных наук.

Инвертированный индекс

Apache Lucene реализует архитектуру инвертированного индекса. На уровне реализации логический индекс содержит коллекцию неизменяемых сегментов, хранящихся как файлы в файловой системе. Каждый сегмент сам по себе является инвертированным индексом. Такой индекс — это структура данных словаря с терминами в качестве ключей и данными по размещению (postings) в качестве значений. Постинг — это список идентификаторов документов и количеств вхождений термина в данном документе. Этот словарь использует Finite State Transducers, FST [1] для поиска терминов, что можно представить как нечто похожее на отсортированные списки с пропусками [2]. Такая отсортированная навигационная карта является краеугольным камнем для эффективного поиска по огромным обьемам документов. Lucene также очень эффективен в использовании памяти. Среди прочих алгоритмов, он использует алгоритмы кодирования разницами для сжатия идентификаторов документов в постингах [3]. Упрощенно идея этого сжатия заключается в сортировке списока целых чисел и сохранения дельт между ними. Это также повышает производительность операций ввода-вывода диска.

Читать далее
Всего голосов 2: ↑2 и ↓0+4
Комментарии2

Выборочный роутинг по доменным именам на маршрутизаторах Keenetic

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

Эта статья предназначена для тех, кто хочет настроить выборочный роутинг на основе доменных имен на своих маршрутизаторах Keenetic. Основная цель — оптимизировать управление сетевым трафиком по доменным именам, избегая необходимости вручную добавлять многочисленные маршруты в таблицу маршрутизации. Такой подход значительно упрощает настройку и позволяет гибко перенаправлять трафик через VPN-туннели.

Читать далее
Всего голосов 12: ↑12 и ↓0+15
Комментарии13

Установка и использование утилиты screen в Linux, Ubuntu

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

Утилита Screen — это менеджер окон Linux, который позволяет переключаться между несколькими процессами в одном физическом терминале. Screen предоставляет буфер истории для прокрутки и механизм копирования и вставки текста между окнами.

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

Читать далее
Всего голосов 18: ↑14 и ↓4+19
Комментарии17

Создание кастомного Kubernetes Scheduler для StatefulSet

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

В этой статье мы рассмотрим процесс создания кастомного scheduler'а для Kubernetes, ориентируясь на Kubernetes Scheduling Framework.

Обычно для назначения подов на вычислительные узлы используется стандартный планировщик, который, проанализировав различные параметры, автоматически выполнит оптимальное размещение (например, распределит поды таким образом, чтобы не размещать их на вычислительных узлах с недостаточными ресурсами).

В одном из наших проектов, где мы использовали оператор Strimzi для развёртывания кластеров Kafka, заказчик выдвинул специфические требования по размещению данных, резервному копированию и восстановлению.
Одним из ключевых пунктов стал вопрос строгой привязки экземпляров приложения к вычислительным узлам.
Для этого нам пришлось создать кастомный scheduler, учитывая нюансы инфраструктуры, особенности приложения и требуемые правила размещения.

Schedule Reading
Всего голосов 4: ↑4 и ↓0+6
Комментарии2

Как небольшой «тюнинг» Talos Linux увеличил производительность NVMe SSD в 2.5 раза

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

Привет, Хабр!

Мы рассмотрим несколько примитивных настроек Linux, которые могут повысить производительность NVMe SSD дисков в разы. Под катом много интересных подробностей, так что скучно не будет.

Читать далее
Всего голосов 52: ↑51 и ↓1+64
Комментарии22

Аутентификация в Kubernetes с помощью Dex: прикручиваем LDAP

Время на прочтение8 мин
Количество просмотров10K
Сегодня я подробно разберу настройку аутентификации в Kubernetes с помощью Dex в связке с LDAP, а также покажу, как можно добавлять статических пользователей в Dex. 

В статье не буду останавливаться на основных принципах работы Dex, а сразу перейду к установке и настройке LDAP. Познакомиться с принципами работы Dex можно в этой статье.

Что будем делать:

  1. Установим OpenLDAP и настроим на нем поддержку STARTTLS. 
  2. Опишем структуру LDAP-каталога нашей организации.
  3. Включим поддержку OIDC (OpenID Connect) на kube-api-серверах.
  4. Получим SAN-сертификат для доменов, которые будет использовать Dex.
  5. Установим Dex и Dex-auth, где мы опишем LDAP-каталог и статических пользователей
  6. Сгенерируем kubeconfig нашего пользователя для работы с кластером.
  7. Настроим RBAC-авторизацию для групп и пользователей в кластере.

Итак, поехали.



Показывать буду на примере уже готового кластера Kubernetes с Helm версии 3 и Ingress, а также тремя доменными именами.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

AntiBlock 2.0

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

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

С помощью обработки DNS запросов, программа направляет только заблокированные сайты через VPN, а остальные идут без изменений.

Читать далее
Всего голосов 9: ↑9 и ↓0+11
Комментарии18

Восстанавливаем работу MySQL. Решение задачи

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

Привет! Я Саша Хренников, руководитель DevOps-юнита в KTS.

Недавно мы провели DevOps-челлендж, где нужно поднять неисправный экземпляр MySQL. Было нелегко — быстрее всех справились восемь сильнейших DevOps-мастеров, которым мы уже отправляем призовой мерч.

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

Читать далее
Всего голосов 19: ↑19 и ↓0+21
Комментарии2

Как скопировать все пакеты с nuget.org

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

Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?

Узнать как
Всего голосов 7: ↑7 и ↓0+10
Комментарии10

Home Lab мечты в Kubernetes

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

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

В этой статье я расскажу про свой путь в построении такой лаборатории с помощью Kubernetes и облачных технологий. Здесь вас ждут полностью воспроизводимые k8s‑кластеры, бекапы с авто‑восстановлением, хитрые VPN‑ретрансляторы, хорошо защищенные приватные и публичные приложения, а также много‑много автоматизации и красивых инженерных решений.

Читать далее
Всего голосов 19: ↑19 и ↓0+24
Комментарии11

Настройка CI/CD для GitLab-репозитория: работа с микросервисами

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

Рассказываем о полезных практиках конфигурации пайплайна с помощью GitLab CI/CD в контексте микросервисной архитектуры. Рассмотрим: добавление заданий в пайплайн путём проверки изменений в определённых микросервисах, концепцию модульных пайплайнов и явное указание зависимостей между заданиями для их выполнения не по этапам.

Читать далее
Всего голосов 9: ↑9 и ↓0+12
Комментарии4

Проверка состояния кластера kubernetes

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

Итак, вы наконец-то стали счастливым обладателем k8s-кластера: получили его в наследство, в подарок на Новый год, заказали в DataLine) и т. п. У новых клиентов и даже у опытных пользователей часто возникает вопрос, как оценить кластер и проверить его работоспособность? 

В ответ мы написали этот мануал: при выполнении всех пунктов можно закрыть 95% вопросов о состоянии здоровья кластера. Поскольку проверка такой многокомпонентной системы может стать нетривиальной задачей, подойдем к процессу как можно проще.

Читать далее
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Calico для сети в Kubernetes: знакомство и немного из опыта

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


Цель статьи — познакомить читателя с основами сетевого взаимодействия и управлением сетевыми политиками в Kubernetes, а также со сторонним плагином Calico, расширяющим стандартные возможности. Попутно будут продемонстрированы удобство конфигурации и некоторые фичи на реальных примерах из опыта нашей эксплуатации.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии0

Учимся читать QR-коды без компьютера

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

Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.

Прочитав статью, вы узнаете:

  • Из чего состоят QR-коды.
  • Как декодировать QR-коды вручную (используя нашу шпаргалку).
Читать дальше →
Всего голосов 102: ↑99 и ↓3+125
Комментарии33

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

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

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

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

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

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

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

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

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

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

Рассказываю детально.
Читать дальше →
Всего голосов 49: ↑49 и ↓0+49
Комментарии4

Анонимная сеть в 100 строк кода на Go

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

Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.

Читать далее
Всего голосов 32: ↑32 и ↓0+39
Комментарии11

Как мы законтрибьютили целую строчку в HashiCorp Vault

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

Привет! Меня зовут Пётр Жучков, я руководитель группы хранения секретов и конфигураций в отделе Message Bus в Ozon. Мы отвечаем за поддержку и развитие системы хранения и использование секретов, активно сотрудничаем с ребятами из департамента информационной безопасности, чтобы все сервисы могли безопасно работать с секретами.

Основной наш инструмент для управления секретами — Vault. Он отличается хорошей функциональностью, а также имеет подробную документацию, благодаря которой можно быстро начать его использовать. Конечно, запустить Vault и подключить к своему сервису — это совсем не то же самое, что надёжно и безопасно предоставить платформенный доступ более 6000 сервисов и других инфраструктурных систем. Для нас крайне важно отдавать данные быстро и хранить безопасно.

Если вы хотите безопасно хранить секреты или просто погрузиться в gRPC и Go, то, думаю, вам будет интересно и полезно не повторять наши ошибки.

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

Читать далее
Всего голосов 76: ↑75 и ↓1+80
Комментарии6

Persistent Storage для Kubernetes на базе Linstor

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

Многие начинающие DevOps'ы, осваивающие kubernetes сталкиваются с вопросом: "Как организовать Persistent Storage в своём kubernetes-кластере?" Для этой цели есть много вариантов: ceph, nfs, mayastor, iscsi, linstor, longhorn. Сегодня мы рассмотрим один из них - linstor (он же piraeus). Мы настроим свой Persistent Storage и подключим его к нашему kubernetes-кластеру.

Читать далее
Всего голосов 6: ↑5 и ↓1+8
Комментарии14

Информация

В рейтинге
3 055-й
Зарегистрирован
Активность