Immer größere Datenmengen bei gleichzeitig steigenden Anforderungen an die Sicherheit sowie Zugriffsmöglichkeiten stellen Administratoren vor neue ... (mehr)

Debugging

Wer einen näheren Blick auf die Innereien des Ceph-Clusters werfen möchte, muss sich auf den jeweiligen Nodes einloggen. Um beispielsweise herauszufinden, auf welchem Node ein Pod läuft, verwenden Sie den folgenden Aufruf:

$ kubectl describe pod/rook-ceph-osd-29r2z -n rook | grep Node:
Node: ip-172-20-62-247.ec2.internal/172.20.62.247

Die Rook-Entwickler vereinfachen diesen Vorgang, indem Sie ein vorkonfiguriertes Image und eine zugehörige Deployment-Datei anbieten, die einen Zugang zum Cluster bieten. Starten Sie den Pod, dann bekommen Sie mit »kubectl« eine Shell:

$ kubectl create -f rook-tools.yaml
$ kubectl exec -it rook-tools -n rook -- /bin/bash

Auf dem Pod sind die Umgebungsvariablen definiert, die auch jeder andere Pod verwendet, um die Komponenten des Ceph-Clusters zu finden (Listing 6).

Listing 6: Umgebungsvariablen im Cluster



$ kubectl -n rook describe pod rook-ceph-mgr0-b56496d6c-zxtw6
....
    Environment:
       ROOK_MGR_NAME:                 rook-ceph-mgr0
       ROOK_MGR_KEYRING:            <set to the key 'keyring' in secret 'rook-ceph-mgr0'>                              Optional: false
       ROOK_PRIVATE_IPV4:             (v1:status.podIP)
       ROOK_PUBLIC_IPV4:               (v1:status.podIP)
       ROOK_CLUSTER_NAME:         rook
       ROOK_MON_ENDPOINTS:       <set to the key 'data' of config map 'rook-ceph-mon-endpoints'>           Optional: false
       ROOK_MON_SECRET:              <set to the key 'mon-secret' in secret 'rook-ceph-mon'>                          Optional: false
       ROOK_ADMIN_SECRET:          <set to the key 'admin-secret' in secret 'rook-ceph-mon'>                       Optional: false

Hier stehen die Commandline-Tools von Ceph zur Verfügung, um den laufenden Cluster zu untersuchen, etwa mit »ceph status« , »ceph osd status« und »ceph osd tree« .

Fazit

Rook ist mit der Absicht angetreten, den Storage für containerbasierte Anwendungen in den Kubernetes-Cluster zu verlagern, statt direkt die darunterliegenden Cloud-spezifischen Dienste zu nutzen. Komplett abstrakt und transparent ist Rook aber nicht, denn auch der von Rook verwaltete Storage muss bereitgestellt werden, und zwar meistens von der darunterliegenden Cloud. Abgesehen davon ist Rook aber ein Schritt in die richtige Richtung.

Der zweite Punkt, den man beim Einsatz von Rook bedenken sollte, ist, dass man unversehens zum Administrator eines Ceph-Clusters wird, dessen Betrieb nicht unbedingt trivial ist. Bis Rook den Betrieb von Ceph vollständig automatisiert und auch auftretende Fehler kompensieren kann, werden noch ein paar Versionen ins Land gehen. Grundsätzlich ist es nicht zu unterschätzen, welche Komplexität es bedeutet, ein verteiltes Dateisystem wie Ceph auf einer Orchestrierungssoftware wie Kubernetes in der Cloud zu betreiben. Auch gibt es viele Ceph-Features, die bei einer Rook-Installation (noch) nicht zur Verfügung stehen, zum Beispiel Volume Snapshots. Die Roadmap im Git-Repository verrät mehr über die Pläne für künftige Releases.

Mit dem neuen Container Storage Interface (CSI) in Kubernetes 1.9 (als Alpha-Version) gibt es bereits erste Alternativen zu Rook wie einen auf dem CSI basierenden Ceph-Dienst für Kubernetes [2]. Auch die Rook-Entwickler wollen langfristig auf das zukunftsträchtige CSI wechseln. Zwar will die für Storage zuständige Special Interest Group (SIG) das FlexVolume-Interface aus Gründen der Rückwärtskompatibilität weiter pflegen, neue Entwicklungen sollen aber künftig mit dem CSI stattfinden.

Link-Codes

[1] Rook: https://rook.io/

[2] Ceph auf CSI: https://github.com/ceph/ceph-csi/

comments powered by Disqus
Mehr zum Thema

Rook wird CNCF-Projekt

Die Cloud Native Computing Foundation wird die neue Heimat für das Rook-Storage-Projekt. 

Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023