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 (w PowerShell z uprawnieniami administratora!):
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
Kiedy po raz pierwszy uruchamiasz minikube start, Minikube tworzy nową maszynę wirtualną oraz instaluje niezbędne komponenty Kubernetes. Gdy uruchamiasz minikube start ponownie, Minikube sprawdza, czy istnieje już maszyna wirtualna. Jeśli tak, to uruchomi tę maszynę, zamiast tworzyć nową.
Domyślnie nowa instalacja Minikube uruchamiana jest z wykorzystaniem 2 CPU i 6000MB pamięci. Aby wykorzystać więcej CPU, uruchom instalację z parametrem 'cpus':
minikube start --cpus=4
Jeśli masz już istniejący klaster, zatrzymaj go, usuń i ponownie utwórz z tym parametrem:
minikube stop
minikube start --cpus=4
Podobnie mozesz z użyciem pamięci (4GB w tym przypadku):
minikube start --memory=4096
Możesz też wprowadzić do konfiguracji żądaną ilość pamięci i CPU a następnie uruchomić minikube:
minikube config set memory 4096 # Ustawienie 4 GB pamięci RAM
minikube config set cpus 4 # Ustawienie 4 CPU
minikube start
Pamiętaj że te parametry nie zadziałają jeśli masz już utworzony klaster i tylko go uruchamiasz poleceniem 'minikube start'.
W końcu możesz też utworzyć nowy klaster z każdym z tych parametrów razem, np:
minikube start --cpus=6 --memory=12000
Tworzenie klastra z wielu nodów
Minikube pozwala Ci utworzyć klaster złożony z wiekszej ilości węzłów niż jeden. Wezły te będą jednak na tej samej fizycznie maszynie; niemożliwa jest dystrybucja węzłów miedzy różne serwery. Więcej niż jednen wezeł w Minikube tworzy się ze względu na testy separacji, wydajności itp. Przykładowe polecenie utworzenia klastra z dwoch nodów i zdefiniowaną liczbą CPU oraz pamięci:
minikube start --nodes 2 --cpus=6 --memory=12000
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.
Minikube oferuje prosty dashboard do podgladu stanu i ograniczonego zarzadzania klasterem. Przejdz do punktu Minkube dashboard by zobaczyć jak uruchomić dashboard.
Helm
Następnym etapem jest instalacja Helm jeśli planujesz pracować z pakietami nazywanymi "chartami".
Helm to menedżer pakietów dla Kubernetes, który upraszcza zarządzanie aplikacjami w klastrach. Oto kluczowe funkcje Helm:
-
Zarządzanie aplikacjami: Umożliwia definiowanie aplikacji jako zestawu zasobów Kubernetes w formie chartów.
-
Dynamiczne konfiguracje: Używa szablonów, co pozwala na łatwe dostosowywanie parametrów aplikacji w różnych środowiskach.
-
Instalacja i aktualizacja: Pozwala na łatwe instalowanie aplikacji za pomocą jednego polecenia oraz aktualizację do nowszych wersji.
-
Rollback: Umożliwia szybkie przywracanie wcześniejszych wersji aplikacji w razie problemów.
-
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.
Minikube dashboard
Minikube Dashboard to webowy interfejs użytkownika Kubernetes. Możesz go używać do:
- wdrażania aplikacji kontenerowych w klastrze Kubernetes
- rozwiązywania problemów z aplikacją kontenerową
- zarządzania zasobami klastra
- podglądu aplikacji działających w Twoim klastrze
- tworzenia lub modyfikowania poszczególnych zasobów Kubernetes (takich jak wdrożenia, zadania, zestawy demonów itp.)
Po zainstalowaniu Minikube uruchom dashboard poleceniem:
minikube dashboard
Jesli chcesz zobaczyć więcej danych o podach; zainstaluj metric-server wykonując poniższe polecenie przed uruchomieniem 'minikube dashboard':
minikube addons enable metrics-server
Statystyki te zobaczysz wybierając:
-
Wybierz zakładkę "Workloads": W dashboardzie znajdziesz zakładkę o nazwie Workloads. Po kliknięciu w nią, zobaczysz listę podów w klastrze.
-
Wybierz pod: Kliknij na pod, którego metryki chcesz zobaczyć. W szczegółach podu znajdziesz sekcję z metrykami, takimi jak CPU i pamięć. Możesz zobaczyć użycie zasobów oraz inne metryki, jeśli Metrics Server jest poprawnie skonfigurowany.
-
Wykorzystanie zasobów: W zakładce Workloads powinna być dostępna także kolumna z informacjami o wykorzystaniu zasobów, takich jak CPU i pamięć, co pozwoli Ci śledzić zużycie zasobów przez poszczególne pody.
Wykonanie komendy 'minikube dashboard' automatycznie otworzy Twoją przeglądarkę i otworzy interfejs daschboard'u. Polecenie to musisz wykonać po każdym restarcie systemu (chyba ze sporządzisz skrypt automatyzujący). Jeśli nie wiesz jaki jest url uruchomionego dashboradu, wykonaj polecenie:
minikube dashboard --url
To polecenie może być przydatne dla ustalenia aktualnego portu aplikacji wyświetlającej dashboard bo za każdym uruchomieniem 'minikube dashboard' aplikacja wykorzystuje losowy port.