In dieser Übung werden Sie eine Datenbank in Kubernetes bereitstellen und verwalten. Die Aufgabe umfasst die folgenden Schritte:
Schritt-für-Schritt-Anleitung:
mysql, postgres).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: mysql2. 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: 1Gi3. Bereitstellen der Konfigurationsdateien
Deployen Sie den Headless Service und das StatefulSet:
kubectl apply -f mysql-headless-service.yaml
kubectl apply -f mysql-statefulset.yaml4. Überprüfen der Bereitstellung
Überprüfen Sie die laufenden Pods und das StatefulSet:
kubectl get statefulsets
kubectl get pods -l app=mysql5. 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 -pGeben 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.