Microservice- und App-Bereitstellung mit K8s, Teil 1

Pods und Container in Kubernetes

| Autor / Redakteur: Thomas Joos / Stephan Augsten

In der Google-Cloud-Plattform lassen sich Kubernetes und die dazu gehörigen Container testen.
In der Google-Cloud-Plattform lassen sich Kubernetes und die dazu gehörigen Container testen. (Bild: Joos / Kubernetes)

Um Apps oder Microservices auf Basis von Container in Kubernetes – kurz K8s – zur Verfügung zu stellen, müssen sich Entwickler mit der Infrastruktur auseinandersetzen. Dieser Artikel beleuchtet einige Grundlagen zu Kubernetes und die Integration in die Google Cloud Platform.

Um Pods und Container mit Kubernetes zu testen, bietet es sich zum Beispiel an, die Google Kubernetes Engine zu verwenden. Hier kann in der Google Cloud Shell bereits in wenigen Minuten ein Container erstellt werden. Die Konfiguration erfolgt über die Konsole der Google Cloud Platform. Dazu wird zuerst auf der Kubernetes-Engine-Oberfläche ein neues Projekt erstellt.

Die übergeordnete Einheit von Kubernetes ist ein Kubernetes-Cluster. Dieser Verbund besteht aus mehreren Container-Hosts, also Cluster-Knoten (Nodes). Auf den Nodes werden die einzelnen Pods positioniert. In diesen sind die Container enthalten.

Die Container stellen wiederum die Dienste zur Verfügung, die im Netzwerk durch die Anwender verwendet werden. Pods und die Container werden normalerweise über YAML-Dateien definiert. Ein Beispiel für eine solche Datei sieht folgendermaßen aus:

apiVersion: v1
kind: Pod
metadata:
   name: cpu-demo
spec:
   containers:
   - name: cpu-demo-ctr
      image: vish/stress
      resources:
         limits:
            cpu: "1"
         requests:
            cpu: "0.5"
      args:
      - -cpus
      - "2"

Google Cloud Shell und SDK verwenden

Mit der Google Cloud Shell lassen sich ohne Installation Kubernetes-Cluster und -Container erstellen.
Mit der Google Cloud Shell lassen sich ohne Installation Kubernetes-Cluster und -Container erstellen. (Bild: Joos / Kubernetes)

Um mit Kubernetes in der Google Cloud Platform zu arbeiten, wird das Google Cloud SDK (Software Development Kit) benötigt. Dieses enthält das Tool „gcloud“. Mit diesem Befehlszeilen-Werkzeug lassen sich Kubernetes-Cluster erstellen und löschen.

Mit dem „kubectl“-Aufruf werden Kubernetes-Cluster verwaltet.
Mit dem „kubectl“-Aufruf werden Kubernetes-Cluster verwaltet. (Bild: Joos / Kubernetes)

Die generelle Verwaltung der Container und Pods erfolgt anschließend mit „kubectl“. Dieses Tool steht auch in allen anderen Kubernetes-Installationen zur Verfügung. Kubectl kann ebenfalls über „gcloud“ installiert werden.

Dazu wird der Befehl

gcloud components install kubectl

verwendet. Wird stattdessen die Google Cloud Shell genutzt, die über die Google Cloud Platform Console gestartet wird, können gcloud und kubectl sofort, d.h. ohne vorherige Installation genutzt werden.

Kubernetes-Cluster erstellen

Ein Kubernetes-Cluster kann auf verschiedenen Wegen installiert werden. Wird die Google Cloud Platform genutzt, ist ein Cluster mit „gcloud“ schnell und einfach erstellt, auch in der Google Cloud Shell. Am Beispiel der Google Cloud Platform gilt es, zunächst die Zone festzulegen, in welcher der Cluster erstellt werden soll.

Die verschiedenen Zonen sind in der Dokumentation der Google Cloud Platform zu finden. Der Befehl dazu ist recht einfach, wenn der Cluster in der Zone „Frankfurt“ erstellt werden soll:

gcloud config set compute/zone europe-west3

Außerdem muss auch die ID des Projektes angegeben werden, über das der Container zur Verfügung gestellt wird:

gcloud config set project <Projekt-ID>

Danach kann der Cluster erstellt werden:

gcloud container clusters create example-cluster

Sobald der Cluster zur Verfügung steht, kann bereits ein Container ausgeführt werden. Dazu wird wiederum „kubectl“ verwendet:

kubectl run hello-web --image=gcr.io/google-samples/hello-app:1.0 --port=8080

Sobald der Container zur Verfügung steht, kann dessen öffentliche IP-Adresse abgefragt werden:

kubectl get service hello-web

Der Aufruf eines Containers erfolgt zum Beispiel über die Adresse „http://<Externe IP-Adresse>:8080“. Cluster lassen sich auch lokal mit Minikube erstellen. Weitere Informationen hierzu finden sich im „Getting Started Guide“ zu Minikube. Auch Microsoft bietet die Möglichkeit, schnell und einfach einen Kubernetes-Cluster in Azure zu erstellen.

Container und Cluster löschen

Werden Container und Cluster nicht mehr benötigt, lassen sich beide in der Google Cloud Shell löschen:

kubectl delete service hello-web

gcloud container clusters delete example-cluster

Konfigurationsdateien herunterladen

Die Kubernetes-Entwickler stellen auf GitHub verschiedene Beispiele zur Verfügung, mit denen die einzelnen Funktionen von Kubernetes getestet werden können. Auch hier bietet sich die Google Cloud Platform an.

Die verschiedenen Konfigurationsdateien der Kubernetes-Beispiele werden als YAML-Datei zur Verfügung gestellt. Hier gibt es zahlreiche Beispiele, auch auf Basis von PHP. Um zum Beispiel ein Gästebuch mit PHP zur Verfügung zu stellen, gibt es in der Hilfe der Google Cloud Plattform eine entsprechende Anleitung.

Docker-Container mit Kubernetes verwalten

Beim Einsatz von Docker ist es ebenfalls möglich, die Container mit Kubernetes zu verwalten. So bietet Red Hat ein Container-Betriebssystem, das Kubernetes nutzt und Docker unterstützt, fertige Container-Images finden sich im von Red Hat gesponsorten Projekt Atomic. Die Container selbst werden auf Basis von Docker erstellt. Ist auf dem entsprechenden Atomic-Host auch Kubernetes verfügbar, lassen sich die entsprechend erstellten Container als Kubernetes-Pod anzeigen:

kubectl get pods

Atomic-Hosts können auf Basis von CentOS oder Fedora heruntergeladen werden. Am besten eignet sich hier die Installation auf einem virtuellen Server. Die entsprechenden Anleitungen sind auf der Seite des http://www.projectatomic.io/docs/quickstart Atomic-Projektes zu sehen.

Mit Kompose von Docker zu Kubernetes Container migrieren

Durchaus denkbar ist, dass bereits fertige Instanzen wie zum Beispiel Docker-Compose-Container vorliegen. Diese können mit „Kompose“, einem Tool der Kubernetes-Entwickler, zu Kubernetes migriert werden. Kompose kann Docker-Compose ab Version 3 zu Kubernetes-kompatiblen Formaten umwandeln.

Welche Möglichkeiten hier zur Verfügung stehen, ist auf der Kompose-Webseite genauer aufgeschlüsselt. Auch Docker-Push wird in der aktuellen Version bereits unterstützt, genauso wie Docker-Build. Wenn die Images in das gewünschte Repository geladen wurden, stehen diese für Kubernetes zur Verfügung.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45053521 / Cloud-Umgebungen & PaaS)