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

  1. 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.

  2. 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;
    
    Copy
  3. 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
    $$;
    
    Copy

    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.

  4. Überprüfen Sie den Status des Dienstes:

    SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
    
    Copy

Snapshot erstellen

  1. 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';
    
    Copy
  2. Snapshot überprüfen

    • Listen Sie Snapshots mit SHOW SNAPSHOTS auf.

      SHOW SNAPSHOTS;
      
      Copy
    • Rufen Sie mit DESCRIBE SNAPSHOT Informationen zu einem bestimmten Snapshot ab.

      DESC SNAPSHOT my_snapshot;
      
      Copy
  3. Führen Sie den Befehl ALTER SNAPSHOT aus, um den Snapshot zu bearbeiten.

    ALTER SNAPSHOT my_snapshot SET comment='updated comment';
    
    Copy

Snapshot verwenden

  1. 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;
      
      Copy
    • 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.

      1. Halten Sie den Dienst an, damit Sie den Snapshot auf dem Blockspeicher-Volume wiederherstellen können.

        ALTER SERVICE my_service SUSPEND;
        
        Copy
      2. 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;
        
        Copy
      3. Überprüfen Sie den Status des Dienstes.

        call SYSTEM$GET_SERVICE_STATUS('my_service');
        
        Copy
  2. Verwenden Sie den Befehl DROP SNAPSHOT, um den Snapshot zu löschen.

    DROP SNAPSHOT my_snapshot;
    
    Copy

Bereinigen

Entfernen Sie die von Ihnen erstellten Ressourcen.

  1. Löschen Sie die beiden Dienste, die Sie erstellt haben:

DROP SERVICE my_service;
DROP SERVICE new_service;
Copy
  1. 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.