Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
Bezieht sich auf SUSE Enterprise Storage 6

13 SUSE Enterprise Storage 6 zusätzlich zu SUSE CaaS Platform 4 auf einem Kubernetes-Cluster Edit source

Warnung
Warnung: Technology Preview

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.

13.1 Vorüberlegungen Edit source

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.

13.2 Voraussetzungen Edit source

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.

13.3 Abrufen der Rook-Manifeste Edit source

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

13.4 Installation Edit source

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.

13.4.1 Konfiguration Edit source

13.4.1.1 Globale Konfiguration Edit source

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.

13.4.1.2 Operatorkonfiguration Edit source

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.

13.4.1.3 Ceph Cluster-Konfiguration Edit source

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
Anmerkung
Anmerkung

Standardmäßig ist Rook für die Nutzung aller freien und leeren Datenträger auf allen Knoten als Ceph-Speicher konfiguriert.

13.4.1.4 Dokumentation Edit source

13.4.2 Erstellen des Rook-Operators Edit source

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.

Tipp
Tipp: Verwendung von 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

13.4.3 Erstellen des Ceph Clusters Edit source

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.

Tipp
Tipp: Temporäre OSD-Pods

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

13.5 Rook als Speicher für Kubernetes-Workload Edit source

Mit Rook können Sie drei verschiedene Speicherarten nutzen:

Objektspeicher

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.

Gemeinsames Dateisystem

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.

Blockspeicher

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.

13.6 Deinstallation von Rook Edit source

So deinstallieren Sie Rook:

  1. Löschen Sie alle Kubernetes-Anwendungen, die Rook-Speicher belegen.

  2. Löschen Sie alle erstellten Objekt-, Datei- und/oder Blockspeicherartefakte gemäß den Anweisungen in Abschnitt 13.5, „Rook als Speicher für Kubernetes-Workload“.

  3. Löschen Sie den Ceph Cluster, den Operator und die zugehörigen Ressourcen:

    root # kubectl delete -f cluster.yaml
    root # kubectl delete -f operator.yaml
    root # kubectl delete -f common.yaml
  4. Löschen Sie die Daten auf Hosts:

    root # rm -rf /var/lib/rook
  5. Löschen Sie ggf. die von Rook verwendeten Datenträger. Weitere Informationen finden Sie in https://rook.io/docs/rook/master/ceph-teardown.html.