Jak zainstalować klaster Kubernetes na Centos 8

Jak zainstalować klaster Kubernetes na Centos 8

Proces instalowania Kubernetes Cluster NA Centos 8 jest prawie podobny do tego Centos 7 (które możesz tutaj przejść), ale proces tutaj ma kilka zmian. Te zmiany, głównie obracają się wokół instalacji Doker.

Zaczynając od Centos 8 (i przez rozszerzenie RHEL 8), doker został teraz natywnie zastąpiony przez Podman I Buildah które są narzędziami Czerwony kapelusz. W rzeczywistości pakiet Docker został teraz usunięty z domyślnego repozytorium pakietów.

Z tym ruchem, Czerwony kapelusz Zespół ma na celu uproszczenie procesu tworzenia i korzystania z kontenerów, bez konieczności specjalnych uprawnień, jednocześnie utrzymując kompatybilność z obrazami Docker i prowadzenie ich bez konieczności demona. Podman obiecuje, że zaoferuje większą elastyczność podczas biegania Kubernetes środowiska, ale jury pozostaje tam.

W tym artykule przechodzimy przez proces instalacji Kubernetes na Centos 8 platforma, działająca Docker-Ce (Wydanie społeczności). W późniejszym artykule będziemy również przechodzić przez podobną instalację, używając Podman dla naszych kontenerów.

Wymagania wstępne

  1. Trzy serwery z CentoS 8 - 1 węzeł główny I 2 węzły robotnicze.
  2. Zaleca się, aby Twoje węzły miały co najmniej 2 procesory z 2 GB pamięci RAM lub więcej na maszynę. To nie jest ścisły wymóg, ale w dużej mierze opiera się na potrzebach aplikacji, którą zamierzasz uruchomić.
  3. Łączność internetowa na wszystkich twoich węzłach. Będziemy pobierać Kubernetes I doker pakiety z repozytorium. Równie musisz upewnić się, że menedżer pakietów DNF jest domyślnie zainstalowany i może zdalnie pobierać pakiety.
  4. Wszystkie Twoje węzły powinny być również w stanie się ze sobą łączyć, w sieci prywatnej lub publicznej, w zależności od tego, który jest dostępny.
  5. Będziesz także potrzebował dostępu do konta z uprawnieniami sudo lub root. W tym samouczku będę korzystać z mojego konta głównego.

Ostrożność

Większość węzłów zazwyczaj ma unikalne PROCHOWIEC Adresy jednak w niektórych unikalnych przypadkach niektóre Wirtualne maszyny Może mieć identyczne adresy MAC. Zaleca się zatem potwierdzenie, że Produkt_uuid i PROCHOWIEC Adres nie jest identyczny w żadnym z węzłów.

Kubernetes wykorzystuje te wartości, aby jednoznacznie zidentyfikować węzły w klastrze. Jeśli te wartości nie są unikalne dla każdego węzła, proces instalacji może się nie powieść.

Aby sprawdzić adres MAC interfejsu sieciowego i porównać go.

# link IP 

Aby sprawdzić produkt_uuid i porównaj, uruchom następujące polecenie.

# cat/sys/class/dmi/id/produkt_uuid 

Logiczna architektura

Nasza instalacja jest zaprojektowana tak, aby mieć Węzeł mistrzowski kontrolowanie Węzły robotnicze. Pod koniec tej instalacji nasza logiczna architektura będzie wyglądać tak tak.

Węzeł główny - Ta maszyna zasadniczo działa jako płaszczyzna sterowania i uruchamia bazę danych klastra i serwer API (z którym komunikuje się Kubectl CLI).

Nasz 3-węzłowy Kubernetes Cluster będzie wyglądać mniej więcej tak:

Kubernetes Schemat klastra

Instalacja klastra Kubernetes w węźle głównym

Dla Kubernetes Do pracy potrzebujesz silnika kontenerskiego. Jak wspomniano, będziemy używać Docker-Ce.

Na następujących instytucjach zostaną wykonane Węzeł główny Centos 8.

Krok 1: Przygotuj nazwę hosta, zaporę ogniową i Selinux

Na Twoim Węzeł główny Centos 8, Ustaw nazwę hosta systemu i zaktualizuj DN w swoim /etc/hosts plik.

# hostnamectl set-hostname-węzeł master # cat <> /etc /hosts 192.168.0.47 węzeł mistrzów 192.168.0.48 Node-1 Worker-Node-1 192.168.0.49 Node-2-Node-2-Node-2 EOF 

Następnie ping your Node-1 pracownika-1 I Node pracownicze-2 Aby sprawdzić, czy zaktualizowany plik hosta działa poprawnie za pomocą polecenia ping.

# ping 192.168.0.48 # ping 192.168.0.49 

Następnie wyłącz Selinux, ponieważ jest to wymagane, aby umożliwić kontenerom dostęp do systemu plików hosta, który jest potrzebny w sieciach POD i inne usługi.

# setenforce 0 

Ustawienie setenforce Do 0 Skutecznie ustawia Selinux na dopuszczalny, co skutecznie wyłącza SELINUX do następnego ponownego uruchomienia. Aby całkowicie go wyłączyć, użyj poniższego polecenia i uruchom ponownie.

# sed -i - -follow -symlinks 's/selinux = Enforcing/selinux = disabled/g'/etc/sysconfig/selinux # restart 

Kubernetes korzysta z różnych portów do komunikacji i dostępu, a te porty muszą być dostępne dla Kubernetes i nie są ograniczone przez zaporę ogniową.

Porty Kubernetes

Skonfiguruj reguły zapory na portach.

# Firewall-CMD --PerManent --add-port = 6443/tcp # Firewall-CMD --PerManent --add-Port = 2379-2380/TCP # Firewalll-CMD --Permanent --add-Port = 10250/TCP # Firewall-CMD --Permanent --add-Port = 10251/TCP # Firewall-CMD --PerManent --add-Port = 10252/TCP # Firewall-CMD --Permanent --add-Port = 10255/TCP # Firewallll -cmd--reload # modprobe br_netfilter # echo '1'>/proc/sys/net/most/most-nf-call-eptables 

Krok 2: Zainstaluj Docker-CE na Centos 8

Będziesz musiał dodać Doker repozytorium najpierw, ponieważ nie jest już na domyślnej liście pakietów za pomocą następujących DNF Config-Manager Komenda.

# dnf config-manager --add-repo = https: // pobierz.doker.com/linux/centos/docker-ce.Repo 

Instaluj także kontenerd.io Pakiet, który jest dostępny jako demon zarządzający pełnym cyklem życia kontenera systemu hosta, od transferu obrazu i pamięci po wykonanie i nadzór po kontenerze po przechowywanie na niskim poziomie po załączniki sieciowe i nie tylko.

# DNF Zainstaluj https: // pobierz.doker.com/linux/centos/7/x86_64/stabilne/pakiety/Containerd.IO-1.2.6-3.3.El7.x86_64.RPM 

Teraz zainstaluj najnowszą wersję Docker-Ce pakiet.

# DNF instaluj Docker-CE 

Możesz teraz włączyć i uruchomić usługę Docker.

# Systemctl Włącz Docker # Systemctl Start Docker 

Krok 3: Zainstaluj Kubernetes (Kubeadm) na Centos 8

Następnie musisz dodać Kubernetes repozytoria ręcznie, ponieważ nie są instalowane domyślnie Centos 8.

# kot < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

Kubeadm Pomaga odkładać minimalną realną klaster Kubernetes, która jest zgodna z najlepszymi praktykami. Z Kubeadm, Twój klaster powinien przejść testy zgodności Kubernetes.

Kubeadm Obsługuje także inne funkcje cyklu życia klastra, takie jak aktualizacje, obniżenie i zarządzanie tokenami bootstrap. Kubeadm jest również integracyjny z innymi narzędziami orkiestracji, takimi jak Ansible I Terraform.

Dzięki repozytorium pakietu możesz iść naprzód i zainstalować Kubeadm pakiet.

# dnf instaluj kubeadm -y 

Gdy instalacja zakończy się pomyślnie, włącz i uruchom usługę.

# Systemctl Włącz Kubelet # Systemctl Start Kubelet 

Krok 4: Utwórz mistrz płaszczyzny sterowania z Kubeadm

Kubernetes Master, który działa jak sterowanie samolotem W przypadku klastra działa kilka krytycznych usług niezbędnych dla klastra. Jako taki, proces inicjalizacji wykona serię prechetów, aby zapewnić, że maszyna jest gotowa do uruchomienia Kubernetes. Te precheki ujawniają ostrzeżenia i wychodzą z błędów. Kubeadm Init Następnie pobiera i instaluje komponenty płaszczyzny sterowania klastrem.

Teraz nadszedł czas, aby zainicjować Kubernetes Master, ale wcześniej musisz wyłączyć zamian, aby uruchomić ”Kubeadm Init" Komenda.

# Swapoff -a 

Inicjowanie Kubernetes Master to całkowicie zautomatyzowany proces kontrolowany przez „Kubeadm Init„Polecenie jak pokazano.

# Kubeadm Init 
Zainicjuj Kubernetes Master

Następnie skopiuj następujące polecenie i przechowuj je gdzieś, ponieważ musieliśmy później uruchomić to polecenie w węzłach pracowniczych.

Kubeadm dołącza 192.168.0.47: 6443 -Token NU06LU.XRSUX0SS0IXTNMS5 \--DISCOVERY-TOKE-CA-CERT-HASH HA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF7

Wskazówka: Czasami powyższe polecenie może powodować błędy dotyczące przekazanych argumentów, więc aby uniknąć błędów, musisz usunąć „\” postać i twoje ostateczne polecenie będą wyglądać tak.

# Kubeadm dołącz 192.168.0.47: 6443 -Token NU06LU.XRSUX0SS0IXTNMS5 -DODODZINY TEKEN-CA-CERT-HASH SHA256: F9966EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF7 

Raz Kubernetes Zainicjowano pomyślnie, musisz umożliwić użytkownikowi zacząć korzystanie z klastra. W naszym scenariuszu będziemy używać użytkownika root. Możesz także uruchomić klaster za pomocą użytkownika Sudo, jak pokazano.

Używać źródło, uruchomić:

# mkdir -p $ home/.kube # cp -i/etc/kubernetes/admin.conf $ home/.kube/config # chown $ (id -u): $ (id -g) $ home/.kube/config 

Użyć Sudo włączył użytkownika, uruchomić:

$ mkdir -p $ home/.kube $ sudo cp -i/etc/kubernetes/admin.conf $ home/.kube/config $ sudo chown $ (id -u): $ (id -g) $ home/.kube/config 

Teraz potwierdź, że polecenie kubectl jest aktywowany.

# kubectl zdobądź węzły 
Sprawdź status węzłów

W tej chwili zobaczysz status węzła głównegoNie gotowy'. Dzieje się tak, ponieważ mamy jeszcze wdrożyć sieć POD w klastrze.

Sieć POD to sieć nakładki dla klastra, która jest wdrażana na niniejszej sieci węzłów. Został zaprojektowany, aby umożliwić łączność w całym kapsule.

Krok 5: Skonfiguruj swoją sieć POD

Wdrożenie klastra sieci to wysoce elastyczny proces w zależności od potrzeb i dostępnych jest wiele opcji. Ponieważ chcemy, aby nasza instalacja była tak prosta, jak to możliwe, będziemy używać Weavenet wtyczka, która nie wymaga żadnej konfiguracji ani dodatkowego kodu i zawiera jeden adres IP na POD, co jest dla nas świetne. Jeśli chcesz zobaczyć więcej opcji, sprawdź tutaj.

Te polecenia będą ważne, aby uzyskać konfigurację sieci POD.

# Eksport kubever = $ (wersja kubectl | base64 | tr -d '\ n') # kubectl Apply -f "https: // chmur.splot.Works/k8s/net?K8s-wersja = $ kubever " 
Sieć konfiguracji POD

Teraz, jeśli sprawdzisz status węzła głównego, powinno to być ”Gotowy'.

# kubectl zdobądź węzły 
Sprawdź status węzłów głównych

Następnie dodajemy Węzły robotnicze do klastra.

Dodawanie węzłów pracowniczych do klastra Kubernetes

Na każdym zostaną wykonane następujące instrukcje Węzeł roboczy Podczas dołączania do klastra Kubernetes.

Krok 1: Przygotuj nazwę hosta, zaporę ogniową i Selinux

Najpierw ustaw nazwę hosta na swoim Node-1 pracownika-1 I Node pracownicze-2, a następnie dodaj wpisy hosta do /etc/hosts plik.

# hostnamectl set-hostname 'node-1' # cat <> /etc /hosts 192.168.0.47 węzeł mistrzów 192.168.0.48 Node-1 Worker-Node-1 192.168.0.49 Node-2-Node-2-Node-2 EOF 

Następnie ping your Węzeł główny od twojego Węzły robotnicze Aby potwierdzić, że zaktualizowany plik hosta działa dobrze za pomocą polecenia ping.

# 192.168.0.47 

Następnie wyłącz Selinux i zaktualizuj zasady zapory.

# setenforce 0 # sed -i--follow-symlinks 's/selinux = Enforcing/selinux = disabled/g'/etc/sysconfig/selinux # firewall-cmd --perMent --add -port = 6783/tcp # firewalll- Cmd --Permanent --add-port = 10250/tcp # Firewall-CMD --Permanent --add-port = 10255/tcp # firewall-cmd --PerManent --add-Port = 30000-32767/tcp # Firewalll- cmd--reload # echo '1'>/proc/sys/net/most/most/most-nf-call-call-eptables 

Krok 2: Konfiguruj repozytor

Dodaj najpierw repozytorium Docker za pomocą DNF Config-Manager.

# dnf config-manager --add-repo = https: // pobierz.doker.com/linux/centos/docker-ce.Repo 

Następnie dodaj kontenerd.io pakiet.

# DNF Zainstaluj https: // pobierz.doker.com/linux/centos/7/x86_64/stabilne/pakiety/Containerd.IO-1.2.6-3.3.El7.x86_64.RPM 

Po zainstalowaniu tych dwóch pakietów zainstaluj najnowszą wersję Docker-Ce.

# DNF instaluj Docker-CE 

Włącz i uruchom usługę Docker.

# Systemctl Włącz Docker # Systemctl Start Docker 

Będziesz musiał dodać Kubernetes repozytoria ręcznie, ponieważ nie są wstępnie zainstalowane Centos 8.

# kot < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

Krok 3: Zainstaluj Kubeadm na Centos 8

Dzięki repozytorium pakietu możesz iść naprzód i zainstalować Kubeadm.

# dnf instaluj kubeadm -y 

Rozpocznij i włącz usługę.

# Systemctl Włącz Kubelet # Systemctl Start Kubelet 

Krok 4: Dołącz do węzła pracownika do klastra Kubernetes

Teraz potrzebujemy tego tokena Kubeadm Init wygenerowane, aby dołączyć do klastra. Możesz skopiować i wkleić do swojego Węzeł 1 I Node-2 Jeśli gdzieś to skopiowałeś.

# Kubeadm dołącz 192.168.0.47: 6443 -Token NU06LU.XRSUX0S0IXTNMS5--DISCOVERY-TOWL-CA-CERT-HASH SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF78 

Jak sugerowano na ostatniej linii, wróć do swojego węzeł mistrzowski i sprawdź, czy pracownik Węzeł 1 I Węzeł pracowniczy-2 dołączyli do klastra za pomocą następującego polecenia.

# kubectl zdobądź węzły 
Sprawdź status wszystkich węzłów w klastrze Kubernetes

Jeśli wszystkie kroki działają pomyślnie, powinieneś zobaczyć Węzeł 1 I Node-2 w stanie gotowym na węzeł mistrzowski. W tym momencie z powodzeniem wdrożyłeś klaster Kubernetes Centos 8.

Zalecane odczyt: Jak wdrożyć Nginx na klastrze Kubernetes

Pewne ograniczenia

Klaster, który tutaj utworzyliśmy, ma jeden Węzeł główny, i jako taki, jeśli Węzeł główny niepowodzenie, klaster może stracić dane i może wymagać odtworzenia od zera.

Z tego powodu polecam wysoce dostępną konfigurację.