Tutorial 4: Dienst mit einem eingebundenen Blockspeicher-Volume erstellen¶
Einführung¶
Dieses Tutorial bietet eine schrittweise Anleitung zum Erstellen eines einfachen Dienstes, der ein Blockspeicher-Volume verwendet. Sie erstellen auch einen Snapshot des Speichervolumes und erfahren, wie Sie den Snapshot verwenden können.
Dienst erstellen¶
Folgen Sie Tutorial 1, um den Code für den Beispieldienst herunterzuladen, ein Docker-Image zu erstellen und es in ein Repository Ihres Snowflake-Kontos hochzuladen.
Prüfen Sie, ob das Image
my_echo_service_image
im Repository vorhanden ist.SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
Erstellen Sie einen Dienst. Wenn der Dienst ausgeführt wird, wird im Container ein Blockspeicher-Volume mit 10 Gi eingebunden sein.
CREATE SERVICE my_service IN COMPUTE POOL tutorial_compute_pool FROM SPECIFICATION $$ spec: containers: - name: echo image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:latest volumeMounts: - name: block-vol1 mountPath: /opt/block/path readinessProbe: port: 8080 path: /healthcheck endpoints: - name: echoendpoint port: 8080 public: true volumes: - name: block-vol1 source: block size: 10Gi $$;
Bemerkung
Dieses Tutorial zeigt nur, wie Sie einen Dienst mit einem Blockspeicher-Volume erstellen. Der Dienstcode (Code von Tutorial 1 überprüfen) verwendet das Volumen nicht.
Überprüfen Sie den Status des Dienstes:
SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
Snapshot erstellen¶
Verwenden Sie den Befehl CREATE SNAPSHOT, um einen Snapshot des Blockspeicher-Volumes zu erstellen, das an die Dienstinstanz 0 angebunden ist. Sie geben Instanz 0 an, weil Sie nur eine Dienstinstanz ausführen.
Setzen Sie den Namen im VOLUME-Parameter in doppelte Anführungszeichen, damit er mit der Groß-/Kleinschreibung des Namens in der Dienstspezifikation übereinstimmt.
CREATE SNAPSHOT my_snapshot FROM SERVICE my_service VOLUME "block-vol1" INSTANCE 0 COMMENT='new snapshot';
Snapshot überprüfen
Listen Sie Snapshots mit SHOW SNAPSHOTS auf.
SHOW SNAPSHOTS;
Rufen Sie mit DESCRIBE SNAPSHOT Informationen zu einem bestimmten Snapshot ab.
DESC SNAPSHOT my_snapshot;
Führen Sie den Befehl ALTER SNAPSHOT aus, um den Snapshot zu bearbeiten.
ALTER SNAPSHOT my_snapshot SET comment='updated comment';
Snapshot verwenden¶
Sie können den Snapshot auf zwei Arten verwenden:
Snapshot verwenden, um einen neuen Dienst zu erstellen: Wenn Sie einen neuen Dienst erstellen, können Sie den Snapshot als anfänglichen Inhalt für ein Blockspeicher-Volume verwenden, wie gezeigt. Der folgende CREATE SERVICE-Befehl erstellt einen weiteren Dienst (
new_service
) mit einem Blockspeicher-Volume von 50 Gi. Die Inline-Spezifikation enthält den Namen des Snapshots, der für die Initialisierung des Blockspeicher-Volumes verwendet werden soll.CREATE SERVICE new_service IN COMPUTE POOL tutorial_compute_pool FROM SPECIFICATION $$ spec: containers: - name: echo image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:tutorial volumeMounts: - name: fromsnapshotvol mountPath: /opt/block/path readinessProbe: port: 8080 path: /healthcheck endpoints: - name: echoendpoint port: 8080 public: true volumes: - name: fromsnapshotvol source: block size: 50Gi blockConfig: initialContents: fromSnapshot: MY_SNAPSHOT $$ min_instances=3 max_instances=3;
Snapshot des Speichervolumes eines vorhandenen Dienstes wiederherstellen: Dieses Beispiel startet erneut den ersten Dienst (
my_service
), den Sie erstellt haben, wobei der Inhalt des ursprünglichen Blockvolumens durch den Inhalt des Snapshots ersetzt wird.Halten Sie den Dienst an, damit Sie den Snapshot auf dem Blockspeicher-Volume wiederherstellen können.
ALTER SERVICE my_service SUSPEND;
Stellen Sie den Snapshot auf dem Blockspeicher-Volume wieder her, das auf dem Container der „new_service“-Instanz gemountet ist. Sie führen nur eine Instanz des Echo-Dienstes aus, daher geben Sie die Instanz-ID 0 an.
ALTER SERVICE my_service RESTORE -- this will auto RESUME the service. VOLUME "block-vol1" INSTANCES 0 FROM SNAPSHOT my_snapshot;
Überprüfen Sie den Status des Dienstes.
call SYSTEM$GET_SERVICE_STATUS('my_service');
Verwenden Sie den Befehl DROP SNAPSHOT, um den Snapshot zu löschen.
DROP SNAPSHOT my_snapshot;
Bereinigen¶
Entfernen Sie die von Ihnen erstellten Ressourcen.
Löschen Sie die beiden Dienste, die Sie erstellt haben:
DROP SERVICE my_service; DROP SERVICE new_service;
Folgen Sie den Schritten von Tutorial 1, um die anderen in Tutorial 1 erstellten Ressourcen zu bereinigen.
Nächste Schritte¶
Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie zu Erweiterte Tutorials zurückkehren, um weitere Themen zu erkunden.