博客
关于我
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/

    你可能感兴趣的文章
    Nginx配置——不记录指定文件类型日志
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim游戏
    查看>>
    NIO ByteBuffer实现原理
    查看>>
    Nio ByteBuffer组件读写指针切换原理与常用方法
    查看>>
    NIO Selector实现原理
    查看>>
    nio 中channel和buffer的基本使用
    查看>>