GKE greift auf Ressourcen der Google Compute-Engine (GCE) zurück und ermöglicht es Nutzern, containerbasierte Anwendungen auf Clustern der Google Cloud Platform(GCP) zu betreiben. Auf die Infrastruktur der Google-Cloud sind Nutzer mit der GKE jedoch nicht begrenzt: Das Cluster-Federation-System des Orchestrators Kubernetes ermöglicht es, Ressourcen verschiedener Computer-Cluster zu einer logischen Rechenföderation zusammenzufassen und bei Bedarf Hybrid- und Multi-Cloud-Szenarien zu realisieren.
Jedes Cluster, das mit GKE erstellt wird, besteht aus einem Kubernetes-Master-Endpunkt, auf dem der Kubernetes-API-Server ausgeführt wird, und einer beliebigen Anzahl von Worker-Knoten, die REST-Anfragen des API-Severs bedienen und die für den Support von Docker-Containern benötigten Dienste ausführen.
Während der Master-Knoten die Ressourcenauslastung und den Status des Clusters überwacht, werden die containisierten Anwendungen auf den Worker-Knoten betrieben. Fällt ein Worker-Knoten aus, verteilt der Master die für den Anwendungsbetrieb erforderlichen Aufgaben auf die anderen Knoten um.
Auch GKE unterstützt das weit verbreite Docker-Container-Format. Für die Bereitstellung von Docker-Images steht Anwendern eine private Container-Registry zur Verfügung. Eine JSON-basierte Syntax bietet die Möglichkeit, Container-Dienste als Templates zu definieren.
Die Integration von Kubernetes in GKE bietet Anwendern folgende Funktionen für die Orchestrierung von Container-Anwendungen:
- Automatic Binpacking:Kubernetes platziert Container auf Basis von Einschränkungen und Ressourcenanforderungen automatisch so, dass das Cluster optimal ausgelastet ist. Dies verhindert, dass die Verfügbarkeit von Container-Anwendungen beeinträchtigt wird.
- Health-Checks mit Auto-Repair-Funktion: Durch Automatische Health-Checks stellt Kubernetes sicher, dass alle Konten und Container einwandfrei funktionieren. Knoten oder Container, die nicht reagieren, werden beendet und durch neue ersetzt.
- Horizontale Skalierung: Mit Kubernetes lassen sich Anwendungen beliebig nach oben oder unten skalieren – entweder manuell über die Kommandozeile, über die grafische Benutzeroberfläche oder automatisch auf Basis der CPU-Auslastung.
- Service-Discovery und Load-Balancing: Kubernetes bietet zwei Modi für Service-Discovery: Dienste lassen sich über Umgebungsvariablen und DNS-Records aufspüren. Ein Load-Balancing zwischen verschiedenen Containern wird über IP-Adressen und DNS-Namen realisiert.
- Speicher-Orchestrierung: Kubernetes ermöglicht ein automatisches Mounten diverser Speichersysteme – egal ob es sich um lokalen Speicher, Public-Cloud-Speicher (beispielsweise via GCP oder AWS) oder Netzwerkspeicher-Systeme wie NFS, iSCSI, Gluster, Ceph oder Flocker handelt.
Ähnlich wie ECS in AWS ist GKE direkt in die Google-Cloud-Plattform integriert, sodass Nutzern der Container-Engine neben dem Funktionsspektrum des Orchestrators diverse Features der Public-Cloud zur Verfügung stehen:
- Identity- und Access-Management: Das IAM der GKE wird mithilfe von Google-Accounts realisiert und unterstützt nutzerrollenbasierte Berechtigungen.
- Stackdriver Monitoring: Googles Monitoring-Tool informiert Anwender über die Leistung, Betriebszeit und den Zustand von Cloud-Anwendungen. Dazu sammelt Stackdriver Monitoring-Metriken, Ereignisse und Metadaten und bereitet diese in Form eines übersichtlichen Dashboards auf. Als Datenquelle unterstützt das Tool die Google Cloud Platform, Amazon Web Services und diverse Anwendungen wie Cassandra, Nginx, Apache HTTP Server und Elasticsearch.
- Stackdriver Logging: Googles Logging-Tool ermöglicht Anwendern das Speichern, das Monitoring und die Analyse von Log-Daten und Ereignissen. Stackdriver Logging unterstützt die Google Cloud Platform und Amazon Web Services.
- Container Builder: Mit dem Container Builder stellt Google ein Tool zur Erstellung von Docker-Images zur Verfügung, mit dem sich diese direkt in der Cloud erzeugen lassen. Der Anwendungsquellcode muss dazu lediglich in den Google Cloud Storage geladen werden.
Bei der Preisgestaltung für den CaaS-Dienst geht Google einen anderen Weg als Amazon. Ein Container-Management von Clustern mit bis zu fünf Compute-Engine-Instanzen (Knoten) steht Anwendern kostenlos zur Verfügung. Es fallen lediglich Kosten für die Bereitstellung der Cloud-Ressourcen (CPU, Speicher etc.) an. Möchten Anwender Container auf größeren Clustern (sechs und mehr Instanzen) betreiben, erhebt Google zusätzlich eine Nutzungsgebühr für die Container-Engine: Die Abrechnung erfolgt pro Cluster pauschal auf Stundenbasis.
Die Google Container Engine im Überblick: