教程 4:创建已挂载块存储卷的服务¶
简介¶
本教程为您创建使用块存储卷的简单服务提供了分步说明。您还可以拍摄存储卷的快照并探索使用快照的方法。
创建服务¶
按照 教程 1 下载示例服务的代码,创建 Docker 镜像,然后将其上传到您的 Snowflake 账户中的存储库。
验证存储库中有
my_echo_service_image
镜像。SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
创建服务。服务运行时,容器会挂载一个 10|~|Gi 块卷存储。
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 $$;
备注
本教程仅说明如何使用块存储卷创建服务。服务代码 (检查教程 1 代码) 不使用此卷。
验证服务状态:
SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
拍摄快照¶
使用 CREATE SNAPSHOT 命令拍摄连接到服务实例 0 的块存储卷的快照。指定实例 0 是因为您只运行一项服务实例。
在 VOLUME 参数中的名称前后使用双引号以匹配服务规范中名称的大小写。
CREATE SNAPSHOT my_snapshot FROM SERVICE my_service VOLUME "block-vol1" INSTANCE 0 COMMENT='new snapshot';
审查快照
使用 SHOW SNAPSHOTS 列出快照。
SHOW SNAPSHOTS;
使用 DESCRIBE SNAPSHOT 检索特定快照的信息。
DESC SNAPSHOT my_snapshot;
运行 ALTER SNAPSHOT 命令以修改快照。
ALTER SNAPSHOT my_snapshot SET comment='updated comment';
使用快照¶
您可以通过两种方式使用快照:
使用快照创建新服务: 创建新服务时,您可以使用快照作为块存储卷的初始内容,如下所示。以下 CREATE SERVICE 命令创建另一项具有 50 Gi 块存储卷的服务 (
new_service
)。内联规范包括用于初始化块存储卷的快照名称。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;
在现有服务的存储卷上恢复快照: 此示例将原始块卷内容替换为快照中的内容,从而重新启动您创建的第一项服务 (
my_service
)。暂停该服务,以便您可以在块存储卷上恢复快照。
ALTER SERVICE my_service SUSPEND;
恢复挂载在 new_service 实例容器上的块存储卷上的快照。您只运行一个 Echo 服务实例,因此您指定实例 ID 0。
ALTER SERVICE my_service RESTORE -- this will auto RESUME the service. VOLUME "block-vol1" INSTANCES 0 FROM SNAPSHOT my_snapshot;
验证服务状态。
call SYSTEM$GET_SERVICE_STATUS('my_service');
使用 DROP SNAPSHOT 命令删除快照。
DROP SNAPSHOT my_snapshot;
清理¶
移除您创建的资源。
删除您创建的两项服务:
DROP SERVICE my_service; DROP SERVICE new_service;
按照 教程 1 中的步骤清理教程 1 中创建的其他资源。
下一步是什么?¶
现在您已经完成了本教程,您可以返回 高级教程 来探索其他主题。