Zarządzana usługa Kubernetes od OVH

Autor: Horacio Gonzalez, Developer Evangelist w dziale OVH Platform.

Od strony użytkownika Kubernetes to doskonałe narzędzie do automatyzacji instalacji, skalowania i zarządzania skonteneryzowanymi aplikacjami. Wdrożenie go na produkcji nie jest już takie proste, a budowa zarządzanej platformy Kubernetes stanowi już wyzwanie.

W listopadzie 2018 r. uruchomiliśmy publiczną wersję beta naszej usługi Managed Kubernetes. Był to kamień milowy na drodze do udostępnienia gotowej do użycia usługi do orkiestracji zarządzania kontenerami.

Korzystając początkowo z Kubernetesa jako zwykli użytkownicy, szybko zdaliśmy sobie sprawę jakim usprawnienie i ułatwieniem byłyby usługi orkiestracji dla naszych klientów. Jednocześnie zrozumieliśmy, jak wiele wysiłku wymaga wdrożenie i utrzymywanie systemu Kubernetes. Na podstawie zebranych doświadczeń zbudowaliśmy w pełni zarządzany klaster. Dzisiaj jesteśmy certyfikowanym dostawcą platformy Kubernetes i posiadamy szeroki zakres wiedzy o tym, jak budować, utrzymywać i zarządzać systemem do orkiestracji na dużą skalę.

Obecnie dopracowujemy ostatnie szczegóły przed oficjalnym wprowadzeniem usługi na rynek, analizujemy zastosowane rozwiązania oraz narzędzia, które stworzyliśmy w całym procesie. Wkrótce usługa będzie dostępna dla wszystkich klientów OVH.

Początki z Kubernetesem

Kiedy po raz pierwszy korzystasz z narzędzia Minikube (jednowęzłowy klaster Kubernetesa uruchamiany lokalnie), jesteś pozytywnie zaskoczony jego działaniem. Nie musisz sam zajmować się zarządzaniem instancjami, nie musisz sprawdzać, czy kontenery działają, wyłączasz instancję i Kubernetes odtwarza kontenery na innej instancji. Szybko i prosto.

Zachęcony prostotą obsługi i zaletami, jakie płyną z orkiestracji, zaczynasz rozważać budowę większego klastra i wdrożenia w nim aplikacji. Tworzysz wirtualne maszyny, uczysz się obsługi "kubeadm", po czym uruchamiasz w nowo zbudowanym klastrze Twoje aplikacje. Wszystko to dzieje się bardzo intuicyjnie i działa płynnie. Ale jak każda technologia, Kubernetes nie jest doskonały.

Uruchomienie produkcyjne klastra Kubernetes

Uruchamiając pierwszy klaster Kubernetes w hiperwizorze lub na platformie bare-metal, zauważysz, że rozwiązanie to wymaga cierpliwości i dalszej pracy. 

Wdrożenie klastra Kubernetes to dopiero pierwszy krok. Zanim będziesz mógł uznać, że Twój klaster jest gotowy do obsługi środowiska produkcyjnego, musisz zadbać o: 

  • Proces instalacji – czy jest on zautomatyzowany i powtarzalny;
  • Proces aktualizacji oraz przywracania wcześniejszej wersji (upgrade/rollback) – powinien być bezpieczny i sprawdzony; 
  • Procedurę przywracania - należy ją wdrożyć, udokumentować i przetestować;
  • Wydajność – przeprowadź testy wydajnościowe, które potwierdzą, że klaster działa stabilnie, zwłaszcza w przypadku korzystania z trwałych wolumenów;
  • Prawidłowe działanie klastra oraz monitoring -  upewnij się, że zbierasz wystarczającą ilość danych w postaci śladów (traces), metryk i logów, które umożliwiają wykrywanie i usuwanie błędów oraz usterek;
  • Bezpieczeństwo – zadbaj o zabezpieczenie usługi oraz o jej wysoką dostępność.

Kubernetes prościej

Wbrew pozorom wdrożenie klastra Kubernetes nie usunie konieczności wykonywania operacji związanych z utrzymaniem aplikacji i nie umożliwi od razu wdrożenia koncepcji NoOps. Opanowanie obsługi narzędzi o tak zaawansowanych możliwościach zajmuje sporo czasu i wiąże się koniecznością testowania rozwiązań, a więc i z ryzykiem.

Jak w przypadku wielu potężnych technologii, pozorna prostota i wszechstronność po stronie Dev (rozwoju) idzie w parze z wysoką złożonością po stronie Ops (operacji). Nic dziwnego, że wielu użytkowników Kubernetes szuka zarządzanej usługi, gdy zbliża się do etapu przejścia z fazy proof-of-concept do produkcji.

W OVH chcieliśmy odpowiedzieć na potrzeby użytkowników, którzy chcą korzystać z orkiestracji, ale nie chcą samodzielnie wdrażać architektury Kubernetesa. Dlatego stworzyliśmy autorskie zarządzane rozwiązanie Kubernetes - w pełni oparte na otwartym kodzie, niewiążące klientów z jednym dostawcą oraz całkowicie kompatybilne z każdym innym rozwiązaniem Kubernetes. Naszym celem było udostępnienie użytkownikom gotowego, w pełni zarządzanego klastra Kubernetes i uwolnienie od konieczności podejmowania się instalacji lub działań operacyjnymi.

Budując na solidnych podstawach

A zatem postanowiliśmy zbudować rozwiązanie Kubernetes. Pierwszy krok był prosty: musieliśmy upewnić się, że podstawowa infrastruktura jest solidna, dlatego użyliśmy naszego własnego rozwiązania Public Cloud, na bazie technologii OpenStack.

 

Certyfikowana platforma Kubernetes

Budowa platformy na dojrzałym, wysoko dostępnym i opartym na standardach produkcie, takim jak OVH Public Cloud, pozwoliła nam skoncentrować nasze wysiłki na prawdziwym wyzwaniu, przed którym stanęliśmy: stworzenie wysoce skalowalnego, łatwego w obsłudze zarządzanego rozwiązania Kubernetes z certyfikatem CNCF (Cloud Native Computing Foundation).

Kolejne kroki?

W następnych artykułach przeanalizujemy architekturę usługi OVH Managed Kubernetes. Wyjaśnimy, czym się kierowaliśmy, decydując się na konkretne rozwiązania techniczne oraz jak je wdrożyliśmy.

Kubinception: Kubernetes w Kubernetesie
Kubinception: Kubernetes w Kubernetesie

Zaczniemy od jednej z najodważniejszych decyzji: uruchomienia Kubernetesa w architekturze Kubernetesa, czyli Kubinception.