4.1 Kubernetes-Setup
Für die Bereitstellung meines Kubernetes-Clusters habe ich eine automatisierte Lösung gewählt. Mithilfe von Terraform kann ich sowohl den gesamten Cluster als auch einzelne Nodes konfigurieren und bei Bedarf neu erstellen. Dies ermöglicht eine schnelle Wiederherstellung und einfache Skalierung des Clusters.
Terraform-Konfiguration
Die Bereitstellung erfolgt mithilfe von Terraform. Es ermöglicht die Verwaltung der Infrastruktur als Code, wodurch Änderungen reproduzierbar und effizient umgesetzt werden können.
Hauptkomponenten
-
**main.tf**: Die Hauptkonfigurationsdatei definiert die Ressourcen wie virtuelle Maschinen und Netzwerke. -
**provider.tf**: Konfiguriert den Provider, in diesem Fall MAAS (Metal as a Service). -
**variables.tf**: Beinhaltet anpassbare Parameter, wie die Anzahl der Nodes und API-Keys. -
**cloud_init_k0s.tftpl**: Ein Template für Cloud-init, das den K0s-Cluster auf jedem Node konfiguriert.
Beispiele aus der Konfiguration
Auszug aus variables.tf
variable "worker_instances_count" {
description = "Anzahl der Worker-Nodes"
default = 3
}
variable "controller_instances_count" {
description = "Anzahl der Controller-Nodes"
default = 2
}
Schritte zur Bereitstellung
Weitere Details und die zugehörigen Dateien finden sich im Repository: SEM4-EVENTGALLERY Terraform
-
Initialisieren von Terraform:
terraform init -
Exportieren notwendiger Variablen:
export TF_VAR_url=<MAAS-URL> export TF_VAR_key=<API-KEY-4-MAAS> export TF_VAR_hostname_prefix=<KVM-HOST> -
Planen der Bereitstellung:
terraform plan -
Anwenden der Bereitstellung:
terraform apply -
Löschen der Bereitstellung:
terraform destroy
Cluster-Validierung
Nach der Bereitstellung ist es wichtig, die Funktionalität des Clusters zu prüfen.
Überprüfung der Nodes
Überprüfen, ob alle Nodes korrekt im Cluster registriert sind:
kubectl get nodes
Erwartetes Ergebnis:
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 5m v1.25.0
k8s-worker-1 Ready <none> 5m v1.25.0
k8s-worker-2 Ready <none> 5m v1.25.0
Test der Core-Komponenten
Sicherstellen, dass alle System-Pods laufen:
kubectl get pods -n kube-system
Deployment eines Test-Pods
Ein einfacher Test-Pod wird bereitgestellt, um die Konnektivität zu überprüfen:
kubectl run test-pod --image=nginx
kubectl port-forward pod/test-pod 8080:80
curl localhost:8080
Falls die NGINX-Standardseite geladen wird, ist der Cluster korrekt konfiguriert.