Eine einfache Erklärung der CRD in Kubernetes und ihrer Verwendung

Speicherplatz von Maryanion



CRD (Custom Resource Definition) ist eine spezielle Ressource in Kubernetes, mit der Sie beliebige Daten eingeben können. Das Kubernetes aaS- Team von Mail.ru hat einen Artikel darüber übersetzt, was es ist, wie es erstellt und verwendet wird.



Was ist CRD?



CRD ist nur eine Tabelle in der Datenbank. Nehmen wir an, wir haben eine Tabelle "Früchte" erstellt, in der sich viele Datensätze befinden: "Apfel", "Banane", "Orange". Jeder Datensatz enthält Spalten mit Fruchtmerkmalen wie Süße, Geschmack und Gewicht.



CRD ähnelt also der Obsttabelle.







CR (Benutzerdefinierte Ressource) - Ein separater Datensatz in der Tabelle, z. B. "Apfel" oder "Banane". Nach dem Erstellen einer CRD (Tabelle) können Sie CR (Datensätze) hinzufügen oder entfernen.







CRD wird benötigt, da immer mehr Benutzer Daten zu Kubernetes beitragen möchten. Das Datenformat kann unterschiedlich sein, und CRDs sind in Kubernetes nicht sofort definiert. Daher müssen Sie Ihre eigenen Tabellen erstellen und die Namen und Spaltentypen wie in einer Datenbank festlegen.



Ein IT-Manager möchte beispielsweise eine CRD verwenden, um eine Liste von Benutzern, eine Liste von Abteilungen, einen Arbeitsplan oder etwas anderes zu organisieren.



So erstellen Sie eine CRD



Wie bereits erwähnt, ist CRD eine Tabelle. Wenn wir eine Tabelle erstellen, müssen wir ihr Format festlegen: Spaltennamen und -typen. In CRD werden diese Elemente im YAML- oder JSON-Format beschrieben. CR beschreibt auch jeden Wert, der im YAML- oder JSON-Format geschrieben werden soll.







Mal sehen, wie die CRD von innen aussieht: Die







CRD ist in drei Teile unterteilt: Allgemeiner Teil, Informationen auf Tabellenebene und Informationen auf Spaltenebene:



  1. Ein gemeinsamer Teil. Wie bei anderen Kubernetes-Ressourcen enthalten Metadaten den Namen CRD ( name: "fruit-crd") apiVersionund kind.
  2. Informationen auf Tabellenebene. Tabellenname ( kind: "fruit"), Befehlszeile einfacher Kleinbuchstabe ( simpler: "fruits"), Plural ( plural: "fruits")
  3. Informationen auf Spaltenebene. Spaltenname ( "sweetness"), Spaltentyp ( "boolean", "string", "integer", "object"), verschachtelte Objekte ( : < >). Sie entsprechen dem OpenAPISpecification Version 3-Format.


Weitere Informationen zu CRD finden Sie im offiziellen Handbuch .



CRD-Prüfung



Ist CRD wirklich nur ein Tisch? Lass uns das Prüfen.



Ich möchte mich nicht an das CRD-Format erinnern und brauche einen einfacheren Weg, um es zu erstellen. Ich schreibe also nur eine Tabellendefinition und habe eine Anweisung - ein automatisches CRD-Generierungswerkzeug.



Die Beschreibung ist sehr einfach: Sie müssen die Paare von Spaltennamen und -typen auflisten.







Nach dem Anwenden dieser YML generiert mein Operator in Kubernetes automatisch die entsprechende CRD. Sie können Ihren eigenen Operator erstellen, aber wenn Sie meinen ausprobieren möchten, führen Sie den folgenden Befehl aus:



kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml


Überprüfen Sie nach erfolgreicher Installation des Operators, ob der Pod gestartet wurde:



kubectl get pod -n k8sasdb-system
NAME                                         READY   STATUS    RESTARTS   AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9   2/2     Running   0          8s


Sie können Beispieltabellen und CR Aufzeichnungen Download von hier .



So sieht die generierte CRD aus. Links: allgemeine Informationen und Tabellenebene, rechts: Informationen auf Spaltenebene.







Dann habe ich die folgende CR hinzugefügt (YAML für eine Frucht).





Beispiel CR "Fruit"



Lassen Sie uns nun die Ergebnisse in der Tabelle und die Operationen in den Datensätzen überprüfen.



Eine Tabelle erstellen



kubectl create -f fruit.yaml






Erfolg: CRD installiert = Tabelle erstellt.







Dies entspricht einem SQL-Befehl CREATE TABLE fruits;.



Erstellen Sie einen Datensatz



kubectl create -f apple.yaml






Erfolg: CR set = Datensatz erstellt. Dies entspricht einem SQL-Befehl INSERT INTO fruits values('apple', ...);.



Eine Liste der Datensätze abrufen



kubectl get fruits






Erfolg: Zeigt zwei CRs und alle Spalten für sie an. Entspricht dem SQL-Befehl SELECT * FROM fruits;.



Eine Aufzeichnung erhalten



kubectl get fruit apple






Erfolgreich. Natürlich können auch andere Namen verwendet werden, beispielsweise "Banane". Der Befehl entspricht einer SQL-Abfrage SELECT * FROM fruits WHERE name = 'apple';.



Eintrag löschen



kubectl delete fruit apple






Nach dem Löschen zeigt der Befehl zum Überprüfen der gesamten Liste der Früchte nicht das Ergebnis "Apfel" an.







Erfolgreich. Analog in der SQL : DELETE FROM fruits WHERE name = 'banana';.



Fazit



CRD ist nur eine Tabelle in Kubernetes. Sie können mit CRD neue Tabellen erstellen und mit CR Datensätze hinzufügen. Auch in CRD können Sie das Tabellenschema definieren, indem Sie Spaltennamen und -typen definieren. Sobald Sie die Befehle CRD, CR und kubectl beherrschen, können Sie alle Daten auf Kubernetes hochladen.



Sie brauchen keine Angst zu haben: Auch wenn Sie sich nicht an das CRD-Format erinnern, hilft Ihnen der Bediener. Meine Open Source-Version des Betreibers ist hier veröffentlicht .



Was noch zu lesen:



  1. So nutzen Sie kubectl effizienter: eine umfassende Anleitung .
  2. Kubernetes: .
  3. Kubernetes .



All Articles