Перевели статью и наглядную инфографику управляющего директора Learnk8s Daniele Polencic о корректном завершении работы подов в Kubernetes. В тексте много примеров и иллюстраций, которые помогут начинающим разобраться, как предотвратить разрыв соединений при запуске или остановке пода. В том числе для долгоживущих соединений и задач.
Пользователь
Достать до звезд: Осваиваем операторы Ansible для управления приложениями в Kubernetes
Мы будем использовать Ansible Operator и модуль k8s, чтобы показать, как применять Ansible для создания Kubernetes-приложений.
Погружение в недра Apache Lucene: архитектура индекса, выполнение поиска и репликация данных
Это перевод моей статьи в моем блоге про архитектуру Apache Lucene, про одну из самых известных библиотек реализации поискового индекса. Elasticsearch и Solr, широко известные реализации масштабируемых решений для поиска, они используют эту библиотеку под капотом. Я работаю над созданием решений для поиска в сфере электронной коммерции, и постоянно сталкиваюсь с этой библиотекой при повседневной работе. Apache Lucene реализует большую часть необходимого функционала для построения поисковой системы. Начиная с процесса токенизации, который извлекает канонические формы слов в виде токенов, продолжая полной реализацией инвертированного индекса, и завершая репликацией сегментов в режиме близком к реальному времени. Количество практически полезных фичей, реализованных за два десялилетия существования библиотеки, колоссально. Эта библиотека интегрирует знания из лингвистики, математики и компьютерных наук.
Инвертированный индекс
Apache Lucene реализует архитектуру инвертированного индекса. На уровне реализации логический индекс содержит коллекцию неизменяемых сегментов, хранящихся как файлы в файловой системе. Каждый сегмент сам по себе является инвертированным индексом. Такой индекс — это структура данных словаря с терминами в качестве ключей и данными по размещению (postings) в качестве значений. Постинг — это список идентификаторов документов и количеств вхождений термина в данном документе. Этот словарь использует Finite State Transducers, FST [1] для поиска терминов, что можно представить как нечто похожее на отсортированные списки с пропусками [2]. Такая отсортированная навигационная карта является краеугольным камнем для эффективного поиска по огромным обьемам документов. Lucene также очень эффективен в использовании памяти. Среди прочих алгоритмов, он использует алгоритмы кодирования разницами для сжатия идентификаторов документов в постингах [3]. Упрощенно идея этого сжатия заключается в сортировке списока целых чисел и сохранения дельт между ними. Это также повышает производительность операций ввода-вывода диска.
Выборочный роутинг по доменным именам на маршрутизаторах Keenetic
Эта статья предназначена для тех, кто хочет настроить выборочный роутинг на основе доменных имен на своих маршрутизаторах Keenetic. Основная цель — оптимизировать управление сетевым трафиком по доменным именам, избегая необходимости вручную добавлять многочисленные маршруты в таблицу маршрутизации. Такой подход значительно упрощает настройку и позволяет гибко перенаправлять трафик через VPN-туннели.
Установка и использование утилиты screen в Linux, Ubuntu
Утилита Screen — это менеджер окон Linux, который позволяет переключаться между несколькими процессами в одном физическом терминале. Screen предоставляет буфер истории для прокрутки и механизм копирования и вставки текста между окнами.
С помощью Screen можно создавать новые окна с различными программами, закрывать текущие окна, просматривать список активных окон, включать и отключать логирование вывода и переключаться между окнами. Все окна работают независимо друг от друга, и программы продолжают выполняться даже при отключении сеанса от терминала пользователя. Это делает Screen полезным инструментом для эффективного управления несколькими задачами в одном терминале.
Создание кастомного Kubernetes Scheduler для StatefulSet
В этой статье мы рассмотрим процесс создания кастомного scheduler'а для Kubernetes, ориентируясь на Kubernetes Scheduling Framework.
Обычно для назначения подов на вычислительные узлы используется стандартный планировщик, который, проанализировав различные параметры, автоматически выполнит оптимальное размещение (например, распределит поды таким образом, чтобы не размещать их на вычислительных узлах с недостаточными ресурсами).
В одном из наших проектов, где мы использовали оператор Strimzi для развёртывания кластеров Kafka, заказчик выдвинул специфические требования по размещению данных, резервному копированию и восстановлению.
Одним из ключевых пунктов стал вопрос строгой привязки экземпляров приложения к вычислительным узлам.
Для этого нам пришлось создать кастомный scheduler, учитывая нюансы инфраструктуры, особенности приложения и требуемые правила размещения.
Как небольшой «тюнинг» Talos Linux увеличил производительность NVMe SSD в 2.5 раза
Привет, Хабр!
Мы рассмотрим несколько примитивных настроек Linux, которые могут повысить производительность NVMe SSD дисков в разы. Под катом много интересных подробностей, так что скучно не будет.
Аутентификация в Kubernetes с помощью Dex: прикручиваем LDAP
В статье не буду останавливаться на основных принципах работы Dex, а сразу перейду к установке и настройке LDAP. Познакомиться с принципами работы Dex можно в этой статье.
Что будем делать:
- Установим OpenLDAP и настроим на нем поддержку STARTTLS.
- Опишем структуру LDAP-каталога нашей организации.
- Включим поддержку OIDC (OpenID Connect) на kube-api-серверах.
- Получим SAN-сертификат для доменов, которые будет использовать Dex.
- Установим Dex и Dex-auth, где мы опишем LDAP-каталог и статических пользователей.
- Сгенерируем kubeconfig нашего пользователя для работы с кластером.
- Настроим RBAC-авторизацию для групп и пользователей в кластере.
Итак, поехали.
Показывать буду на примере уже готового кластера Kubernetes с Helm версии 3 и Ingress, а также тремя доменными именами.
AntiBlock 2.0
Приблизительно два года назад я начал разрабатывать свою программу AntiBlock, о которой я писал ранее. Версия, которую я описал тогда, была далека от завершения. Но сейчас уже применятся другая архитектура, появился скрипт для сборки пакета и удобная служба, с конфигурационным файлом.
С помощью обработки DNS запросов, программа направляет только заблокированные сайты через VPN, а остальные идут без изменений.
Восстанавливаем работу MySQL. Решение задачи
Привет! Я Саша Хренников, руководитель DevOps-юнита в KTS.
Недавно мы провели DevOps-челлендж, где нужно поднять неисправный экземпляр MySQL. Было нелегко — быстрее всех справились восемь сильнейших DevOps-мастеров, которым мы уже отправляем призовой мерч.
В этой статье я разберу задачу и покажу, как её можно решить двумя способами.
Как скопировать все пакеты с nuget.org
Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?
Home Lab мечты в Kubernetes
Когда я только начал осваивать Linux, я почти сразу загорелся идеей держать собственный сервер для экспериментов и повседневного использования. Такой сервер называют домашней лабораторией и способов ее построения достаточно много. Это интересное занятие очень популярно среди Linux‑энтузиастов.
В этой статье я расскажу про свой путь в построении такой лаборатории с помощью Kubernetes и облачных технологий. Здесь вас ждут полностью воспроизводимые k8s‑кластеры, бекапы с авто‑восстановлением, хитрые VPN‑ретрансляторы, хорошо защищенные приватные и публичные приложения, а также много‑много автоматизации и красивых инженерных решений.
Настройка CI/CD для GitLab-репозитория: работа с микросервисами
Рассказываем о полезных практиках конфигурации пайплайна с помощью GitLab CI/CD в контексте микросервисной архитектуры. Рассмотрим: добавление заданий в пайплайн путём проверки изменений в определённых микросервисах, концепцию модульных пайплайнов и явное указание зависимостей между заданиями для их выполнения не по этапам.
Проверка состояния кластера kubernetes
Итак, вы наконец-то стали счастливым обладателем k8s-кластера: получили его в наследство, в подарок на Новый год, заказали в DataLine) и т. п. У новых клиентов и даже у опытных пользователей часто возникает вопрос, как оценить кластер и проверить его работоспособность?
В ответ мы написали этот мануал: при выполнении всех пунктов можно закрыть 95% вопросов о состоянии здоровья кластера. Поскольку проверка такой многокомпонентной системы может стать нетривиальной задачей, подойдем к процессу как можно проще.
Calico для сети в Kubernetes: знакомство и немного из опыта
Цель статьи — познакомить читателя с основами сетевого взаимодействия и управлением сетевыми политиками в Kubernetes, а также со сторонним плагином Calico, расширяющим стандартные возможности. Попутно будут продемонстрированы удобство конфигурации и некоторые фичи на реальных примерах из опыта нашей эксплуатации.
Учимся читать QR-коды без компьютера
Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.
Прочитав статью, вы узнаете:
- Из чего состоят QR-коды.
- Как декодировать QR-коды вручную (используя нашу шпаргалку).
Работа с хранилищами в Kubernetes: руководство для инженеров
Как DevOps-инженер я часто сталкиваюсь с необходимостью глубокого понимания тонких аспектов Kubernetes. Одним из таких ключевых элементов является управление хранилищем данных. Хотя этот элемент иногда остаётся в тени других задач, его важность для успешного развёртывания и поддержки приложений велика.
Накопленный мною опыт в этой области стал основой для этой статьи.
Я сфокусируюсь на трёх ключевых элементах управления хранилищем в Kubernetes:
- PersistentVolumes (PV).
- PersistentVolumeClaims (PVC).
- Storage Classes.
Эти компоненты играют важную роль не только в выборе подходящих типов хранилищ, но и в их эффективном управлении, особенно в сценариях высокой нагрузки.
Так, при развёртывании масштабируемого веб-приложения, которое обрабатывает большие объёмы пользовательских данных и транзакций, хорошо настроенное управление хранилищем заметно повышает производительность и доступность данных. И тогда при увеличении нагрузки на приложение доступ к данным остаётся быстрым и надёжным, задержки уменьшаются, общее взаимодействие пользователя с приложением улучшается.
Например, у нас была задача обеспечить надёжное и масштабируемое хранение данных в веб-приложении для управления клиентскими заказами. Мы настроили в Kubernetes Storage Class на основе SSD для базы данных (что не является хорошей практикой): это помогло обеспечить быстрый доступ и обработку транзакций. А для логов и нечасто применяемых данных использовали отдельный Storage Class с HDD, и это позволило снизить затраты.
А главное, Storage в Kubernetes — это такая штука, которую ты сделал и забыл, дальше оно там само работает.
Рассказываю детально.
Анонимная сеть в 100 строк кода на Go
Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.
Как мы законтрибьютили целую строчку в HashiCorp Vault
Привет! Меня зовут Пётр Жучков, я руководитель группы хранения секретов и конфигураций в отделе Message Bus в Ozon. Мы отвечаем за поддержку и развитие системы хранения и использование секретов, активно сотрудничаем с ребятами из департамента информационной безопасности, чтобы все сервисы могли безопасно работать с секретами.
Основной наш инструмент для управления секретами — Vault. Он отличается хорошей функциональностью, а также имеет подробную документацию, благодаря которой можно быстро начать его использовать. Конечно, запустить Vault и подключить к своему сервису — это совсем не то же самое, что надёжно и безопасно предоставить платформенный доступ более 6000 сервисов и других инфраструктурных систем. Для нас крайне важно отдавать данные быстро и хранить безопасно.
Если вы хотите безопасно хранить секреты или просто погрузиться в gRPC и Go, то, думаю, вам будет интересно и полезно не повторять наши ошибки.
Далее я расскажу историю о том, как во время стандартной процедуры обслуживания Vault мы смогли положить его и потратили много времени и нервных клеток, чтобы вернуть в рабочее состояние.
Persistent Storage для Kubernetes на базе Linstor
Многие начинающие DevOps'ы, осваивающие kubernetes сталкиваются с вопросом: "Как организовать Persistent Storage в своём kubernetes-кластере?" Для этой цели есть много вариантов: ceph, nfs, mayastor, iscsi, linstor, longhorn. Сегодня мы рассмотрим один из них - linstor (он же piraeus). Мы настроим свой Persistent Storage и подключим его к нашему kubernetes-кластеру.
Информация
- В рейтинге
- 3 055-й
- Зарегистрирован
- Активность