弹性容器实例支持通过用户自定义配置,将 VCI Pod 的读写层挂载到云盘持久化卷上,实现容器 rootfs 数据持久化。
说明
【邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。
upper
、work
目录。通过在 VCI Pod 中添加 Annotation 来指定容器读写层使用的卷(Volume)。
Annotation Key | Annotation Value 示例值 | 说明 |
---|---|---|
vci.volcengine.com/overlay-rw-layer-spec | [] | 是否持久化存储容器 rootfs 数据。需通过配置如下参数,实现持久化存储:
|
Pod Annotation 的 YAML 片段示例如下所示:
vci.volcengine.com/overlay-rw-layer-spec: |- [ { "name": "$目标容器名称", "volumeName": "$Volume_名称", "path": "$Volume_内存储路径" }, { "name": "my_container", "volumeName": "ebs-volume", "path": "final/rootfs-dir1" } ]
下文以使用云盘静态存储卷,创建 VCI Pod,实现容器 rootfs 数据持久化为例。更多云盘存储卷使用方法,请参见 EBS 云盘存储卷。
vci-ebs-pv.yaml
代码如下:apiVersion: v1 kind: PersistentVolume metadata: name: vci-ebs-pv # PV 名称。 spec: accessModes: - ReadWriteOnce capacity: storage: 20Gi # EBS 存储容量。 csi: driver: ebs.csi.volcengine.com fsType: ext4 volumeAttributes: ChargeType: PostPaid type: ESSD_PL0 # 云盘类型,云盘名称必须大写。 zone: cn-beijing-a # 业务所在可用区。 volumeHandle: vol-cmukmy9yi5bi254b**** # 指定已有的极速型 SSD 云盘 ID。 volumeMode: Filesystem
kubectl create -f vci-ebs-pv.yaml
vci-ebs-pvc.yaml
代码如下:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vci-ebs-pvc # PVC 名称。 namespace: default # PVC 所在命名空间。 spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeMode: Filesystem volumeName: vci-ebs-pv # 绑定到该 PVC 的 PV 名称,即步骤 2 中创建的 PV 名称。
kubectl create -f vci-ebs-pvc.yaml
vci-pod-ebs-rootfs.yaml
代码如下:apiVersion: v1 kind: Pod metadata: name: vci-pod-ebs-rootfs # Pod 名称。 namespace: default # Pod 所属命名空间。 annotations: vke.volcengine.com/burst-to-vci: enforce # 强制使用 VCI。 vci.volcengine.com/overlay-rw-layer-spec: |- [ { "name": "c1", "volumeName": "rootfs", "path": "final/rootfs-dir1" }, { "name": "c2", "volumeName": "rootfs", "path": "final/rootfs-dir2" } ] labels: app: vci-pod-ebs-rootfs spec: containers: name: c1 # 容器名称。 image: nginx:1.14.2 # Pod 的容器镜像地址和 Tag,请替换为您实际业务中的镜像地址。 imagePullPolicy: Always name: c2 # 容器名称。 image: nginx:1.14.2 # Pod 的容器镜像地址和 Tag,请替换为您实际业务中的镜像地址。 imagePullPolicy: Always tolerations: - effect: NoSchedule key: vci.vke.volcengine.com/node-type operator: Equal value: vci volumes: - name: rootfs # 与 annotation 中指定的 volumeName 保持一致。 persistentVolumeClaim: claimName: vci-ebs-pvc # 与步骤 3 中创建的 EBS 关联 PVC 的名字一致。
kubectl create -f vci-pod-ebs-rootfs.yaml
本文以在 Pod 中安装 vim 组件为例,为您提供验证方式。该验证方式需要确保集群已开启 公网访问。
说明
若创建集群时未开启公网访问,请手动为集群中的每个网段节点池分别手动配置公网访问。详细操作,请参见 FAQ。
vim --version # 验证 vim 尚未安装 apt-get update apt-get install vim -y vim --version # 验证 vim 安装成功
kubectl delete pod vci-pod-ebs-rootfs -n default kubectl create -f vci-pod-ebs-rootfs.yaml
vim --version
命令验证之前安装的 vim 组件已被存储保留。