45 Übung4 4: Databases on Kubernetes

45.1 Aufgabenbeschreibung

In dieser Übung werden Sie eine Datenbank in Kubernetes bereitstellen und verwalten. Die Aufgabe umfasst die folgenden Schritte:

  1. Erstellen Sie ein StatefulSet für die Datenbank.
  2. Erstellen Sie einen Headless Service zur Unterstützung des StatefulSets.
  3. Konfigurieren Sie persistente Volumes für die Datenbank.
  4. Stellen Sie sicher, dass die Datenbank ordnungsgemäß startet und zugänglich ist.

Schritt-für-Schritt-Anleitung:

  1. Erstellen Sie die Konfigurationsdateien für den Headless Service und das StatefulSet.
  2. Erstellen Sie persistente Volumes und Volume Claims.
  3. Starten Sie die Datenbank und überprüfen Sie deren Status.
  4. Verbinden Sie sich mit der Datenbank, um die erfolgreiche Bereitstellung zu verifizieren.

45.2 Hinweise

45.3 Musterlösung

1. Erstellen eines Headless Service

Erstellen Sie eine Datei mysql-headless-service.yaml mit folgendem Inhalt:

apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: default
spec:
  ports:
  - port: 3306
    name: mysql
  clusterIP: None
  selector:
    app: mysql

2. Erstellen eines StatefulSets für die Datenbank

Erstellen Sie eine Datei mysql-statefulset.yaml mit folgendem Inhalt:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
  namespace: default
spec:
  serviceName: "mysql"
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        ports:
        - containerPort: 3306
          name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "mypassword"
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: mysql-persistent-storage
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

3. Bereitstellen der Konfigurationsdateien

Deployen Sie den Headless Service und das StatefulSet:

kubectl apply -f mysql-headless-service.yaml
kubectl apply -f mysql-statefulset.yaml

4. Überprüfen der Bereitstellung

Überprüfen Sie die laufenden Pods und das StatefulSet:

kubectl get statefulsets
kubectl get pods -l app=mysql

5. Verbindung zur Datenbank herstellen

Starten Sie einen temporären Pod, um sich mit der MySQL-Datenbank zu verbinden und deren Funktionalität zu überprüfen:

kubectl run -it --rm --image=mysql:5.7 --restart=Never mysql-client -- mysql -h mysql-0.mysql.default.svc.cluster.local -p

Geben Sie das Passwort ein (mypassword) und überprüfen Sie die Datenbank:

SHOW DATABASES;

Diese Übung demonstriert die grundlegende Bereitstellung und Verwaltung einer stateful Anwendung, in diesem Fall einer MySQL-Datenbank, in Kubernetes. Durch die Verwendung von StatefulSets und persistenten Volumes können Sie sicherstellen, dass Ihre Datenbankdaten dauerhaft und stabil bleiben, auch wenn Pods neu gestartet oder verschoben werden. Ein tiefes Verständnis dieser Konzepte ist entscheidend für den erfolgreichen Betrieb von stateful Anwendungen in einem Kubernetes-Cluster.