Klaster OKD (OpenShift) na maszynach wirtualnych Proxmox – Opis instalacji

Klaster OKD (OpenShift) na maszynach wirtualnych Proxmox

Spis treści

Lista części opisu instalacji

Opis utworzenia klastra OKD (OpenShift) podzielono na kilka części aby ułatwić wykonywanie kolejnych kroków. Podstawowym zadaniem jest przygotowanie poprawnie działającego serwera DNS oraz konfiguracja maszyny bastion, która pozwoli na przygotowanie i dystrybucję konfiguracji dla bootstrapa, masterów oraz workerów.

Opis OKD

OKD (Origin Community Distribution of Kubernetes) to dystrybucja społecznościowa typu open source Red Hat OpenShift, popularnej platformy opartej na Kubernetes do zarządzania konteneryzowanymi aplikacjami.

Kubernetes Core:
OKD jest w swej istocie zbudowany na Kubernetes, oferując wszystkie swoje możliwości orkiestracji kontenerów, w tym harmonogramowanie obciążeń, skalowanie i samonaprawianie.

Funkcje OpenShift:
OKD zawiera dodatkowe funkcje z OpenShift, które ulepszają Kubernetes, takie jak:

  • Wbudowany rejestr kontenerów.
  • Przyjazne dla deweloperów narzędzia do zarządzania aplikacjami.
  • Interfejs użytkownika oparty na sieci Web zarówno dla deweloperów, jak i administratorów.
  • Zintegrowane możliwości CI/CD
  • Elastyczność i dostosowywanie. Będąc oprogramowaniem typu open source, OKD pozwala użytkownikom dostosowywać platformę do swoich potrzeb bez polegania na modelu subskrypcji Red Hat.

Obsługa środowisk hybrydowych i wielochmurowych:
OKD można wdrożyć w różnych środowiskach, w tym w infrastrukturze lokalnej, chmurach prywatnych i chmurach publicznych.

Framework operatora:
OKD wykorzystuje framework operatora Kubernetes do automatyzacji wdrażania i zarządzania cyklem życia złożonych aplikacji.

Napędzany społecznością:
W przeciwieństwie do OpenShift, który jest ofertą korporacyjną Red Hat, OKD jest utrzymywany i napędzany przez społeczność open source. Służy jako poligon doświadczalny dla nowych funkcji, które mogą ostatecznie trafić do OpenShift.

Przypadki użycia:
Deweloperzy, którzy chcą tworzyć, wdrażać i skalować aplikacje konteneryzowane.
Organizacje poszukujące bezpłatnej, open source’owej alternatywy dla OpenShift.
Hobbyści i współpracownicy, którzy chcą eksperymentować z możliwościami OpenShift bez subskrypcji.
Różnice między OKD i OpenShift:
OKD to wersja społecznościowa, natomiast OpenShift to wersja korporacyjna, oferowana przez Red Hat z komercyjnym wsparciem.
OKD używa CRI-O lub innych środowisk uruchomieniowych kontenerów, podczas gdy OpenShift zwykle jest dostarczany z ulepszeniami i środowiskami uruchomieniowymi specyficznymi dla Red Hat.

Różnice pomiędzy OKD a OpenShift

OKD i OpenShift są blisko spokrewnione, ale różnią się pod kilkoma względami, głównie pod względem pochodzenia, licencjonowania i wsparcia. Oto szczegółowe porównanie:
Pochodzenie i społeczność kontra przedsiębiorstwo
OKD:
Główna dystrybucja społecznościowa typu open source Kubernetes wzbogacona o funkcje OpenShift.
Opracowana i utrzymywana przez społeczność typu open source.
Często służy jako poligon doświadczalny dla funkcji, które są później uwzględniane w OpenShift.
OpenShift:
Główny produkt korporacyjny OKD, dostarczany przez Red Hat.
Obejmuje dodatkowe zastrzeżone funkcje i integracje, w pełni przetestowane i obsługiwane przez Red Hat.
Licencjonowanie i koszt
OKD:
W 100% open source i bezpłatne.
Podlegające licencjom typu open source, takim jak Apache 2.0.
OpenShift:
Oprogramowanie komercyjne wymagające subskrypcji Red Hat.
Obejmuje zastrzeżone komponenty, takie jak Red Hat Enterprise Linux CoreOS (RHCOS).
Wsparcie
OKD:
Brak formalnego wsparcia; polega na społeczności w zakresie rozwiązywania problemów i aktualizacji.
Idealny dla programistów, hobbystów i organizacji, które nie wymagają komercyjnego wsparcia.
OpenShift:
Dostarczany z obsługą klasy korporacyjnej i umową o poziomie usług (SLA) od Red Hat.
Zawiera poprawki zabezpieczeń, aktualizacje i wsparcie techniczne.
Podstawowy system operacyjny
OKD:
Używa Fedora CoreOS, systemu operacyjnego typu open source, który służy jako podstawa dla obciążeń kontenerowych.
OpenShift:
Używa Red Hat Enterprise Linux CoreOS (RHCOS), który oferuje lepszą integrację z ekosystemem korporacyjnym Red Hat i certyfikowanym oprogramowaniem.
Funkcje i integracje
OKD:
Zawiera wszystkie podstawowe funkcje Kubernetes i OpenShift, ale może brakować niektórych integracji specyficznych dla przedsiębiorstw.
Aktualizacje i funkcje mogą być mniej stabilne niż OpenShift, ponieważ OKD jest projektem nadrzędnym.
OpenShift:
Zawiera funkcje klasy korporacyjnej, takie jak OpenShift Service Mesh, Red Hat Advanced Cluster Management (RHACM) i inne integracje z ekosystemem Red Hat.
Zawiera przetestowane, produkcyjne wersje funkcji wprowadzonych po raz pierwszy w OKD.
Środowisko wykonawcze kontenerów
OKD:
Obsługuje CRI-O lub inne środowiska wykonawcze kontenerów typu open source.
OpenShift:
Głównie używa CRI-O, ale może zawierać optymalizacje specyficzne dla produktów Red Hat.
Przypadki użycia
OKD:
Najlepsze dla:
Eksperymentowania i rozwoju.
Obciążeń niekrytycznych lub organizacji poszukujących ekonomicznych rozwiązań.
Osób lub społeczności zainteresowanych ulepszeniami Kubernetes typu open source.
OpenShift:
Najlepsze dla:
Środowisk produkcyjnych klasy korporacyjnej.
Organizacji potrzebujących formalnego wsparcia i SLA.
Firm wymagających bezproblemowej integracji z produktami i ekosystemem Red Hat

Wykorzystanie zasobów przez klaster OKD serwera Proxmox

Testowy serwer Proxmox w wersji 8.3 ma następujące parametry:

Więcej informacji o samym serwerze można znaleźć pod tym adresem https://itadmin.vblog.ovh/moj-domowy-serwer-intel-nuc-nuc10i7fnk-aktualizacja-i-ustawienia-bios-u/ . Więcej informacji o instalacji Proxmox 7 na tym urządzeniu można znaleźć tutaj https://itadmin.vblog.ovh/moj-domowy-serwer-intel-nuc-nuc10i7fnk-instalacja-i-konfiguracja-proxmox-ve/

W celu optymalizacji zużycia pamięci na serwerze Proxmox włączone są następujące funkcjonalności:

Przy braku dodatkowych projektów i nie aktywnej funkcjonalność metryk klaster potrzebuje więc ok 76 GB RAM. Czyli sporo więcej niż jest fizycznie dostępne w serwerze (64 GB RAM). Dlatego konieczne jest skorzystanie z mechanizmu KSM sharing oraz ZSWAP aby zmniejszyć zużycie pamięci w serwerze Proxmox.

Do analizy wykorzystania pamięci przez maszyny wchodzące w skład klastra OKD (OpenShift) użyto poniższego skryptu bash

#!/bin/bash

# List of VM IDs
VM_IDS=("4010" "4020" "4030" "4040" "4051" "4052" "4053" "4061" "4062")

# Initialize total memory usage
TOTAL_MEM=0

# Loop through each VM ID
for VM_ID in "${VM_IDS[@]}"; do
    # Check if the VM exists and is running
    STATUS=$(qm status "$VM_ID" 2>/dev/null | awk '{print $2}')

    if [[ "$STATUS" == "running" ]]; then
        # Retrieve memory usage via pvesh
        MEM_USAGE=$(pvesh get /nodes/$(hostname)/qemu/"$VM_ID"/status/current --output-format json | jq '.mem')

        if [[ -n $MEM_USAGE ]]; then
            TOTAL_MEM=$((TOTAL_MEM + MEM_USAGE))
            echo "VM $VM_ID: $((MEM_USAGE / 1024 / 1024)) MiB"
        else
            echo "Failed to retrieve memory usage for VM $VM_ID."
        fi
    else
        echo "VM $VM_ID is not running or does not exist."
    fi
done

# Convert total memory usage to MiB for readability
TOTAL_MEM_MIB=$((TOTAL_MEM / 1024 / 1024))

# Output the total memory usage
echo "Total Memory Usage: $TOTAL_MEM_MIB MiB"

Równie wysokie jest zużycie CPU, które średnio oscyluje w granicach 85-95 %.

Monitoring Icinga 2 pokazuje średni load 15 na poziomie ok 17 czyli dość dużo jak na 12 rdzeniowy procesor.

Na podstawie powyższych danych widać, że zalecane minimum do utworzenia klastra OKD 4.15 to serwer z 96-128 GB RAM i szybkim 16 rdzeniowym procesorem.