Proces planowania kontenerów w ramach platformy orkiestracji kontenerów, takiej jak Kubernetes lub Docker SWARM, można opisać jako proste przydzielanie zasobów środowiska wykonawczego do obciążeń. W świecie, w którym zasoby są nieograniczone (lub przynajmniej wystarczające), a wszystkie obciążenia są równe, obecne systemy planowania kontenerów byłyby uważane za wystarczające. Jednak w realnym świecie informatyki korporacyjnej wiemy, że nie wszystkie obciążenia są równe, a większość organizacji ma ograniczenia zasobów. Co więcej, duże organizacje mają unikalne potrzeby i chcą uruchamiać swoje obciążenia w określony sposób, dlatego przedstawiamy uzasadnienie biznesowe dla zaawansowanego planowania.
Podczas eksperymentowania z kontenerami lub prowadzenia kilku małych projektów pilotażowych, harmonogramowanie kontenerów może być naprawdę proste. Jednak gdy wykraczamy poza trywialne przypadki użycia, harmonogramowanie kontenerów staje się znacznie bardziej złożone i stanowi niezwykle istotne wyzwanie.
W poniższych sekcjach omówiono bardziej szczegółowo inherentną złożoność i zilustrowano potrzebę wydajnego, zautomatyzowanego harmonogramowania kontenerów.
Środowiska kontenerowe są dynamiczne, a nie statyczne
Choć mogłoby się wydawać, że architektury oparte na usługach są statyczne i obejmują długotrwałe usługi, które praktycznie się nie zmieniają, jest to dalekie od prawdy. Ze względu na dynamiczną naturę komponentów, takich jak kontrolery replikacji i dynamiczne równoważenie obciążenia, liczba i charakter wykonywanych komponentów usług może zmieniać się wielokrotnie w ciągu dnia. Należy się spodziewać, że wymagania i warunki brzegowe, takie jak te wymienione poniżej, mogą ulec zmianie w dowolnym momencie. Zazwyczaj wymaga to zmiany w rozmieszczeniu obciążenia z powodu:
- Awarie systemu i konieczność ponownego zaplanowania usługi lub części jej komponentów
- Realokacja, dodawanie lub usuwanie zasobów, np. w środowisku chmurowym
- Zapotrzebowanie i priorytet obciążeń pracą mogą się zmieniać, szczególnie w odniesieniu do innych obciążeń pracą, np. w zależności od pory dnia i pory dnia w zakresie zapotrzebowania.
Aktualizacje oprogramowania konkretnej usługi lub niektórych jej komponentów mogą również powodować dynamiczne zmiany w środowisku. Ponadto, obciążenia niezwiązane z usługami, bardziej przejściowe, mogą wymagać priorytetu i tworzyć ograniczenia zasobów. Obciążenia takie jak zadania wsadowe, praca interaktywna, kompilacje oprogramowania (np. uruchamiane za pośrednictwem struktur CI/CD) lub zadania zestawów testowych, również wynikające ze struktur CI/CD, mogą również powodować konflikty i konieczność ponownego zrównoważenia obciążeń.
Harmonogramowanie kontenerów jest bardzo złożone i nie jest proste
W przypadku kontenerów istnieje o wiele więcej (i znacznie mniejszych) ruchomych części niż w przypadku tradycyjnych, bardziej monolitycznych podejść do tworzenia aplikacji. Na przykład, komponenty aplikacji mikrousługowych charakteryzują się współzależnościami, zróżnicowanymi potrzebami i wykorzystują repliki komponentów usług, aby osiągnąć skalowalność. Istnieje również więcej zależności od warstw definiowanych programowo dla sieci i pamięci masowej. Każde zgłoszenie inżyniera może wywołać lawinę kroków kompilacji/wdrożenia/testowania, a zautomatyzowana orkiestracja zapewniająca gotowość i sprawność usług będzie tworzyć lub zamykać komponenty usług na żądanie. W przypadku zaangażowania DevOps istnieje więcej interesariuszy wpływających na operacje – każdy inżynier aplikacji i każdy pojedynczy krok programistyczny może bezpośrednio wpłynąć na operacje. Spójne i niezawodne świadczenie usług w oparciu o te ruchome elementy układanki staje się wyzwaniem, szczególnie w przypadku skalowania w górę i na szeroką skalę, przy wyższych stawkach usług i większej liczbie usług.
Harmonogramowanie kontenerów musi uwzględniać ograniczenia zasobów
Świat przetwarzania w chmurze stwarza iluzję nieograniczonej dostępności zasobów, ale te zasoby są często z natury ograniczone. Zazwyczaj ogranicza je budżet lub dostępność i moc obliczeniowa docelowych węzłów. Ograniczenia mogą również wynikać ze skalowalności obciążeń, a kompromisy między kosztami a korzyściami mogą ograniczyć zwrot ekonomiczny powyżej pewnego progu. Jeśli musisz wykonać więcej zadań, niż jesteś w stanie obsłużyć, planowanie staje się trudnym procesem decyzyjnym, w którym pojawiają się pytania: „kto wykonuje, a kto nie?”, „kto zaczyna, kto idzie dalej?” i „kto dostaje więcej, a kto mniej?”.
Potrzeba wydajnego i zautomatyzowanego planowania
Nie jest tajemnicą, że kontenery są wdrażane w rekordowym tempie i chociaż większość organizacji wciąż znajduje się w fazie pilotażowej, rozwojowej lub testowej, to w miarę jak wdrożenia docierają do etapu produkcji, a ostatecznie do etapu skalowania, ograniczenia wymuszą konieczność korzystania z zaawansowanych i zautomatyzowanych narzędzi do planowania.
- Największym wyzwaniem w orkiestracji kontenerów jest automatyzacja podejmowania decyzji w celu poradzenia sobie z dowolną kombinacją wyzwań, takich jak ograniczenia zasobów, złożone przypadki użycia kontenerów lub dynamicznie zmieniające się środowiska i warunki brzegowe
- Automatyczne planowanie wymaga skutecznych zasad i ich efektywnego wdrożenia
- Bez wydajnego i zautomatyzowanego planowania będziesz zmuszony pogodzić się z marnotrawstwem zasobów lub będziesz musiał stale wprowadzać zmiany ręcznie, nigdy nie osiągając optymalnego wyniku.
Bez zaawansowanego planowania marnowałbyś czas, wysiłek i pieniądze. Im bardziej dynamiczne staje się Twoje środowisko (np. chmura) i im bardziej zaawansowane są Twoje przypadki użycia, tym więcej marnujesz.
Przedstawiamy Navops Command – supermoce dla Kubermetes
Inżynierowie Google zaangażowani w tworzenie Kubernetesa już na samym początku dostrzegli potrzebę zaawansowanego harmonogramowania i uwzględnili w swojej modułowej architekturze Kubernetes możliwość łatwego zastąpienia harmonogramu Kubernetes lub równoległego wykorzystania wielu harmonogramów. Univa posiada wieloletnie doświadczenie w harmonogramowaniu w zastosowaniach obliczeń o wysokiej wydajności i technicznych. Opierając się na naszym sprawdzonym doświadczeniu, zaprojektowaliśmy funkcję harmonogramowania Navops Command tak, aby była zgodna z Kubernetesem, z eleganckim, zorientowanym na kontenery interfejsem internetowym, a także interfejsami API i interfejsem wiersza poleceń. System wprowadza do świata kontenerów koncepcje takie jak proporcjonalne zarządzanie współdzieleniem zasobów, limity zasobów, listy kontroli dostępu i przeplot zasobów. Odwiedź stronę www.navops.io/command.html , aby dowiedzieć się więcej i ubiegać się o wczesny dostęp.
Autor: Fritz Ferstl, dyrektor ds. technologii i rozwoju biznesu, region EMEA, Univa
Fritz wnosi ponad 23-letnie doświadczenie jako wiodący ekspert w dziedzinie rozproszonego zarządzania obciążeniami i zasobami. Jego doświadczenie obejmuje przetwarzanie siatkowe, przetwarzanie w chmurze, obliczenia o wysokiej wydajności, wirtualizację i optymalizację kontenerów. Jako dyrektor techniczny Univa Corporation, definiuje kierunek rozwoju produktów i technologii Univa, wspierając setki dużych klientów korporacyjnych ze wszystkich branż i odpowiadając za ich potrzeby w zakresie zarządzania obciążeniami. Wśród tych klientów znajduje się wiele największych światowych środowisk obliczeniowych.




Amazon