存储管理

最近更新时间:2020-05-12 20:15:04

存储概述

存储(volume)主要用于存储 Docker 容器的数据。容器服务可分为有状态和无状态服务。无状态的容器服务自身不会持久化任何数据,这意味着容器重启时,上一次运行时的数据都将丢失;有状态容器服务可通过挂载本地持久化存储卷,将数据文件保存在存储卷中,以实现数据的存储、备份或共享。

平台提供动态创建本地持久化存储卷(LocalPersistentVolume)的功能,可以将容器的数据持久化到本地的磁盘、目录中。基于kubernetes的Local存储,和远端存储类似,此时数据依然独立于 Pod 的生命周期,即使业务 Pod 被删除,数据也不会丢失。同时,和远端存储相比,本地存储可以避免网络 IO 开销,拥有更高的读写性能,所以分布式文件系统和分布式数据库这类对 IO 要求很高的应用非常适合本地存储。

  1. 创建存储

无状态存储会随着容器的生成而自动创建,也会伴随容器的下线而下线。此处讲解的创建流程均针对本地持久化存储。本地持久化存储可以随应用的创建而创建,如果在创建应用时,不存在存储卷,则需要先创建存储卷,对本地持久化存储卷的名称、容量进行限定,创建之后即不可变更。创建完成后,添加本地存储,将本地持久化存储卷与应用进行关联。

本地持久化存储也可以再存储管理模块单独创建,但是单独创建的本地持久化存储卷与应用没有关联关系,需要在应用管理处,针对需要关联的应用进行克隆同时添加本地存储卷,将本地持久化存储卷绑定在应用中;也可以在yaml文件通过标签关联应用和本地持久化存储卷。创建本地持久化存储卷即意味着在k8s为用户创建存储卷声明PVC,将本地持久化存储卷与应用关联时,相当于LocalPV完成创建。

  1. 释放空间

当与本地持久化存储卷关联的应用处于发布状态时,本地化持久存储卷不允许释放空间;当应用下线时,如果将本地持久化存储卷同步下线,存储空间即会默认释放;如果未将本地持久化存储卷同步下线,则用户可以主动选择将本地持久化存储卷做释放空间处理。空间一旦释放,数据将丢失且不可恢复。

  1. 解除关联

存储空间已经释放的本地持久化存储卷,相当于其PV被释放,但PVC模板仍保存,且保持与应用的关联关系。在此处,如果该模板需要在其他应用上使用,或者对应的应用需要更换存储卷,可以点击接触关联,将应用与PVC模板的耦合关系。

  1. 删除

如果存储空间已经释放,不管存储是否与应用存在关联关系,均可以选择将其删除,意为将PVC模板删除。

  1. 使用限制

一个PVC可以被一个Pod的多个容器挂载,但只有与当前PVC在同一个namespace下的Pod才能使用它,即PVC不能跨命名空间调用。

金山云,开启您的云计算之旅

免费注册