Ein Image mit kubectl deployen
Diese Anleitung betreibt ein Container-Image auf Kubernetes als Deployment und macht es mit einem
Service innerhalb des Clusters erreichbar. Das ist der einfache Weg, nur mit kubectl, und er
funktioniert auf jedem konformen Cluster, auch auf einem PaaSbox-Cluster.
Willst du eine App mit ihrer Datenbank auf einem PaaSbox-Cluster betreiben, über HTTPS erreichbar, folge stattdessen Schritt 2 des Lernpfads, Deine erste App deployen.
Was du brauchst
Abschnitt betitelt „Was du brauchst“- Einen Cluster und eine Kubeconfig, die Objekte anlegen darf. Auf einem PaaSbox-Cluster holst du dir eine admin-Kubeconfig auf dem Reiter Access des Clusters (Eine Kubeconfig holen): Eine view-Kubeconfig ist nur lesend.
kubectlauf deinem Rechner.
1. kubectl auf deinen Cluster richten
Abschnitt betitelt „1. kubectl auf deinen Cluster richten“export KUBECONFIG=~/Downloads/my-cluster-admin.kubeconfigkubectl get nodesDer Node oder die Nodes stehen als Ready in der Liste. Ein PaaSbox-Cluster hat einen.
2. Einen Namespace anlegen
Abschnitt betitelt „2. Einen Namespace anlegen“Halte die Objekte deiner App in einem eigenen Namespace zusammen:
kubectl create namespace demo3. Das Image deployen
Abschnitt betitelt „3. Das Image deployen“Ein Deployment startet und überwacht deinen Container und ersetzt Pods, die abstürzen oder neu
eingeplant werden. Speichere das Folgende als deployment.yaml:
apiVersion: apps/v1kind: Deploymentmetadata: name: web namespace: demospec: replicas: 2 selector: matchLabels: { app: web } template: metadata: labels: { app: web } spec: containers: - name: web image: nginxdemos/hello:plain-text ports: - containerPort: 80 resources: requests: { cpu: 50m, memory: 64Mi } limits: { cpu: 250m, memory: 128Mi }Wende es an und sieh zu, wie die Pods hochkommen:
kubectl apply -f deployment.yamlkubectl -n demo get pods -wSetze immer Resource-Requests. Sie sagen dem Scheduler, wie viel CPU und Speicher deine Pods brauchen, damit er sie nur dort einplant, wo sie hinpassen. Auf einem Cluster mit einem Node zählen die Requests von allem, was du betreibst, gegen den Speicher eines einzigen Servers.
4. Mit einem Service erreichbar machen
Abschnitt betitelt „4. Mit einem Service erreichbar machen“Ein Service gibt deinen Pods eine stabile Adresse innerhalb des Clusters, mit Lastverteilung über
die Replicas. Speichere das Folgende als service.yaml:
apiVersion: v1kind: Servicemetadata: name: web namespace: demospec: selector: { app: web } ports: - port: 80 targetPort: 80kubectl apply -f service.yaml5. Ausprobieren
Abschnitt betitelt „5. Ausprobieren“Leite den Service auf deinen Rechner weiter und ruf ihn auf:
kubectl -n demo port-forward service/web 8080:80# in another terminal:curl localhost:8080Die App antwortet mit ihrem Hostnamen und ihrer Adresse. Beende das Port-Forward mit Strg-C.
Nächste Schritte
Abschnitt betitelt „Nächste Schritte“- Stell sie über HTTPS ins Internet: Eine App mit Ingress und TLS veröffentlichen. Die Anleitung baut auf der App auf, die du gerade deployt hast.
- Betreibe mehr Kopien und lass Kubernetes sie skalieren: Workloads skalieren und autoskalieren.
Aufräumen
Abschnitt betitelt „Aufräumen“kubectl delete namespace demo