博客
关于我
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 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>
    Nginx 我们必须知道的那些事
    查看>>
    Nginx 的 proxy_pass 使用简介
    查看>>
    Nginx 的配置文件中的 keepalive 介绍
    查看>>
    Nginx 结合 consul 实现动态负载均衡
    查看>>
    Nginx 负载均衡与权重配置解析
    查看>>
    Nginx 负载均衡详解
    查看>>
    nginx 配置 单页面应用的解决方案
    查看>>
    nginx 配置https(一)—— 自签名证书
    查看>>
    nginx 配置~~~本身就是一个静态资源的服务器
    查看>>
    Nginx 配置清单(一篇够用)
    查看>>
    Nginx 配置解析:从基础到高级应用指南
    查看>>
    nginx+php的搭建
    查看>>
    nginx+tomcat+memcached
    查看>>