Kubernetes, так же известный как K8s, представляет собой систему для автоматизации развертывания, масштабирования и управления контейнерными приложениями. K3s – это облегченная версия K8s. Какую же версию выбрать? В этой статье я покажу Вам ключевые различия между K3s и K8s.
Со статьей, которую я использовал в качестве опоры при написании, Вы можете ознакомиться по этой ссылке.
В одной из своих статей я ранее разобрал процесс настройки K3s на Raspberry Pi 4, соединив четыре одноплатных компьютера в единый кластер (подробнее тут). Поэтому я начну статью с разбора K3s.
Что такое K3s и с чем его едят
В первую очередь, следует понимать, что K3s не является форком Kubernetes, а самый настоящий сертифицированный дистрибутив, распространяемый официально (Ссылка на официальный сайт).
Даже несмотря на то, что K3s считается облегченной версией, все ключевые особенности Kubernetes были сохранены. Благодаря этому, для запуска дистрибутива достаточно 512 Мб оперативной памяти, а что самое главное, ARM64 и ARMv7 поддерживаются "из коробки".
На официальном сайте есть замечательное изображение, демонстрирующее принцип работы K3s-сервера и K3s-агента
История создания K3s
В Калифорнии есть такая компания, Rancher Labs называется. Одно время она работала над коммерческим продуктом RIO. Суть его в том, что это был PaaS для Kubernetes.
Данный проект даже прижился в определенных кругах, однако что-то сподвигло Rancher Labs отказаться от него и выложить в открытый доступ свои наработки под названием K3s. Позже, они пожертвовали его Фонду облачных вычислений CNCF (Cloud Native Computing Foundation), которая к тому моменту уже владела K8s.
Rancher удалил более 3 миллиардов строк из исходного кода K8s, почистил устаревшие компоненты и функции, которые не были необходимы для полной реализации Kubernetes API.
В чем преимущества K3s?
- Легкий вес - размер одного бинарного файла составляет менее 100 МБ, что делает его более быстрым и менее ресурсоемким, чем K8s.
- Более ровная кривая обучения - требуется изучить меньше компонентов, прежде чем применять их в реальных ситуациях.
- Сертифицированный дистрибутив Kubernetes - Он хорошо работает с другими дистрибутивами Kubernetes и ничем не уступает K8s.
- Простая и быстрая установка и развертывание - установка и запуск K3s занимает от нескольких секунд до нескольких минут.
- Запуск Kubernetes на архитектуре ARM - Устройства, использующие архитектуру ARM, такие как мобильные телефоны, IoT и одноплатные компьютеры, могут запускать Kubernetes с K3s.
- Запускается на Raspberry Pi - он настолько легкий, что поддерживает кластеры, созданные с помощью Raspberry Pi (подробнее тут).
- Легко развернуть удаленно
- Поддерживает одноузловые кластеры - встроенный балансировщик нагрузки соединяет службы Kubernetes с IP-адресом хоста.
- Гибкость - Помимо SQLite по умолчанию, K3s также поддерживает хранилища данных PostgreSQL, MySQL и etcd.
- Функция запуска / остановки - Включение и выключение K3s без вмешательства в окружающую среду. Таким образом, вы можете легко обновить K3s, перезапустить его и продолжить использовать без проблем.
Но не все то золото, что блестит.
Какие недостатки у K3s?
Одним из его ограничений является то, что K3s по умолчанию не поставляется с распределенной базой данных, что сказывается на высокой доступности (HA - high availability). При настройке сервера K3s, необходимо указать путь на внешнюю базу данных (etcd, PostgreSQL и MySQL), с целью достижения вышеуказанного HA.
В чем различие между K3s и K8s?
- K8s и K3s используют один и тот же исходный код, но K3s содержит меньше зависимостей, интеграции с облачными провайдерами, дополнений и других компонентов, которые не являются абсолютно необходимыми для установки и запуска Kubernetes.
- В то время как развертывание K8s часто занимает 10 минут, K3s может выполнить Kubernetes API всего за одну минуту, да и изучать его проще.
- K8s запускает компоненты в отдельных процессах, в то время как K3s объединяет и управляет всеми компонентами (включая kubelet и kube-proxy) в одном бинарном, серверном и агентном процессе.
- K3s по умолчанию полагается на хранилище данных SQLite3 и поддерживает MySQL, PostgreSQL и etcd3 для высокой доступности, в то время как K8s поддерживает только etcd.
- В отличие от K8s, вы можете отключить встроенные компоненты K3s, что дает вам свободу установки собственного DNS-сервера, CNI и контроллеров.
Может сложиться впечатление, что K8s меркнет на фоне преимуществ его легковесного собрата, но это не так. Поэтому предлагаю не просто их сравнить, а привести примеры, когда целесообразно использовать K3s, а когда классический K8s.
Когда использовать K3s?
- Благодаря облегченной архитектуре K3s, малые предприятия могут выполнять операции быстрее и с меньшими затратами ресурсов, наслаждаясь высокой доступностью, масштабируемостью, безопасностью и другими полномасштабными преимуществами архитектуры Kubernetes K8s.
- При необходимости создания одноузлового кластера.
- K3s поддерживает архитектуры AMD64, ARM64 и ARMv7. Это означает, что вы можете запускать его где угодно, от Raspberry Pi Zero, Intel NUC, NVIDIA Jetson Nano или устройства IoT, до промышленных серверов.
- K3s подключается к сети быстрее, чем K8s, поэтому он подходит для выполнения пакетных заданий, развертывания облака, тестирования CI и различных других рабочих нагрузок, требующих частого масштабирования кластера.
Когда использовать K8s?
В долгосрочной перспективе как малые, так и крупные компании могут использовать K8s для обработки сложных приложений с несколькими расширениями, надстройками облачных провайдеров и внешними драйверами для достижения поставленных целей.
Проще говоря, если Вы энтузиаст, который делает что-то в интересах своего домашнего сервера или небольшой компании, то K3s – Ваш выбор.
В интересах же крупных проектов и больших компаний лучше использовать классический K8s.
Советую ознакомиться:
Оставляйте комментарии, если статья понравилась, ставьте лайки и подписывайтесь на IT Gosha сегодня!
Всем хорошего настроения и спасибо за внимание!
#kubernetes #IT #devops #k3s #k8s #itgosha