ProHoster > Blog > administracja > CRI-O jako zamiennik Dockera jako środowisko uruchomieniowe dla Kubernetes: konfiguracja na CentOS 8
CRI-O jako zamiennik Dockera jako środowisko uruchomieniowe dla Kubernetes: konfiguracja na CentOS 8
Cześć! Nazywam się Sergey, jestem DevOps w Surf. Dział DevOps w Surf ma na celu nie tylko nawiązywanie interakcji pomiędzy specjalistami i integrowanie procesów pracy, ale także aktywne badanie i wdrażanie aktualnych technologii zarówno w infrastrukturze własnej, jak i w infrastrukturze klienta.
Poniżej opowiem trochę o zmianach w stosie technologii dla kontenerów, które napotkaliśmy podczas badania dystrybucji 8 CentOS i o tym, co jest STWÓRZ TO i jak szybko skonfigurować środowisko wykonywalne dla Kubernetes.
Dlaczego Docker nie jest zawarty w CentOS 8?
Po zainstalowaniu najnowszych głównych wydań RHEL 8 lub 8 CentOS nie można nie zauważyć: te dystrybucje i oficjalne repozytoria nie mają tej aplikacji Doker, które ideologicznie i funkcjonalnie zastępują opakowania Podman, Buduj (domyślnie obecny w dystrybucji) i STWÓRZ TO. Wynika to z praktycznego wdrożenia standardów opracowanych między innymi przez firmę Red Hat w ramach projektu Open Container Initiative (OCI).
Celem OCI, będącego częścią The Linux Foundation, jest stworzenie otwartych standardów branżowych dla formatów kontenerów i środowisk wykonawczych, które rozwiązują kilka problemów jednocześnie. Po pierwsze, nie zaprzeczały filozofii Linuksa (przykładowo w części, że każdy program powinien wykonywać jedną akcję, a Doker jest rodzajem kombajnu typu „wszystko w jednym”). Po drugie, mogłyby wyeliminować wszystkie istniejące braki w oprogramowaniu Doker. Po trzecie, byłyby w pełni kompatybilne z wymaganiami biznesowymi wiodących platform komercyjnych do wdrażania, zarządzania i obsługi aplikacji kontenerowych (na przykład Red Hat OpenShift).
Ograniczenia Doker a zalety nowego oprogramowania zostały już szczegółowo opisane w ten artykuł, a szczegółowy opis całego stosu oprogramowania oferowanego w ramach projektu OCI i jego cech architektonicznych można znaleźć w oficjalnej dokumentacji i artykułach samego Red Hata (nieźle artykuł na blogu Red Hat) i na stronach trzecich Opinie.
Należy zwrócić uwagę, jaką funkcjonalność mają komponenty proponowanego stosu:
Podman — bezpośrednia interakcja z kontenerami i przechowywaniem obrazów poprzez proces runC;
Buduj — montaż i wgranie obrazów do rejestru;
STWÓRZ TO — środowisko wykonywalne dla systemów orkiestracji kontenerów (na przykład Kubernetes).
Myślę, że aby zrozumieć ogólny schemat interakcji pomiędzy elementami stosu wskazane jest podanie tutaj schematu połączeń Kubernetes c biegC i biblioteki niskiego poziomu STWÓRZ TO:
STWÓRZ TO и Kubernetes trzymaj się tego samego cyklu wydawniczego i wsparcia (matryca kompatybilności jest bardzo prosta: wersje główne Kubernetes и STWÓRZ TO pokrywają się), a to, biorąc pod uwagę skupienie się na pełnym i kompleksowym przetestowaniu działania tego stosu przez programistów, daje nam prawo oczekiwać maksymalnej osiągalnej stabilności działania w każdych scenariuszach użytkowania (tutaj korzystna jest także względna lekkość STWÓRZ TO w porównaniu do Doker ze względu na celowe ograniczenie funkcjonalności).
Podczas instalacji Kubernetes „właściwy sposób” (oczywiście według OCI) przy użyciu STWÓRZ TO na 8 CentOS Natrafiliśmy na drobne trudności, które jednak udało nam się pokonać. Chętnie podzielę się z Tobą instrukcją instalacji i konfiguracji, co łącznie zajmie około 10 minut.
Jak wdrożyć Kubernetes na CentOS 8 przy użyciu frameworka CRI-O
Warunki wstępne: obecność co najmniej jednego hosta (2 rdzenie, 4 GB RAM, co najmniej 15 GB pamięci) z zainstalowanym 8 CentOS (zalecany jest profil instalacyjny „Serwer”), a także wpisy dla niego w lokalnym DNS (w ostateczności można obejść się wpisem w /etc/hosts). I nie zapomnij wyłącz zamianę.
Wszystkie operacje na hoście wykonujemy jako użytkownik root, należy zachować ostrożność.
W pierwszym kroku skonfigurujemy system operacyjny, zainstalujemy i skonfigurujemy wstępne zależności dla CRI-O.
Zaktualizujmy system operacyjny:
dnf -y update
Następnie musisz skonfigurować zaporę sieciową i SELinux. Tutaj wszystko zależy od środowiska w jakim będzie pracował nasz host lub hosty. Możesz skonfigurować zaporę sieciową zgodnie z zaleceniami z dokumentacjalub, jeśli korzystasz z zaufanej sieci lub korzystasz z zapory innej firmy, zmień strefę domyślną na zaufaną lub wyłącz zaporę:
ustaw wymaganą wersję STWÓRZ TO (wersja główna STWÓRZ TO, jak już wspomniano, pasuje do wymaganej wersji Kubernetes), od najnowszej stabilnej wersji Kubernetes obecnie 1.18:
Zwróć uwagę na pierwszy niuans, który napotykamy podczas procesu instalacji: musisz edytować konfigurację STWÓRZ TO przed uruchomieniem usługi, ponieważ wymagany komponent conmon ma inną lokalizację niż określona:
sed -i 's//usr/libexec/crio/conmon//usr/bin/conmon/' /etc/crio/crio.conf
Teraz możesz aktywować i uruchomić demona STWÓRZ TO:
Drugi ważny niuans: ponieważ nie używamy demona Doker, ale używamy demona STWÓRZ TO, przed uruchomieniem i inicjalizacją Kubernetes musisz dokonać odpowiednich ustawień w pliku konfiguracyjnym /var/lib/kubelet/config.yaml, po uprzednim utworzeniu żądanego katalogu:
Trzeci ważny punkt, który napotykamy podczas instalacji: pomimo tego, że wskazaliśmy używany sterownik cgrupai jego konfiguracja poprzez przekazane argumenty kubelet jest nieaktualny (jak wyraźnie stwierdzono w dokumentacji), musimy dodać argumenty do pliku, w przeciwnym razie nasz klaster nie zostanie zainicjowany:
Dostosować sterowanie samolotem lub pracownik węzłów w ciągu kilku minut, możesz użyć z tym skryptem.
Czas zainicjować nasz klaster.
Aby zainicjować klaster, uruchom komendę:
kubeadm init --pod-network-cidr=10.244.0.0/16
Pamiętaj, aby zapisać polecenie dołączenia do klastra „kubeadm Join…”, o którego użycie zostaniesz poproszony na końcu wyniku lub przynajmniej określone tokeny.
Zainstalujmy wtyczkę (CNI) dla sieci Pod. Polecam używać Perkal. Być może bardziej popularne Flanela ma problemy ze zgodnością z nftables, tak i tak Perkal - jedyne wdrożenie CNI zalecane i w pełni przetestowane w projekcie Kubernetes:
Aby podłączyć węzeł roboczy do naszego klastra należy go skonfigurować zgodnie z instrukcją 1 i 2 lub użyć scenariusz, następnie uruchom komendę z wyjścia „kubeadm init...”, które zapisaliśmy w poprzednim kroku:
Sprawdźmy, czy nasz klaster został zainicjowany i zaczął działać:
kubectl --kubeconfig=/etc/kubernetes/admin.conf get pods -A
Gotowy! Możesz już hostować ładunki w swoim klastrze K8s.
Co nas czeka dalej
Mam nadzieję, że powyższe instrukcje pomogły Ci zaoszczędzić trochę czasu i nerwów.
Wynik procesów zachodzących w branży często zależy od tego, jak zostaną one zaakceptowane przez większość użytkowników końcowych i twórców innego oprogramowania w odpowiedniej niszy. Nie jest jeszcze do końca jasne, do czego za kilka lat doprowadzą inicjatywy OCI, ale z przyjemnością będziemy to obserwować. Już teraz możesz podzielić się swoją opinią w komentarzach.
Bądźcie czujni!
Artykuł ten pojawił się dzięki następującym źródłom: