Обзор гипервизора Harvester 1.3.0

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

Что такое Harvester? Официально - A Cloud Native Open Source Hyper-converged Infrastructure. Если попробовать сказать простыми словами - то эта операционная система, которая предназначена для запуска и управления Kubernetes, виртуальных машин и система хранения данных (СХД). Вот такая иллюстрация на сайте Harvester:

Harvester
Harvester

Node - это сервер. Практически - это одна из нод Кубернетеса. Для высокой доступности требуется три ноды. А так можно запуститься и на одной.

Linux - это и есть Harvester, ОС сделанная на основе OpenSUSE. Версия ядра - 5.14, не самая свежая. Особенность ОС в том, что она - минимальная. То есть при инсталяции ставится абсолютный минимум системных программ, добавлять в ОС - нельзя, если что-то запускать - то только в контейнерах или виртуальных машинах. Сделано это для минимизации необходимости обновлений ОС.

Kubervirt - технология, которая позволяет запускать виртуальные машины в Кубернетес кластере.

Longhorn - технология, которая отвечает за работу с дисками. При наличии ресурсов Longhorn обеспечивает высокую доступность (high availability) и надёжность (redundancy).

Ещё есть сетевая подсистема: Flannel Canal, KubeVIP, плюс собственные модули Harvester.

Harvester - гиперконвергентная система. Это означает, что ОС соединяет в себе управление всеми частями инфраструктуры: вычислительными ресурсами (процессор, память), дисками, сетью. Если сравнить например с VMware ESX - то ESX управляет только виртуальными машинами, а СХД - это уже нужно ставить и управлять отдельно. Если к ESX добавить их vSAN для СХД, и NSX-T для управления сетью, то получится некоторый аналог Harvester.

Список нод в кластере
Список нод в кластере

Требования по железу

Longhorn — система хранения данных

Наверное все знакомы с технологией RAID: данные пишутся на несколько дисков, и даже если один или несколько (в зависимости от уровня) дисков выйдут из строя - то дисковая система продолжит работать без остановки и потери данных.

Какие есть ограничения у RAID?

Что предлагает Longhorn:

Longhorn
Longhorn

С какими трудностями пришлось столкнуться при работе с СХД?

Volume in Longhorn
Volume in Longhorn

Harvester

Версия Кубернетеса жёстко привязана к версии Harvester. Поэтому пока Harvester не выйдет с нужной версией - будет такая, какая есть.

Сейчас последняя версия Harvester - 1.3.0.

С этой версией поставляется Кубернетес 1.27.10 (RKE2).

У Harvester есть фишка, что на основной кластер можно поставить несколько вложенных кластеров Rancher, которые управляются независимо. Мне это было неинтересно, но может быть полезно, если кто-то захочет дать каждому разработчику по личному кластеру.

В базовом кластере Harvester есть только один пользователь - admin. Других создавать нет возможности. Если нужны пользователи, разграничения прав - это нужно ставить Rancher сверху на Kubernetes. Для этого есть плагин.

"Из коробки" для виртуальных машин можно прокидывать (pass-through) видеокарты, если они поддерживают vGPU.

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

Пока не поддерживается прокидывание USB устройств в виртуальную машину. Обещают это в 1.4.0.

С какими трудностями я столкнулся:

https://github.com/harvester/harvester/issues/5831 [BUG] Upon migration, the VM becomes unreachable

Когда виртуальная машина работает на одной ноде - сетевое подключение есть. Когда переношу машина на другую ноду - сетевые подключения снаружи не работают. Хотя внутри виртуалки сеть есть, интернет доступен.

https://github.com/harvester/harvester/issues/5830 [BUG] When node is lost, it's pods can't recover

Когда отключается одна из нод, то контэйнеры которые были на ней - должны перезапуститься на другой ноде. Вместо этого, они подвисают в состоянии Terminating, потому что том для контейнера оказывается заблокирован в Longhorn.

https://github.com/harvester/harvester/issues/5727 [ENHANCEMENT] How can I configure logs from additional pods or deployments?

У Harvester есть возможность отправлять логи. Я настроил, чтобы логи шли в Эластик. Логи шли с большой задержкой, и только часть контейнеров. Причём непонятно, какая часть. Обещают исправить в следующей версии 1.4.0.

https://github.com/harvester/harvester/issues/5687 [BUG] hard drive unmounted every few hours

Я хотел подключить к ноде мой 16ТБ диск, с уже существующими данными. И это делается легко. Но каждые несколько часов запускается какой-то процесс, и все диски, которые не являются частью Longhorn от системы отмонтироваются. Обещают исправить в 1.4.0

P.S.

После моих экспериментов, я пришёл к выводу, что Кубернетес - чересчур сложная система. Возможно - это оправданная сложность, потому что задачи, которые решает Кубернетес - сложные, но как-то вот потратил очень много времени настраивая всё это, нарвался я на слишком много багов, и решил, что наверное лучше я поставлю Proxmox + Ceph, и свои контейнеры там буду запускать. Может даже в Кубернетесе, но немного упрощённом.

@SlavikF
20.05.2024 10:11 UTC
Первоисточник

Комментарии

@dvglab
20.05.2024 13:24 UTC
+4

Попробуй Deckhouse гораздо продуманней дистрибутив К8S, можно накатить в виртуалке Proxmox. Не реклама, просто сам перепробовал много вариантов и Deckhouse больше всех понравился.

@tommyfrozen
20.05.2024 17:06 UTC
+1

Вы в начале пишите:

Что такое Harvester? Официально - A Cloud Native Open Source Hyper-converged Infrastructure. Если попробовать сказать простыми словами - то эта операционная система, которая предназначена для запуска и управления Kubernetes, виртуальных машин и система хранения данных (СХД).

Всё это устанавливаете и в конце резюмируете:

После моих экспериментов, я пришёл к выводу, что Кубернетес - чересчур сложная система. 

Т.е. вы не были знакомы с Kubernetes и решили поставить спец. гипервизор, который заточен под организацию таких кластеров, а потом делаете вывод, что «Kubernetes - это слишком сложно»? Тем более ПО ещё судя по всему свежее и до момента, когда такое решение можно пускать в прод на серьёзные проекты - очень далеко.

Не проще было бы начать с изучения minikube? Потом перейти к какому-нибудь kubespray прости господи, а лучше сразу по гайду развернуть кластер по оф. гайду. Благо и сторонних мануалов полно. Или есть тот же k3s.

Я возможно не понял посыла статьи, но я так понял вы только начинаете своё изучение Кубера. На мой взгляд проще было бы начать с того, что я выше написал. Если что поправьте. А то смысл статьи мне не ясен. Тут не работает, там в 1.4.0 исправят и еще одну болячку тоже где-то в след релизах… А виноват в итоге кубер :)

@SlavikF
20.05.2024 17:17 UTC
0

до момента, когда такое решение можно пускать в прод на серьёзные проекты - очень далеко.

Ну OpenSUSE так не думает, и Harvester они продают, как энтерпрайзное решение уже давно.

Но вот я покопался, и да - по факту всё достаточно сыро... Это и был посыл статьи.

А то, что Кубер - это сложно, - это так и есть. Это не зависит от Harvester. Я работал и с k3s, и на работе сейчас работаю с OCI.