Wie man

Ceph Persistent Storage für Kubernetes mit Cephfs

Ceph Persistent Storage für Kubernetes mit Cephfs

In unserem letzten Tutorial haben wir besprochen, wie Sie das können Persistenter Speicher für Kubernetes mit Ceph RBD. Wie versprochen konzentriert sich dieser Artikel auf die Konfiguration von Kubernetes für die Verwendung des externen Ceph Ceph-Dateisystems zum Speichern persistenter Daten für Anwendungen, die in einer Kubernetes-Containerumgebung ausgeführt werden.

Wenn Sie neu bei Ceph sind, aber einen laufenden Ceph-Cluster haben, Ceph File System(CephFS), ist ein POSIX-kompatibles Dateisystem, das auf dem verteilten Objektspeicher von Ceph basiert, RADOS. CephFS wurde entwickelt, um einen hochverfügbaren, mehrfach verwendbaren und leistungsstarken Dateispeicher für eine Vielzahl von Anwendungen bereitzustellen.

Dieses Tutorial wird nicht tief in die Konzepte von Kubernetes und Ceph eintauchen. Es soll als einfache Schritt-für-Schritt-Anleitung für die Konfiguration von Ceph und Kubernetes dienen, um sicherzustellen, dass Sie persistente Volumes automatisch auf dem Ceph-Backend mit Cephfs bereitstellen können. Befolgen Sie also die folgenden Schritte, um loszulegen.

Ceph Persistent Storage für Kubernetes mit Cephfs

Bevor Sie mit dieser Übung beginnen, sollten Sie über einen funktionierenden externen Ceph-Cluster verfügen. Die meisten Kubernetes-Bereitstellungen mit Ceph beinhalten die Verwendung von Rook. In dieser Anleitung wird davon ausgegangen, dass Sie einen Ceph-Speichercluster mit Ceph Ansible, Ceph Deploy oder manuell bereitgestellt haben or.

So installieren Sie Ceph Storage Cluster auf Ubuntu 18.04 LTS

Wir werden den Link mit anderen Anleitungen zur Installation von Ceph auf anderen Linux-Distributionen aktualisieren.

Schritt 1: Bereitstellen von Cephfs Provisioner auf Kubernetes

Melden Sie sich bei Ihrem Kubernetes-Cluster an und erstellen Sie eine Manifestdatei für die Bereitstellung des RBD-Provisioners, der ein dynamischer Out-of-Tree-Provisioner für Kubernetes ist 1.5+.

$ vim cephfs-Bereitsteller.yml

Fügen Sie der Datei den folgenden Inhalt hinzu. Beachten Sie, dass unsere Bereitstellung RBAC verwendet. Daher erstellen wir eine Clusterrolle und Bindungen, bevor wir ein Dienstkonto erstellen und Cephfs Provisioner bereitstellen.

--- Art: Namespace apiVersion: v1 Metadaten: Name: cephfs --- Art: ClusterRole apiVersion: rbac.Genehmigung.k8s.io/v1-Metadaten: Name: cephfs-provisioner-Namespace: cephfs-Regeln: - apiGroups: [""] Ressourcen: ["persistentvolumes"] Verben: ["get", "list", "watch", "create", "delete "] - apiGroups: [""] Ressourcen: ["persistentvolumeclaims"] Verben: ["get", "list", "watch", "update"] - apiGroups: ["storage.k8s.io"] Ressourcen: ["storageclasses"] Verben: ["get", "list", "watch"] - apiGroups: [""] Ressourcen: ["events"] Verben: ["create", "update", "patch"] - apiGroups: [""] Ressourcen: ["services"] resourceNames: ["kube-dns","coredns"] Verben: ["list", "get"] --- Art: ClusterRoleBinding apiVersion: rba.Genehmigung.k8s.io/v1-Metadaten: Name: Cephfs-Provisioner-Namespace: cephfs-Subjekte: - Art: ServiceAccount-Name: cephfs-Provisioner-Namespace: cephfs roleRef: Art: ClusterRole-Name: cephfs-Provisioner.Genehmigung.k8s.io --- apiVersion: rbac.Genehmigung.k8s.io/v1-Art: Rollenmetadaten: Name: cephfs-provisioner-Namespace: cephfs-Regeln: - apiGroups: [""] Ressourcen: ["secrets"] Verben: ["create", "get", "delete"] - apiGroups: [""] Ressourcen: ["Endpunkte"] Verben: ["get", "list", "watch", "create", "update", "patch"] --- apiVersion: rbac.Genehmigung.k8s.io/v1-Art: RoleBinding-Metadaten: Name: cephfs-Provisioner-Namespace: cephfs roleRef: apiGroup: rbac.Genehmigung.k8s.io-Art: Rollenname: cephfs-provisioner Betreff: - Art: ServiceAccount-Name: cephfs-Provisioner --- apiVersion: v1 Art: ServiceAccount-Metadaten: Name: cephfs-Provisioner-Namespace: cephfs --- apiVersion: apps/v1 Art: Bereitstellung Metadaten: Name: Cephfs-Provisioner Namespace: Cephfs-Spezifikation: Repliken: 1 Selektor: MatchLabels: App: Cephfs-Provisioner-Strategie: Typ: Vorlage neu erstellen: Metadaten: Labels: App: Cephfs-Provisioner-Spezifikation: Container: - Name: Cephfs-Provisioner Bild: "Kai.io/external_storage/cephfs-provisioner:latest" env: - Name: PROVISIONER_NAME Wert: ceph.com/cephfs - Name: PROVISIONER_SECRET_NAMESPACE Wert: cephfs-Befehl: - "/usr/local/bin/cephfs-provisioner" Argumente: - "-id=cephfs-provisioner-1" serviceAccount: cephfs-provisionervision

Manifest anwenden:

$ kubectl apply -f cephfs-provisioner.yml-Namespace/cephfs erstellte Clusterrolle.rbac.Genehmigung.k8s.io/cephfs-provisioner hat Clusterrollenbindung erstellt.rbac.Genehmigung.k8s.io/cephfs-provider erstellte Rolle.rbac.Genehmigung.k8s.io/cephfs-provisioner erstellt Rollenbindung.rbac.Genehmigung.k8s.io/cephfs-provisioner erstellte serviceaccount/cephfs-provisioner erstellte Bereitstellung.Apps/cephfs-Provider erstellt

Bestätigen Sie, dass der Cephfs Volume Provisioner-Pod ausgeführt wird.

$ kubectl get pods -l app=cephfs-provisioner -n cephfs NAME BEREIT STATUS NEUSTART ALTER cephfs-provisioner-7b77478cb8-7nnxs 1/1 Wird ausgeführt 0 84s

Schritt 2: Ceph Admin Key abrufen und Secret auf Kubernetes erstellen

Melden Sie sich bei Ihrem Ceph-Cluster an und erhalten Sie den Administratorschlüssel zur Verwendung durch den RBD-Anbieter provision.

$ sudo ceph auth get-key client.Administrator

Speichern Sie den Wert des Admin-Benutzerschlüssels, der mit dem obigen Befehl ausgedruckt wurde. Wir fügen den Schlüssel als Geheimnis in Kubernetes hinzu.

$ kubectl erstelle geheimes generisches ceph-admin-secret \ --from-literal=key='' \ --namespace=cephfs

Wo ist Ihr Ceph-Admin-Schlüssel. Sie können die Erstellung mit dem folgenden Befehl bestätigen.

$ kubectl get secrets ceph-admin-secret -n cephfs NAME TYP DATEN ALTER ceph-admin-secret undurchsichtig 1 6s

Schritt 3: Ceph-Pool für Kubernetes & Client-Schlüssel erstellen

Ein Ceph-Dateisystem erfordert mindestens zwei RADOS-Pools: Für beide:

Im Allgemeinen umfasst der Metadatenpool höchstens einige Gigabyte an Daten. 64 oder 128 werden in der Praxis häufig für große Cluster verwendet. Aus diesem Grund wird normalerweise eine kleinere PG-Zahl empfohlen.

Erstellen wir Ceph-OSD-Pools für Kubernetes:

$ sudo ceph osd pool cephfs_data erstellen 128 128 $ sudo ceph osd pool cephfs_metadata erstellen 64 64

Erstellen Sie ein ceph-Dateisystem auf den Pools:

$ ceph fs neue cephfs cephfs_metadata cephfs_data

Bestätigen Sie die Erstellung des Ceph-Dateisystems:

$ sudo ceph fs ls Name: cephfs, Metadatenpool: cephfs_metadata, Datenpools: [cephfs_data ]

Bestätigung des UI-Dashboards:

Schritt 4: Cephfs-Speicherklasse auf Kubernetes erstellen

EIN Speicherklasse bietet Ihnen eine Möglichkeit, die „Klassen" von Lager Sie bieten in Kubernetes. Wir erstellen eine Lagerklasse namens cephfs.

$ vim cephfs-sc.yml

Die Inhalte, die der Datei hinzugefügt werden sollen:

--- Art: StorageClass apiVersion: storage.k8s.io/v1-Metadaten: Name: cephfs-Namespace: cephfs-Bereitsteller: ceph.com/cephfs-Parameter: Monitore: 10.10.10.11:6789,10.10.10.12:6789,10.10.10.13:6789 adminId: admin adminSecretName: ceph-admin-secret adminSecretNamespace: cephfs ClaimRoot: /pvc-volumes

Wo:

$ sudo ceph -s Cluster: id: 7795990b-7c8c-43f4-b648-d284ef2a0aba Gesundheit: HEALTH_OK Dienste: mon: 3 Daemons, Quorum cephmon01,cephmon02,cephmon03 (Alter 32h) mgr: cephmon01(aktiv, seit 30h), Standbys: cephmon02 mds: cephfs:1 0=cephmon01=up:active 1 up:standby osd: 9 osds: 9 up (seit 32h), 9 in (seit 32h) rgw: 3 Daemons aktiv (cephmon01, cephmon02, cephmon03) data : Pools: 8 Pools, 618 pgs Objekte: 250 Objekte, 76 KiB Nutzung: 9.6 GiB verwendet, 2.6 TiB / 2.6 TiB-Verfügbarkeitsseiten: 618 aktiv+sauber

Nachdem Sie die Datei mit den korrekten Werten der Ceph-Monitore geändert haben, verwenden Sie den Befehl kubectl, um die Speicherklasse.

$ kubectl apply -f cephfs-sc.yml-Speicherklasse.Lager.k8s.io/cephfs erstellt

Verfügbare StorageClasses auflisten:

$ kubectl get sc NAME BEREITSTELLER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ceph-rbd ceph.com/rbd Löschen Sofort falsch 25h cephfs ceph.com/cephfs Löschen Sofort false 2m23s

Schritt 5: Testanspruch und Pod auf Kubernetes erstellen

Um zu bestätigen, dass alles funktioniert, erstellen wir einen Testanspruch für das persistente Volume.

$ vim cephfs-claim.yml --- Art: PersistentVolumeClaim apiVersion: v1 Metadaten: Name: cephfs-claim1 Spezifikation: accessModes: - ReadWriteOnce storageClassName: cephfs Ressourcen: Anfragen: Speicher: 1Gi

Manifestdatei anwenden.

$ kubectl apply -f cephfs-claim.yml persistentvolumeclaim/cephfs-claim1 erstellt

Wenn die Bindung erfolgreich war, sollte es angezeigt werden Gebunden Status.

$ kubectl get pvc NAME STATUS VOLUMEN KAPAZITÄT ZUGRIFFSMODI SPEICHERKLASSE ALTER ceph-rbd-claim1 Gebunden pvc-c6f4399d-43cf-4fc1-ba14-cc22f5c85304 1Gi RWO ceph-rbd 25h cephfs-claim1-1096f-faund pvc-c6f4399d-43cf-4fc1-ba14-cc22f5c85304 1Gi RWO Cephfs 87s

Wir können dann einen Test-Pod mit der von uns erstellten Behauptung bereitstellen. Erstellen Sie zuerst eine Datei, die die Daten enthält:

$ vim cephfs-test-pod.jaml
Art: Pod apiVersion: v1 Metadaten: Name: Test-Pod-Spezifikation: Container: - Name: Test-Pod-Image: gcr.io/google_containers/busybox:1.24 Befehl: - "/bin/sh" args: - "-c" - "touch /mnt/SUCCESS && exit 0 || exit 1" volumeMounts: - name: pvc mountPath: "/mnt" restartPolicy: "Never" volume : - Name: pvc persistentVolumeClaim: ClaimName: Claim1

Pod erstellen:

$ kubectl apply -f cephfs-test-pod.Yaml-Pod/Test-Pod erstellt

Bestätigen Sie, dass sich der Pod im laufenden Zustand befindet:

$ kubectl Get Pods Test-Pod NAME BEREIT STATUS NEUSTARTEN ALTER Test-Pod 0/1 Abgeschlossen 0 2m28s

Viel Spaß mit Cephfs für die persistente Volume-Bereitstellung auf Kubernetes.

Ähnliche Anleitung:

Persistenter Speicher für Kubernetes mit Ceph RBD

So konfigurieren Sie die dynamische Kubernetes-Volume-Bereitstellung mit Heketi und GlusterFS

Vorhersage des Bitcoin-Werts im Jahr 2021
Wir können verstehen, dass Sie, wenn Sie schon lange in den Kryptowährungsmarkt investieren, wahrscheinlich wissen, dass Bitcoin eine der beliebtesten...
Beste Linux-Dateimanager, die Sie 2021 verwenden können
Obwohl es möglich ist, alle Ihre Dateien über die Linux-Befehlszeile entweder über bash oder ein anderes Shell-Programm wie zsh vollständig zu verwalt...
Bitcoin-Handel vs. Investieren im Jahr 2021
Bitcoin ist in den letzten Jahren immer beliebter geworden, da sein Wert steigt, was eine großartige Sache ist. Bitcoin hat ein stetiges Wachstum geze...