Остались вопросы?
Мы с удовольствием вам поможем
Спасибо! Ваша заявка принята.
Ваша заявка принята. Наш менеджер скоро с вами свяжется
Заказать звонок
Спасибо! Ваша заявка принята.
Спасибо за обращение.
Мы обязательно свяжемся с вами

Время работы офиса
Пн-Пт: 8:00 — 18:00
Сб: 10:00 — 16:00
Вс: выходной
облако

K3s — легковесный Kubernetes для проектов любого масштаба

Никита Лебедь
28.11.2024
15 мин. читать

Занимает меньше места, проще в использовании и не требует наличия сложной инфраструктуры. Разбираем K3s — Kubernetes для компаний любого масштаба.  


Зачем нужны другие версии Kubernetes? 

Недавно мы рассказывали о K8s — оркестраторе контейнерных приложений, который быстро стал мейнстримом в мире IT. Однако у оригинального решения есть и слабые стороны — сложный запуск и сопровождение. Открытый исходный код позволил адаптировать технологию под разные задачи. И сегодня можно использовать различные версии сервиса: 

  • MicroK8s;  
  • EKS (Elastic Kubernetes Service);  
  • OpenShift;  
  • Kubeadm;  
  • и множество других.  

Альтернативные версии Kubernetes открывают дополнительные возможности, предоставляются как оптимизированные решения или управляемые сервисы по модели KaaS — Kubernetes as a Service.  


Основные отличия K3s от оригинала 

Сокращение K8s обозначает первую, последнюю и восемь пропущенных между ними букв. А K3s — лишь отражает авторскую задумку. Разработчики из Rancher Labs хотели, чтобы их версия оркестратора была вдвое меньше оригинала. Отсюда и название. Если за сокращением K8s прячется 10 символов, то за K3s — 5, раз он в два раза легче.  

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

Особенности K3s: 

  • Небольшой размер кода и низкие требования к ресурсам системы. 
  • Упрощенная установка и ускоренный запуск кластера.  
  • Возможность использования кластера со всего одной нодой, например для периферийных вычислений в IoT.  
  • Все компоненты программы объединены в единый бинарный файл, объемом <70MB.  
  • Отход от четкого разделения нод на master и worker — управлять узлами можно с любого из них.  
  • Поддержка автоматического развертывания.  
  • Сертифицированный CNCF дистрибутив Kubernetes.  
  • Запускается без внешних зависимостей.  

Чтобы оптимизировать Kubernetes для не самых мощных инфраструктур, уменьшить размер и упростить запуск кластера, разработчики Rancher Labs сделали следующее: 

  • Удалили порядка 1000 строк кода оригинала;  
  • Заменили Docker на conteinerd;  
  • Добавили поддержку Kine в качестве хранилища по умолчанию;  
  • Снесли драйверы облачных провайдеров;  
  • Добавили различные элементы архитектуры.  


Архитектура K3s  

Сервер и агент — основные элементы кластера K3s, которые взаимодействуют при помощи туннельного прокси.  

  

  • Сервер K3s отвечает за состояние кластера, обеспечивает его работоспособность и координирует действия между узлами. Запускает API-сервер для управления контроллерами и другими компонентами.  
  • Узлы агента K3s получают указания от сервера K3s и запускают приложения, управляют их жизненным циклом, а также выполняют другие задачи.  

API Server, Controller Manager, Scheduler, Kubelet и ряд других элементов системы работают по аналогии с K8s.  

  

Остановимся подробнее на нововведениях. Одни элементы дописывали в код с нуля, другие, например совместимые сервисы, добавляли в исходный файл.  

  • Сontainerd — утилита для управления жизненным циклом контейнеров. 
  • Flannel — в K3s может быть настроен как сетевой плагин по умолчанию. Обеспечивает сетевую связь между контейнерами в кластере и поддерживает различные режимы. 
  • CoreDNS — позволяет контейнерам и сервисам в кластере обращаться друг к другу по именам, а не IP-адресам, а также поддерживает ряд других функций. 
  • ingress controller Traefik — управляет входящим трафиком и его маршрутизацией между сервисами кластера. 
  • Helm — упрощает развертывание приложений. 
  • Load Balancer — встроенный сервис для балансировки нагрузки между подами. В K3s совместим с кластерами из одной ноды.  
  • Network Policy Controller — элемент, который управляет сетевыми политиками.  
  • local-path-provisioner — используется для создания локальных хранилищ на узлах кластера. 

K8s данные кластера хранятся на внешнем сервисе etcd. А в K3s по умолчанию, при отсутствии другой конфигурации хранилища, и если на диске нет встроенных файлов etcd, используется облегченная БД SQLite. В качестве внешней базы данных можно задействовать MySQL, MariaDB, PostgreSQL, etcd.  

Все эти способы хранения работают через Kine — прокладку API, название которой передает привет хранилищу оригинала: «Kine is not etcd». Kine принимает запросы etcd от Kubernetes и преобразовывает их в SQL-запросы. Благодаря этому элементу K3s поддерживает различные серверные части БД, включая MySQL, Postgres и SQLite.  


Сценарии использования K3s 

Найти применение легковесному Kubernetes могут небольшие, средние и крупные компании. K3s можно использовать следующими способами: 

  • в локальной разработке;  
  • в тестовых средах;  
  • проведения экспериментов — например одновременного выполнения различных сценариев;  
  • обучения и первого знакомства с технологией kubernetes.  
  • в качестве инструмента для развития сред разработки и работы с умными устройствами (IoT). 


Способы развертывания кластера K3s 

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

K3s использует wireguard для создания VPN-сетки для кластерного трафика. Каждый из узлов должен иметь уникальный IP, через который они могут быть доступны. Обычно это публичный IP. Трафик супервизора K3 будет использовать туннель для веб-сокета, а трафик кластера (CNI) — туннель проводника.  

Все компоненты можно выключать или включать при установке K3s.  
Для этого нужно запустить установку K3s с опцией  
--disable=traefik  
и тогда указанный ингресс не будет установлен. 

Все манифесты хранятся по адресу: /var/lib/rancher/k3s/server/manifests/   
Они могут быть переопределены. Например, если нужно изменить путь для Local Storage Provider. 


Высокодоступный K3s 

  

Высокодоступный кластер K3s развертывается при помощи команд: 

curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server —cluster-init  

 curl -sfL https://get.k3s.io | K3S_TOKEN=SECRET sh -s - server --server  

 https://<ip or hostname of server1>:6443  

Высокодоступный K3s с внешней базой данных 

Архитектура такого K3s-кластера включает следующие элементы:  

  • две и более серверные ноды, которые обслуживают API Kubernetes и запускают другие службы управления;  
  • внешнее хранилище.  

Высокодоступный K3s с внешней базой данных запускается при помощи команд: 

curl -sfL https://get.k3s.io | sh -s - server --token=SECRET --datastore-endpoint="mysql:// 

username:password@tcp(hostname:3306)/database-name" 


Кластер K3s с одной нодой 

Упрощенный запуск K3s, оптимизированный для периферийных вычислений. Например, для использования в сфере Интернета вещей (IoT) в условиях ограниченных ресурсов. Также подойдет для обучения. Но такая архитектура не обеспечит отказоустойчивость и не может быть использована в высоконагруженных и других системах, где высока цена сбоя.  

Одна нода — одна команда. Такой кластер разворачивается самым простым способом:  

curl -sfL https://get.k3s.io | sh - 

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

Любой Kubernetes — идеальный инструмент для интеграции с облаком. Запускайте свои K3s-кластеры в нашем гибком сервисе и оплачивайте только используемые ресурсы.  


Поделиться:
Подпишитесь на email-рассылку!

Будьте в курсе новостей. Отправляем полезные письма каждый месяц.

Пожалуйста, введите адрес электронной почты
Пожалуйста, подтвердите согласие с условиями обработки персональных данных.
article mailing picture
Вы подписались на нашу рассылку!

Скоро вы получите новое письмо.

article mailing picture