Klaster OKD (OpenShift) na maszynach wirtualnych Proxmox – Uruchomienie maszyny Bootstrap

Klaster OKD (OpenShift) na maszynach wirtualnych Proxmox

Przygotowanie maszyny wirtualnej Bootstrap

Węzeł bootstrap w klastrze OKD (OpenShift Kubernetes Distribution) to tymczasowy węzeł odpowiedzialny za inicjowanie procesu instalacji i provisioningu klastra. Odgrywa on kluczową rolę w bootstrappingu płaszczyzny sterowania i zapewnia, że ​​komponenty klastra są wdrażane i konfigurowane poprawnie. Obraz systemu Fedora CoreOS 39 jest do pobrania z tego linku https://ftp.pcss.pl/linux/coreos/fedora-coreos-39.20231101.3.0-live.x86_64.iso . Po przegraniu obrazu na isostore Proxmoxa możemy rozpocząć instalację systemu. Obraz ten jest nam potrzebny jedynie do momentu wpisania parametrów kernela. Dalsza instalacja odbywa się bowiem z udostępnionego pliku http://192.168.40.40:8080/okd4/fcos.raw.xz

Tworzymy nową maszynę wirtualną o id 4030 i nazwie bootstrap z podanymi parametrami:

  • Machine : q35, Qemu Agent (włączone)
  • 128 GB HDD, SCSI VirtIO Single, Cache: Write Back
  • 4 vCPU – 2 x Sockets, Enable NUMA (włączone) , Type: Host
  • 16 GB RAM , Balloning Device (włączone)
  • Bridge: vmbr4, Model: VirtIO

Przed pierwszym uruchomieniem kopiujemy MAC address maszyny do /etc/dnsmasq.d/vnet na maszynie LXC dnsmasq.

Instalacja maszyny Bootstrap

Zaraz po uruchomieniu maszyny wirtualnej i widoku Console w Proxmox należy wcisnąć TAB i wpisać poniższe parametry uruchomienia kernela

coreos.inst.install_dev=/dev/sda coreos.inst.image_url=http://192.168.40.40:8080/okd4/fcos.raw.xz coreos.inst.ignition_url=http://192.168.40.40:8080/okd4/bootstrap.ign

Wpisujemy ręcznie powyższe parametry kernela.
Nie ma możliwości wklejenia ich do okna.

Czekamy na zakończenie instalacji systemu na dysku /dev/sda

Pod koniec czeka nas jeszcze 1 dodatkowy restart i maszyna oczekuje na dołączenie kolejnych maszyn control-plane-x i compute-x do klastra.

Maszyna bootstrap służy jedynie do zbudowania klastra i po jego utworzeniu będzie mogła być usunięta / wyłączona aby zwolnić zasoby.

LPNazwa DNSAdres ipvCPUvRAMvHDDSystem OperacyjnyFunkcja
1dns1.okdlab.local192.168.40.1022 GB16 GBFedora Server 41DNS dla klastra
2storage.okdlab.local192.168.40.2024 GB128 GBFedora Server 41Storage NFS dla klastra
2bootstrap.testcluster.okdlab.local192.168.40.30416 GB128 GBFedora CoreOS 39Bootstrap node
3bastion.okdlab.local192.168.40.4044 GB128 GBFedora Server 41Haproxy Load balancer / instalacja
4control-plane-1.testcluster.okdlab.local192.168.40.51416 GB128 GBFedora CoreOS 39Master node
5control-plane-2.testcluster.okdlab.local192.168.40.52416 GB128 GBFedora CoreOS 39Master node
6control-plane-3.testcluster.okdlab.local192.168.40.53416 GB128 GBFedora CoreOS 39Master node
7compute-1.testcluster.okdlab.local192.168.40.61416 GB128 GBFedora CoreOS 39Worker node
8compute-2.testcluster.okdlab.local192.168.40.62416 GB128 GBFedora CoreOS 39Worker node

Weryfikacja poprawności działania maszyny bootstrap

# z maszyny bastion po zakończonej instalacji maszyny bootstrap gdy pojawi się na niej login
curl https://api-int.testcluster.okdlab.local:22623/config/master
# jeśli jest błąd podobny do poniższego
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to api-int.testcluster.okdlab.local:22623
# to z maszyny bastion połączyć się przez SSH do bootstrap
ssh -i /home/bastuser/ssh/id_ed25519 [email protected]
# i podejrzeć logi
journalctl -f -u bootkube.service
# lub
journalctl -b -f -u release-image.service -u bootkube.service

W powyższym przykładzie był błąd w polu pullSecret w manifeście Kubernetes który był utworzony na maszynie bastion w /home/bastuser/install_dir/install-config.yaml.
Po poprawieniu błędu należy po usunięciu wszystkich plików w /install_dir z wyjątkiem install-config.yaml uruchomić ponownie openshift-install create manifests –dir=install_dir oraz
openshift-install create ignition-configs –dir=install_dir/ i wgrać poprawioną wersją /install_dir na /var/www/okd4. Po wszystkim zrestartować usługę systemctl restart bootkube.service i kontynuować instalację klastra.

Wszelkie komunikaty typu unable to pull świadczą o tym, że popełniliśmy błąd we wpisywaniu parametrów kernela przy starcie np. ins zamiast inst lub niedostępności adresu http://192.168.40.40:8080/okd4/fcos.raw.xz lub http://192.168.40.40:8080/okd4/bootstrap.ign

Wszelkie komunikaty typu Get „https://quay.io/v2/”: dial tcp: lookup quay.io: no such host, świadczą o tym, że nie poprawnie działa nasza usługa DNS dla klastra i zapytanie przekazane do dns z maszyny bootstrap nie są poprawnie osbługiwane a nazwy rozwiązywane.

#  w razie błędów typu Get "https://quay.io/v2/": dial tcp: lookup quay.io: no such host
# na maszynie bootstrap 
curl -v https://quay.io/v2/
# na maszynie z DNS
curl -v https://quay.io/v2/
nslookup quay.io

Jeśli wszystko przebiegło poprawnie to w logach maszyna bootstrap będzie widoczne coś takiego

to następnie rozpocznie się proces tworzenie klastra i oczekiwanie na dołączenie kolejnych maszyn wirtualnych czyli nodów master i worker.