Diversity w polskim IT
Chris Cooney
Chris CooneyPrincipal Software Engineer @ Sainsbury's

Kubernetes wcale nie jest dziwny

Sprawdź, jak myśleć o Kubernetesie, żeby mieć z niego jak najwięcej korzyści.
12.12.20194 min
Kubernetes wcale nie jest dziwny

Kiedy po raz pierwszy zaznajamiałem się z Kubernetes, była to platforma do orkiestracji kontenerów. Kubernetes było dziwnym słowem - nie brzmi dobrze po angielsku.


Kiedy zagłębiłem się bardziej w platformę, zdałem sobie sprawę, że jest tam coś naprawdę interesującego. Poziom automatyzacji był na takim poziomie, jakiego nie widziałem wcześniej. Furtki, którą otworzył mi w głowie, nie można już było zamknąć. Zacząłem uczyć się Kubernetes, aż w końcu napotkałem problem.

Myśląc tradycyjnie, walczysz z Kubernetes

Kubernetes nie jest jakimś gotowym rozwiązaniem ani czarodziejską różdżką. Jednak wielu osób tak myśli. W przeciwieństwie do Oracle, który odmieni Twój biznes (czytaj: będzie kosztować duże pieniądze), Kubernetes odgrywa skromniejszą rolę. Dopóki nie będziesz mieć odpowiedniego mindsetu, ta rola może wydawać się dziwna.

Pomyślałem więc, że spiszę zmiany myśleniowe, które są niezbędne, żeby polubić i docenić Kubernetes. Jeśli uda Ci się to zastosować u siebie, Twoja przygoda z Kubernetes będzie o wiele przyjemniejsza.

Inversion of Control

Kubernetes jest świetnie zautomatyzowany. Automatyczna redundancja, wysoka dostępność, samonaprawianie, zarządzanie konfiguracją i wiele więcej - widziałem, jak ludzie plączą się w tych rozwiązaniach.

Spędzają lata automatyzując procesy na własną rękę, a teraz istnieje rozwiązanie, które łączy to wszystko, dając znaczenie więcej. Jednak oni naturalnie zachowują mindset polegający na wykonywaniu kolejnych procedur. 

Deklaruj, nie dyktuj

Nauczenie się tej automatyzacji jest proste. Podczas definiowania zasobów Kubernetes bądź deklaratywny. Powiedz Kubernetesowi, jak powinien Ci pomagać. Celem jest oddanie K8s jak największej kontroli. Uzupełnij to o automatyzację w razie potrzeby. Pozwól Kubernetesowi robić to, w czym jest najlepszy i dopiero wtedy zajmij się tym, czego brakuje Twojemu biznesowi.

Myślenie platformowe

Wiele koncepcji Kubernetes dobrze wpisuje się w myślenie platformowe. Zachęca to do budowania wspólnych, centralnych usług, więc usuwa marnotrawstwo i niepotrzebne przeróbki za pomocą rozwiązań szytych na miarę.

Myślenie platformowe wiąże się z ryzykiem. Jeśli wszyscy polegają na tej samej współdzielonej usłudze monitorowania, pojedyncze awarie mogą mieć fatalne skutki na dużą skalę. Możesz zdecydować oddzielić od siebie narzędzia monitorujące, aby ograniczyć ich wpływ, ale ostatecznie zwiększasz odpowiedzialność poszczególnych usług.

Kubernetes może to również wspierać, ale kiedy wszystko znajduje się w tym samym klastrze, scentralizowane usługi strategiczne są budowane bardziej naturalnie niż usługi specyficzne dla produktu w silo. Ich zalety są oczywiste:

  • Eksperymenty są realizowane z dostępem do usług klasy produkcyjnej
  • Ponieważ obniżasz koszt implementacji czegoś nowego, wypróbować można wiele nowych rzeczy, a takie eksperymenty prowadzą do lepszego uczenia się

Rozdzielenie produktu i produkcji

O ile Twój produkt nie jest bardzo duży, prawdopodobnie zostanie on wdrożony w istniejącym klastrze produkcyjnym. To oddzielenie środowiska produkcyjnego od aplikacji wydaje się początkowo dziwne.

Pracując z innymi technologiami po prostu budujesz środowisko i doprowadzasz do punktu, w którym produkt jest gotowy do dostarczenia. Jesteś właścicielem tego środowiska w całości.

Ale teraz? Jesteś w tej przestrzeni jednocześnie najemcą i wynajmującym. To może dawać poczucie ograniczenia autonomii. Wcześniej mogłeś robić ze środowiskiem co chciałeś. Teraz? Wszystko podpisane jest przez kogoś innego, dlatego musisz być ostrożny. Jak więc wydostać się z tej koleiny?

Współpraca

To może być denerwujące. Nie znasz tych ludzi. Co jeśli są totalnymi indywidualistami? To, czego doświadczasz, to nauka zaufania. Uznajesz, że musisz powierzyć to komuś innemu bez wątpliwości. Powstaje wspólna odpowiedzialność. Jaki jest najlepszy sposób, aby sobie z tym poradzić? Spotkajcie się, wyjaśnij swoje obawy, ustal propozycje sposobu pracy i regularnie go ulepszaj.

Współdzielenie klastra Kubernetes zmusi Cię do rozmowy. Jeśli jej unikniesz, nadal będziesz się męczyć. Przygotuj się na znacznie bardziej aktywną, bliską formę współpracy. Trzeba się po prostu do tego przyzwyczaić. Może to być inwazja w “świętą przestrzeń”, którą zajmuje Twój team, ale po odrobinie praktyki stanie się to całkowicie naturalne, a korzyści pojawią się same.

Dużo automatyzacji

Kubernetes zachęca do deklaratywnej konfiguracji, zamiast szeregu poleceń proceduralnych, które ściśle mówią K8s, co ma robić. Jest to jedna z jego mocnych stron, poprawiająca automatyzację Twoich aplikacji. Pokochasz proste pisanie YAML i przekazywanie go do Kubernetes, wiedząc, że API Cię chroni.

Następnie spojrzysz na wszystko poza Twoim klastrem...

Te ręcznie tworzone bazy danych, grupy zabezpieczeń, zbłąkane instancje EC2. Zatęsknisz za “automatycznym szczęściem” swojego klastra. Ale teraz działaj tak, jakbyś nie mógł już wrócić do starych procedur.

Kubernetes ustala poprzeczkę i łatwo jest dopasować swoją misję i dostosować wszystko inne do tego standardu. Oto moja jedyna rada: dobrze szacuj koszta. Automatyzacja jest świetna, ale im więcej automatyzujesz, tym więcej masz zarządzania. Często trudniejszym pytaniem jest, w jaki sposób zamierzasz operacyjnie utrzymywać wszystkie zautomatyzowane narzędzia po ich zbudowaniu.

<p>Loading...</p>