Kubernetes с Raspberry Pi

Преди всичко, да уточня, че нямам ясна идея за какво говоря. Всъщност, нямам идея. Не вярвайте на каквото и да е било по-долу. Това не са препоръки а бележки, за да не забравя нещо. Повечето от кода и командите са копирани от хора които всъщност знаят за какво говорят.

Преди повече от година реших, че е време да разбера какво е това Kubernetes и защо всички са толкова развълнувани от него. Някъде по това време Rancher обявиха k3s и k3os, което беше чудесно съвпадение.

Използването на Raspbery Pi за да разбереш какво е Kubernetes е може би най-скъпият и непрактичен начин. От друга страна е най-интересният. Да не говорим, че в момента се превръща в доста модерен заради всичкият шум на тема edge computing.

Както казах, има доста по-евтини и по-лесни варианти. Например minikube е много лесен за инсталиране и има версия за Windows (всъщност пуска виртуална машина под Windows, но все пак). Друга алтернатива е microk8s, който също се инсталира много лесно. Rancher имат и k3d, който пуска k3s в Docker и изглежда може да работи под WSL2.

Отделно всеки cloud има безплатен пакет или поне доста щедър кредит който може да се изполва.

Отделно има решения като DigitalOcean Kubernetes където плащате само за няколко много малки VM. Kubernetes се поддържа безплатно от Digital Ocean.

И т.н.

От друга страна, Raspberry Pi проектът може да струва от много малко до “какво направих…”. В момента моят проект клони към “какво направих…”. Минах през няколко различни версии, така че всъщност съм прескочил границата на неразумната инвестиция и просто престанах да се опитвам да измисля логична причина за поредният upgrade.

Планът:

  • Kubernetes cluster с поне три сървъра за да може да има поне малко реализъм
  • Нещо което да следи за температурата и натоварването на всяко Raspberry Pi. Не искам нещо да изгори без да знам. Ако знам, няма проблем.
  • Нещо което да ми позволи да пусна няколко .NET API-та, Azure Functions и да има връзка към Аzure Service Bus. Ако не мога да кажа “event driven architecture”, какъв е смисъла?
  • Нещо което да ми даде поне малък шанс за monitoring (така де, observability) и end to end trace
  • CI/CD с Azure DevOps
  • Ако мога да сбутам service mesh, още по-добре
  • Колкото се може повече от CNCF Cloud Native Landscape разбира се

Накратко, типичен софтуерен проект използващ resume driven architecture.

Допълнителен бонус е, че всичко трябва да работи под Arm вместо x86.