Die grundlegenden Begriffe in einer Kubernetes Cloud sind folgende: κυβερνήτης ... Steuermann

  • Controller: Etwas, das den Ist- Zustand mit dem Soll-Zustand vergleicht und den Ist-Zustand ändert, bis er dem Soll-Zustand entspricht.
  • ReplicaSet: versucht immer eine stabile Menge von Pods am Laufen zu halten.
  • Node: ein Computer
  • Pod: Ein Gruppe von einem oder mehreren Containern mit gemeinsamem Speicher und Netzwerk-Resourcen und einer Spezifikation, wie diese Container laufen sollen.
  • Deployment: stellt deklarative Updates für Pods und Replicasets zur Verfügung. Der Deployment Controller ändert den Status der Deployments, so dass dieser dem vorgegebenen Zustand des Deployments entspricht.
  • Service: Ein abstrakter weg um eine Applikation, die auf einer Menge von Pods läuft, nach außen verfügbar zu machen.
  • Ingress: ein Controller, der ständig nachsieht, ob es aktuell neue Services gibt, die - falls ja - auf einem öffentlichen Port in das Internet freigegeben werden. Kubernetes Cluster
  • Container: Das Ergebnis, wenn ein Dockerfile mit docker build oder docker-compose up --build gebaut wird.

Zunächst installieren, starten und konifgurieren wir minikube.

minikube start
minikube addons list
minikube addons enable ingress
minikube addons enable dashboard

Jetzt speichern wir die folgenden Dateien in unserem k8s1 Ordner.

meow-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: meow
spec:
  replicas: 2
  selector:
    matchLabels:
      app: meow
  template:
    metadata:
      labels:
        app: meow
    spec:
      containers:
      - name: meow
        image: gcr.io/kubernetes-e2e-test-images/echoserver:2.1
        ports:
        - containerPort: 8080

meow-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: meow-svc
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: meow

ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: meow-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /meow
        pathType: Prefix
        backend:
          service:
            name: meow-svc
            port:
              number: 80

Anschließend spielen wir das auf unserem minikube ein:

kubectl apply -f meow-deployment.yaml 
kubectl apply -f meow-service.yaml
kubectl apply -f ingress.yaml
minikube dashboard

Danach starten wir kubectl um uns das meow-service auf einen Port auf unserem Rechner zu forwarden:

kubectl port-forward service/meow-svc 4000:80

Damit haben wir in unserem Minikube folgende Situation:

Ingress Controller

Die URL, die wir im Browser aufrufen ist folgende: http://localhost:4000

Jetzt sehen wir, dass wir einen von außen erreichbaren Dienst haben.

Ein etwas umfangreicheres Beispiel mit einem Applikations-Server finden Sie hier.

Wenn unsere Projekte so vorbereitet sind, dass sie in dieser Art problemlos auf minikube laufen, können wir diese in unsere eigene Cloud einspielen. Wie wir uns aus ein paar normalen Servern aus purem Metall eine echte eigene Cloud bauen, sehen wir in einem der nächsten Beiträge.


  1. ein k, acht andere Buchstaben und ein skubernetes