Minikube: Cloud Computing Grundbegriffe
Die grundlegenden Begriffe in einer Kubernetes Cloud sind folgende:
- 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.
- Container: Das Ergebnis, wenn ein Dockerfile mit
docker build
oderdocker-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:
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.
-
ein k, acht andere Buchstaben und ein s … kubernetes ↩