Die Ausführung eines containerisierten Ceph Clusters auf SUSE CaaS Platform ist eine Technology Preview. Nehmen Sie keine Implementierung auf einem Produktions-Kubernetes-Cluster vor.
In diesem Kapitel wird die Implementierung von SUSE Enterprise Storage 6 in containerisierter Form zusätzlich zu SUSE CaaS Platform 4 auf einem Kubernetes-Cluster erläutert.
Vor der Implementierung sind folgende Punkte zu beachten:
SUSE Enterprise Storage 6 führt Ceph in Kubernetes mithilfe des vorgeschalteten Projekts Rook aus (https://rook.io/).
Je nach Konfiguration belegt Rook unter Umständen alle nicht genutzten Datenträger auf allen Knoten in einem Kubernetes-Cluster.
Für die Einrichtung sind privilegierte Container erforderlich.
Vor der Implementierung muss Folgendes vorliegen:
Ein funktionsfähiger Cluster mit SUSE CaaS Platform 4.
Worker-Knoten mit SUSE CaaS Platform 4 und einer Reihe zusätzlicher Datenträger, die als Speicher für den Ceph Cluster angehängt sind.
Der Rook-Orchestrator nutzt Konfigurationsdateien im YAML-Format, sogenannte Manifeste. Die erforderlichen Manifeste befinden sich im RPM-Paket rook-k8s-yaml . Führen Sie die Installation mit folgendem Befehl aus:
root #
zypper install rook-k8s-yaml
Rook-Ceph besteht aus zwei Hauptkomponenten: dem „Operator“, der durch Kubernetes ausgeführt wird und die Erstellung von Ceph Clustern ermöglicht, und dem Ceph „Cluster“ selbst, der vom Operator erstellt und teilweise verwaltet wird.
Mit den Manifesten in dieser Einrichtung werden alle Rook- und Ceph-Komponenten im Namespace „rook-ceph“ installiert. Soll dies geändert werden, passen Sie alle Verweise auf den Namespace in den Kubernetes-Manifesten entsprechend an.
Bearbeiten Sie ggf. die Konfiguration der Pod-Sicherheitsrichtlinie (Pod Security Policy) in common.yaml
und beschränken Sie die Sicherheitsanforderungen von Rook, je nach den zu verwendenden Rook-Funktionen. Beachten Sie die Kommentare in der Manifestdatei.
Mit dem Manifest operator.yaml
wird der Rook-Operator konfiguriert. Änderungen sind in der Regel nicht erforderlich. Weitere Informationen finden Sie in den Kommentaren in der Manifestdatei.
Das Manifest cluster.yaml
ist für die Konfiguration des eigentlichen Ceph Clusters zuständig, der in Kubernetes ausgeführt wird. Eine ausführliche Beschreibung aller verfügbaren Optionen finden Sie in der vorgeschalteten Rook-Dokumentation unter https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html.
Standardmäßig ist Rook für die Nutzung aller Knoten konfiguriert, die nicht mit node-role.kubernetes.io/master:NoSchedule
behaftet sind und die konfigurierten Platzierungseinstellungen befolgen (siehe https://rook.io/docs/rook/v1.0/ceph-cluster-crd.html#placement-configuration-settings). Im folgenden Beispiel wird dieses Verhalten deaktiviert und es werden nur die Knoten herangezogen, die explizit im Abschnitt mit den Knoten angegeben sind:
storage: useAllNodes: false nodes: - name: caasp4-worker-0 - name: caasp4-worker-1 - name: caasp4-worker-2
Standardmäßig ist Rook für die Nutzung aller freien und leeren Datenträger auf allen Knoten als Ceph-Speicher konfiguriert.
In der vorgeschalteten Rook-Ceph-Dokumentation unter https://rook.github.io/docs/rook/v1.3/ceph-storage.html finden Sie ausführliche Informationen zur Konfiguration erweiterter Implementierungen. Hier finden Sie Erläuterungen zu den Grundlagen von Rook-Ceph, bevor Sie sich mit erweiterten Konfigurationen beschäftigen.
Weitere Informationen zu SUSE CaaS Platform finden Sie unter https://www.suse.com/documentation/suse-caasp.
Installieren Sie die gängigen Rook-Ceph-Komponenten, die CSI-Rollen und den Rook-Ceph-Operator. Führen Sie hierzu folgendes Kommando auf dem SUSE CaaS Platform Master Node aus:
root #
kubectl apply -f common.yaml -f operator.yaml
Mit common.yaml
werden der Namespace „rook-ceph“, die Ceph CRDs (Custom Resource Definition) (siehe https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/), mit denen Kubernetes die Ceph-Objekte erkennt (z. B. „CephCluster“), sowie die RBAC-Rollen und die Pod-Sicherheitsrichtlinien erstellt (siehe https://kubernetes.io/docs/concepts/policy/pod-security-policy/), sodass Rook in der Lage ist, die clusterspezifischen Ressourcen zu verwalten.
hostNetwork
und hostPorts
Wenn hostNetwork: true
in der Cluster-Ressourcendefinition angegeben ist, muss die Nutzung von hostNetwork
zugelassen werden. Außerdem muss die Nutzung von hostPorts
in PodSecurityPolicy
zugelassen werden.
Prüfen Sie die Installation. Führen Sie hierzu kubectl get pods -n rook-ceph
auf dem SUSE CaaS Platform Master Node aus, beispielsweise:
root #
kubectl get pods -n rook-ceph
NAME READY STATUS RESTARTS AGE
rook-ceph-agent-57c9j 1/1 Running 0 22h
rook-ceph-agent-b9j4x 1/1 Running 0 22h
rook-ceph-operator-cf6fb96-lhbj7 1/1 Running 0 22h
rook-discover-mb8gv 1/1 Running 0 22h
rook-discover-tztz4 1/1 Running 0 22h
Sobald Sie cluster.yaml
gemäß Ihren Anforderungen angepasst haben, können Sie den Ceph Cluster erstellen. Führen Sie folgendes Kommando auf dem SUSE CaaS Platform Master Node aus:
root #
kubectl apply -f cluster.yaml
Beobachten Sie den Namespace „rook-ceph“, in dem der Ceph Cluster erstellt wird. Sie werden so viele Ceph Monitors sehen, wie im Manifest cluster.yaml
konfiguriert (standardmäßig 3), außerdem einen Ceph Manager und so viele Ceph OSDs, wie freie Datenträger vorhanden sind.
Beim Bootstrapping des Ceph Clusters werden einige Pods mit dem Namen rook-ceph-osd-prepare-NODE-NAME
eine Zeit lang ausgeführt und dann mit dem Status „Completed“ beendet. Wie der Name schon besagt, implementieren diese Pods die Ceph OSDs. Sie werden nicht gelöscht, sodass Sie ihre Protokolle nach dem Beenden einsehen können. Beispiel:
root #
kubectl get pods --namespace rook-ceph
NAME READY STATUS RESTARTS AGE
rook-ceph-agent-57c9j 1/1 Running 0 22h
rook-ceph-agent-b9j4x 1/1 Running 0 22h
rook-ceph-mgr-a-6d48564b84-k7dft 1/1 Running 0 22h
rook-ceph-mon-a-cc44b479-5qvdb 1/1 Running 0 22h
rook-ceph-mon-b-6c6565ff48-gm9wz 1/1 Running 0 22h
rook-ceph-operator-cf6fb96-lhbj7 1/1 Running 0 22h
rook-ceph-osd-0-57bf997cbd-4wspg 1/1 Running 0 22h
rook-ceph-osd-1-54cf468bf8-z8jhp 1/1 Running 0 22h
rook-ceph-osd-prepare-caasp4-worker-0-f2tmw 0/2 Completed 0 9m35s
rook-ceph-osd-prepare-caasp4-worker-1-qsfhz 0/2 Completed 0 9m33s
rook-ceph-tools-76c7d559b6-64rkw 1/1 Running 0 22h
rook-discover-mb8gv 1/1 Running 0 22h
rook-discover-tztz4 1/1 Running 0 22h
Mit Rook können Sie drei verschiedene Speicherarten nutzen:
Der Objektspeicher stellt eine S3-API für den Speicher-Cluster bereit, mit der die Anwendungen Daten schreiben und abrufen können. Eine ausführliche Beschreibung finden Sie in https://rook.io/docs/rook/v1.0/ceph-object.html.
Ein gemeinsames Dateisystem kann mit Lese-/Schreibberechtigungen von mehreren Pods eingehängt werden. Dies ist für Anwendungen nützlich, die mithilfe eines gemeinsamen Dateisystems zu einem Cluster zusammengefasst sind. Eine ausführliche Beschreibung finden Sie in https://rook.io/docs/rook/v1.0/ceph-filesystem.html.
Mithilfe des Blockspeichers können Sie Speicher für einen einzelnen Pod einhängen. Eine ausführliche Beschreibung finden Sie in https://rook.io/docs/rook/v1.0/ceph-block.html.
So deinstallieren Sie Rook:
Löschen Sie alle Kubernetes-Anwendungen, die Rook-Speicher belegen.
Löschen Sie alle erstellten Objekt-, Datei- und/oder Blockspeicherartefakte gemäß den Anweisungen in Abschnitt 13.5, „Rook als Speicher für Kubernetes-Workload“.
Löschen Sie den Ceph Cluster, den Operator und die zugehörigen Ressourcen:
root #
kubectl delete -f cluster.yamlroot #
kubectl delete -f operator.yamlroot #
kubectl delete -f common.yaml
Löschen Sie die Daten auf Hosts:
root #
rm -rf /var/lib/rook
Löschen Sie ggf. die von Rook verwendeten Datenträger. Weitere Informationen finden Sie in https://rook.io/docs/rook/v1.3/ceph-teardown.html.