博客
关于我
Kubernetes 存储系统 Storage 介绍
阅读量:420 次
发布时间:2019-03-06

本文共 2333 字,大约阅读时间需要 7 分钟。

Kubernetes存储系统概述

存储背景

在Kubernetes环境下,容器中的存储通常是临时的,这意味着Pod重启时内部数据会丢失。因此,实际应用中需要根据需求选择合适的存储方案:

  • 无状态服务:适用于无需持久化数据的应用,容器重启后可以重新启动。
  • 有状态服务:需要持久化存储,确保状态数据不丢失。
  • 有状态集群服务:需要共享数据,通常采用容器外存储方式。
  • Kubernetes存储系统提供了四个核心概念:Volume、PersistentVolume(PV)、PersistentVolumeClaim(PVC)和StorageClass。理解这些概念是掌握Kubernetes存储系统的关键。


    Volumes

    Volume是Kubernetes存储系统的基础抽象,支持多种存储类型,如本地存储、NFS、FC以及云存储(如AWS EFS、GCE Persistent Disk等)。Volume可以直接由Pod使用,也可以由PersistentVolume使用。

    Volumes类型

    • configMap:用于存储配置信息,通常用于读取配置文件。
    • emptyDir:在Pod运行期间创建一个空文件夹,Pod移除时文件夹也会删除。
    • hostPath:将Node节点的文件系统挂载到Pod中。
    • local:代表一个本地存储设备,如磁盘或分区。
    • nfs:代表网络文件系统(NFS)。
    • persistentVolumeClaim:表示对PersistentVolume的请求。

    emptyDir详解

    emptyDir是Pod运行时创建的临时文件夹,具有以下特点:

    • 生命周期:Pod运行时创建,Pod移除时删除。
    • 容器退出:不会导致emptyDir删除。
    • 默认存储位置:根据Node支持的介质(如磁盘、SSD或网络存储)存储。
    • 特殊配置:可以将存储方式设置为内存,这样数据存储在内存中,Pod移除后数据丢失。

    hostPath详解

    hostPath用于将Node节点的文件系统挂载到Pod中,例如:

    volumes:- name: test-volume  hostPath:    path: /data    type: Directory

    local类型详解

    local类型的Volume作为静态资源供PersistentVolume使用,不支持动态分配。其特点包括:

    • 静态供给:无需动态分配。
    • 节点亲和策略:可以通过节点亲和策略进行调度。
    • 潜在问题:如果Node状态异常,可能导致Pod无法访问存储,影响可用性。

    Persistent Volumes

    Persistent Volumes(PV)是Kubernetes中独立于Pod的存储资源,具有以下特点:

  • 动态供给:通过StorageClass实现动态容量分配。
  • 资源生命周期:由管理员管理,用户通过PVC请求使用。
  • 资源绑定:PV可以绑定到特定的PVC上。
  • 扩容:支持云存储扩容,如GCE Persistent Disk和Azure Disk。

  • Persistent Volumes的属性

    • 容量:固定的存储容量。
    • Volume Mode:支持文件系统模式(默认)和裸设备模式(1.9版本及以上)。
    • 访问模式:支持读写、只读等模式。
    • StorageClass:通过StorageClass描述存储类型,同类PV只能绑定到同类PVC。
    • 重用策略:支持保留、删除和重用策略。

    Persistent Volumes的状态

    PV的状态包括:

    • Available:未被使用。
    • Bound:已绑定到PVC上。
    • Released:PVC已删除,PV未被使用。
    • Failed:动态分配失败,需手动回收。

    Persistent Volume Claims(PVC)

    PVC是用户对PV资源的请求,通过以下属性定义:

    kind: PersistentVolumeClaimapiVersion: v1metadata:  name: myclaimspec:  accessModes: ["ReadWriteOnce"]  volumeMode: Filesystem  resources:    requests:      storage: 8Gi  storageClassName: slow  selector:    matchLabels:      release: "stable"    matchExpressions:      - key: environment        operator: In        values: [dev]

    PVC的重要属性

    • 访问模式:如ReadWriteOnce、ReadOnlyMany等。
    • Volume模式:如Filesystem或Raw。
    • 资源请求:指定存储容量。
    • 选择器:通过标签选择PV资源。
    • StorageClass:指定使用的存储类型。

    StorageClass

    StorageClass为管理员提供了描述存储类型的方法,支持动态容量分配。例如:

    kind: StorageClassapiVersion: storage.k8s.io/v1metadata:  name: local-storageprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumer

    总结

    通过以上内容,可以了解Kubernetes存储系统的核心概念和使用方法。理解Volume、PV、PVC和StorageClass的关系,是掌握Kubernetes存储系统的关键。

    转载地址:http://aqrkz.baihongyu.com/

    你可能感兴趣的文章
    opencart出现no such file or dictionary
    查看>>
    opencv Mat push_back
    查看>>
    opencv SVM分类Demo
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 人脸识别 C++实例代码
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    opencv1-加载、修改、保存图像
    查看>>
    opencv10-形态学操作
    查看>>
    opencv11-提取水平直线和垂直直线
    查看>>
    opencv12-图像金字塔
    查看>>
    opencv14-自定义线性滤波
    查看>>
    opencv15-边缘处理
    查看>>