Die Kon­fi­gu­ra­ti­on von Ku­ber­netes Pods erfolgt imperativ, de­kla­ra­tiv oder mithilfe von API-Schnitt­stel­len. Dabei können Sie auch zu­sätz­li­che Res­sour­cen für die ent­hal­te­nen Container angeben und anpassen.

Ku­ber­netes Pod erstellen – das sind die Vor­aus­set­zun­gen

Um einen Ku­ber­netes Pod aus­zu­füh­ren, benötigen Sie ein laufendes Ku­ber­netes-Cluster, entweder lokal auf einem Ent­wick­lungs­sys­tem, in einer Cloud- oder On-Premises-Umgebung. Für die In­stal­la­ti­on empfehlen wir Ihnen hierzu das Ku­ber­netes-Tutorial. Zudem sollte das kubectl-Be­fehls­zei­len­tool auf dem Rechner vorhanden und ein­ge­rich­tet sein, um die In­ter­ak­ti­on mit dem Ku­ber­netes-Cluster zu er­mög­li­chen. Über­prü­fen Sie ebenfalls, ob die ku­be­con­fig-Datei korrekt kon­fi­gu­riert ist, um eine er­folg­rei­che Ver­bin­dung zum Cluster her­zu­stel­len.

Tipp

Managed Ku­ber­netes von IONOS ge­währ­leis­tet die Hoch­ver­füg­bar­keit Ihrer K8s-De­ploy­ments und optimiert gleich­zei­tig die Kosten. Die In­te­gra­ti­on in das IONOS Cloud-Ökosystem bietet zudem einen fort­schritt­li­chen, voll­stän­dig in­te­grier­ten per­sis­ten­ten Da­ten­spei­cher.

Schritt-für-Schritt-Anleitung: Ku­ber­netes Pod erstellen

Es gibt in Ku­ber­netes drei Mög­lich­kei­ten, Pods zu erstellen:

  1. Im­pe­ra­ti­ve Kon­fi­gu­ra­ti­on
  2. De­kla­ra­ti­ve Kon­fi­gu­ra­ti­on
  3. API-Schnitt­stel­le verwenden

Im­pe­ra­ti­ve Kon­fi­gu­ra­ti­on

Beim im­pe­ra­ti­ven Weg geben Sie dem System explizite An­wei­sun­gen über die kubectl-Be­fehls­zei­le, wie es einen Ku­ber­netes Pod erstellen soll, ohne vorher eine de­tail­lier­te Kon­fi­gu­ra­ti­ons­da­tei vor­be­rei­tet zu haben.

kubectl run nginx --image=nginx --restart=Never
shell

Dieser Befehl erstellt einen einzelnen Pod mit dem Namen nginx, der den Nginx-Webserver enthält.

Da der im­pe­ra­ti­ve Weg Än­de­run­gen direkt vornimmt, ohne dass eine klare De­fi­ni­ti­on des be­ab­sich­tig­ten Zustands vorhanden ist, wird im All­ge­mei­nen der de­kla­ra­ti­ve Ansatz empfohlen.

De­kla­ra­ti­ve Kon­fi­gu­ra­ti­on

Der de­kla­ra­ti­ve Ansatz in Ku­ber­netes erfordert die De­fi­ni­ti­on des ge­wünsch­ten Zustands der Res­sour­cen mithilfe von YAML-Kon­fi­gu­ra­ti­ons­da­tei­en.

Öffnen Sie einen Text­edi­tor und erstellen Sie eine YAML-Datei, zum Beispiel nginx-pod.yaml, die den ge­wünsch­ten Zustand des Nginx-Pods be­schreibt.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    selector:
        matchLabels:
            app: nginx
    minReadySeconds: 5
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx-container
                image: nginx:latest
                ports:
                - containerPort: 80
yaml

Verwenden Sie den Befehl kubectl apply, um den Ku­ber­netes Pod basierend auf der de­kla­ra­ti­ven Kon­fi­gu­ra­ti­on zu ak­ti­vie­ren.

kubectl apply -f nginx-pod.yaml
shell

Die de­kla­ra­ti­ven Kon­fi­gu­ra­tio­nen, die Sie in den YAML-Dateien angeben, sind eine konkrete Auf­zeich­nung des be­ab­sich­tig­ten Zustands, ein­schließ­lich der Version des zu er­stel­len­den Pods. Dies führt zur trans­pa­ren­ten Ver­wal­tung und Über­wa­chung von Res­sour­cen in Ihrem Ku­ber­netes-Cluster.

API-Schnitt­stel­le verwenden

Ku­ber­netes bietet eine RESTful-API, über die Sie mit dem Ku­ber­netes-Cluster in­ter­agie­ren können. Bevor Sie die API verwenden, müssen Sie sich au­then­ti­fi­zie­ren und au­to­ri­sie­ren. Dies erfolgt nor­ma­ler­wei­se durch Be­reit­stel­lung von Zu­griffsto­ken oder Zer­ti­fi­ka­ten, je nach Kon­fi­gu­ra­ti­on des Ku­ber­netes-Clusters.

Hier ist ein Beispiel, wie Sie mit der REST-API eine JSON-Datei für einen Nginx-Pod erstellen.

cat > nginx-pod.json <<EOF
{
    "apiVersion": "apps/v1",
    "kind": "Deployment",
    "metadata": {
        "name": "nginx-deployment"
    },
    "spec": {
        "selector": {
            "matchLabels": {
                "app": "nginx"
            }
        },
        "minReadySeconds": 5,
        "template": {
            "metadata": {
                "labels": {
                    "app": "nginx"
                }
            },
            "spec": {
                "containers": [
                    {
                        "name": "nginx-container",
                        "image": "nginx:latest",
                        "ports": [
                            {
                                "containerPort": 80
                            }
                        ]
                    }
                ]
            }
        }
    }
}
EOF
shell

Zum Ak­ti­vie­ren des Ku­ber­netes Pods nutzen Sie curl, um mit der REST-API des Ku­ber­netes-Clusters zu kom­mu­ni­zie­ren:

curl -k -v -X POST -H "Authorization: Bearer <JWT_TOKEN>" -H "Content-Type: application/json" https://cluster-ip:6443/api/v1/namespaces/default/pods -d@nginx-pod.json
shell

Dieser curl-Befehl sendet eine HTTPS-POST-Anfrage an einen Ku­ber­netes-Cluster-Endpunkt. Die Optionen -k und -v stehen für das Igno­rie­ren der SSL-Zer­ti­fi­kat­über­prü­fung und den Verbose-Modus. Mit -X POST wird eine POST-Anfrage definiert. Der Header Aut­ho­riza­ti­on enthält ein Bearer-Token (ersetzen Sie <JWT_TOKEN> durch das tat­säch­li­che Token), und Content-Type gibt den Da­ten­for­mat­typ als JSON an. Die Option -d@nginx-pod.json sendet die Daten an den Server.

Pods ansehen

Um den aktuellen Status aller Pods im Namespace zu über­prü­fen, geben Sie folgenden Befehl ein:

kubectl get pods
shell

Das Ergebnis ist eine Liste der vor­han­de­nen Pods und ihrem Status, Start­zeit­punkt und weiteren Details.

De­tail­lier­te­re In­for­ma­tio­nen erhalten Sie mit:

kubectl describe pod my-pod
shell

Dieser Befehl gibt aus­führ­li­che Angaben über den Pod zurück, ein­schließ­lich der Kon­fi­gu­ra­ti­on, Er­eig­nis­se und Zu­stands­über­gän­ge.

So zeigen Sie die Pro­to­kol­le des Haupt­con­tai­ners im Ku­ber­netes Pod an:

kubectl logs my-pod
shell

Bei mehreren Con­tai­nern können Sie den Container mit der Option -c kenn­zeich­nen.

Einen Pod löschen

Das Löschen von Pods ist un­kom­pli­ziert und kann mit einem einfachen Befehl aus­ge­führt werden.

kubectl delete pod nginx
shell

Dadurch wird der aus­ge­wähl­te Ku­ber­netes Pod gestoppt, und der zu­ge­hö­ri­ge Container wird her­un­ter­ge­fah­ren. Im Beispiel haben wir den Nginx-Pod er­folg­reich aus dem Cluster entfernt.

Managed Ku­ber­netes
Ku­ber­netes als Managed Service von IONOS Cloud

Die ideale Plattform für per­for­man­te und hoch­ska­lier­ba­re Container-An­wen­dun­gen. Umfassend ins IONOS Cloud Ökosystem in­te­griert und rund um die Uhr pro­fes­sio­nell betreut.

Zum Hauptmenü