Dlaczego w Windows instaluje się Minikube zamiast samego Kubernetes?

Instalacja Minikube zamiast pełnej wersji Kubernetes na systemie Windows (i innych systemach operacyjnych) wynika z kilku powodów:

1. Skomplikowana Architektura Kubernetes

Kubernetes to kompleksowy system orkiestracji kontenerów, który wymaga wielu komponentów, takich jak:

  • API Server
  • Controller Manager
  • Scheduler
  • Kubelet
  • Kube Proxy
  • etcd (baza danych)

Zainstalowanie wszystkich tych komponentów na lokalnej maszynie byłoby skomplikowane i wymagałoby zaawansowanej konfiguracji. Minikube upraszcza ten proces.

2. Lokalne Środowisko

Minikube jest narzędziem zaprojektowanym do tworzenia lokalnych klastrów Kubernetes. Jest idealne do:

  • Rozwoju i testowania: Umożliwia deweloperom łatwe uruchamianie i testowanie aplikacji w środowisku Kubernetes bez potrzeby zarządzania pełnym klastrem.
  • Szybkiej konfiguracji: Minikube automatycznie konfiguruje klaster na lokalnej maszynie, co znacznie przyspiesza proces uruchamiania Kubernetes.

3. Wymagania Systemowe

Pełne wdrożenie Kubernetes na lokalnej maszynie może wymagać znacznych zasobów systemowych oraz odpowiedniej infrastruktury, co nie jest idealne dla deweloperów pracujących na komputerach osobistych. Minikube pozwala na uruchamianie klastra w bardziej ograniczonym środowisku.

4. Szybka Iteracja

Minikube umożliwia szybkie uruchamianie i zatrzymywanie klastra, co jest szczególnie przydatne w procesie ciągłej integracji i dostarczania (CI/CD).

5. Wsparcie dla Różnych Środowisk Wirtualizacyjnych

Minikube działa w różnych środowiskach wirtualizacyjnych (np. VirtualBox, Hyper-V, Docker), co czyni go bardziej elastycznym narzędziem dla deweloperów.

Podsumowanie

Minikube jest świetnym rozwiązaniem dla deweloperów, którzy chcą szybko i łatwo pracować z Kubernetes bez konieczności zarządzania pełnym klastrem, co wymagałoby znacznie więcej zasobów i wiedzy technicznej. Dla bardziej zaawansowanych wdrożeń produkcyjnych, organizacje zwykle korzystają z usług zarządzanych lub wdrożeń wieloklastrowych.

Pobieranie niezbędnego oprogramowania

Minikube

Pobierz najnowszą wersje Minkiube bezpośrednio ze strony Minikube. Przejdz proces instalacji i upewnij się że scieżka w ktorej znajduje się instalacja (zwykle 'C:\Program Files\Kubernetes\Minikube') jest dodana do Path zmiennych środowiskowych Windows. Możesz sprawdzić czy Minikube widoczne jest w systemie poleceniem:

minikube version

Kubectl

Kubectl to narzędzie wiersza poleceń, które służy do interakcji z klastrami Kubernetes. Umożliwia zarządzanie aplikacjami kontenerowymi oraz konfigurację i monitorowanie zasobów w klastrze.

Pobierz program Kubectl poleceniem 'curl.exe -LO "https://dl.k8s.io/release/v1.31.0/bin/windows/amd64/kubectl.exe"'. Wykonaj to polecenie z linii komend, w katalogu w którym masz uprawnienia do zapisywania plików. Zapisz docelowo pobrany plik do katalogu 'C:\Program Files\Kubernetes\Kubectl'. Dodaj katalog w której znajduje się plik kubectl.exe do Path zmiennych środowiskowych Windows. Uruchom Windows ponownie.

Sprawdzanie czy komenda kubectl jest widoczna w systemie:

kubectl version --client

Uruchamianie klastra

Jesteśmy w środowisku Windows zatem domyślnym wirtualizatorem będzie Hyper-V. Upewnij się że masz włączoną opcję wirtualizacji w BIOS oraz opcja Hyper-V jest wybrana w ustawieniach systemu (panel sterowania =>programy=>włącz lub wyłącz opcje Windows=>Hyper-V).

Włączanie Hyper-V

Otwórz konsolę PowerShell jako Administrator i uruchom następujące polecenie:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Tworzenie klastra

Aby rozpocząć tworzenie klastra Minikube, wykonaj polecenie:

minikube start --driver=hyperv

Jeśli wszystko pójdzie zgodnie z planem, zobaczysz rezultat:                                                                

��  minikube v1.44.0 na Microsoft Windows 11 Pro 10.0.66631.4169 Build 22777.5169                                      

✨  Using the hyperv driver based on user configuration
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🔥  Creating hyperv VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
❗  Failing to connect to https://registry.k8s.io/ from inside the minikube VM
💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  Przygotowywanie Kubernetesa v1.31.0 na Docker 27.2.0...
    ▪ Generating certificates and keys ...
    ▪ Uruchamianie płaszczyzny kontrolnej ...
    ▪ Konfigurowanie zasad RBAC ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Sprawdzanie utworzonego klastra

Kliknij 'Start' w Windows i wybierz 'Hyper-V Manager'. W oknie Virtual Machines zobaczysz utworzoną właśnie maszynę wirtualną 'minikube'. To jest nasz klaster Minikube.

Helm

Następnym etapem jest instalacja Helm. 

Helm to menedżer pakietów dla Kubernetes, który upraszcza zarządzanie aplikacjami w klastrach. Oto kluczowe funkcje Helm:

  1. Zarządzanie aplikacjami: Umożliwia definiowanie aplikacji jako zestawu zasobów Kubernetes w formie chartów.

  2. Dynamiczne konfiguracje: Używa szablonów, co pozwala na łatwe dostosowywanie parametrów aplikacji w różnych środowiskach.

  3. Instalacja i aktualizacja: Pozwala na łatwe instalowanie aplikacji za pomocą jednego polecenia oraz aktualizację do nowszych wersji.

  4. Rollback: Umożliwia szybkie przywracanie wcześniejszych wersji aplikacji w razie problemów.

  5. Zarządzanie zależnościami: Obsługuje zależności między chartami, co ułatwia zarządzanie złożonymi aplikacjami.

Instalacja

Pobierz najnowszą wersje z Github. Następnie dodaj ścieżkę lokalizacji programu (C:\Program Files\Kubernetes\Helm) do zmiennej Path. Uruchom ponownie komputer

Sprawdzanie czy Helm windoczy jest z linii poleceń:

helm version

Mając tak przygotowane środowisko możesz przejść do instalacji aplikacji.