温馨提示×

centos k8s存储解决方案是什么

小樊
32
2025-12-13 20:15:22
栏目: 云计算

CentOS 上可用的 Kubernetes 存储方案概览

CentOS 环境中,Kubernetes 的持久化存储通常由以下几类构成:节点本地卷(如 emptyDir、hostPath、Local PV)、网络文件/块存储(如 NFS、GlusterFS、Ceph RBD/CephFS)、以及 CSI 插件(如 Longhorn、云厂商 CSI)。这些方案通过 PV/PVCStorageClass 接入集群,实现静态供给与动态供给两种模式,满足从开发测试到生产级别的不同需求。

常见方案与适用场景

方案 类型 典型访问模式 主要优点 适用场景 关键要点
emptyDir 临时本地卷 配置简单、Pod 内多容器共享 缓存、临时处理 生命周期与 Pod 一致,Pod 删除数据即丢失
hostPath 节点本地目录/文件 ReadWriteOnce 直接复用节点存储 访问节点日志/工具 强耦合节点,Pod 漂移会丢失可达性
Local PV 节点本地磁盘 ReadWriteOnce 高性能、低延迟 数据库、有状态服务 需配合 nodeAffinity,做好污点与容忍
NFS 网络文件存储 ReadWriteMany 易部署、共享方便 内容管理、共享配置 需稳定 NFS 服务与网络,注意权限与防火墙
GlusterFS 分布式文件系统 ReadWriteMany 横向扩展、高可用 大文件、媒体/日志 常配合 Heketi 管理卷生命周期
Ceph RBD 分布式块存储 ReadWriteOnce 高性能、可快照克隆 数据库、虚拟机镜像 cephx 认证,支持 RBD 动态供给
CephFS 分布式文件系统 ReadWriteMany 多客户端并发读写 共享目录、多写场景 MDS 与数据/元数据池
Longhorn(CSI) 分布式块存储 ReadWriteOnce 轻量易运维、云原生 通用有状态应用 通过 CSI 动态供给与备份恢复
云厂商块/文件存储 CSI 公有云盘/NAS EBS/PD: RWO;EFS/FSx: RWX 与云盘特性深度集成 云上生产负载 需对应云厂商 CSI 驱动 与权限配置
上述方案均可在 CentOS 上部署,并通过 PV/PVC/StorageClass 接入集群;其中 NFS、GlusterFS、Ceph 等常见网络存储在生产中应用广泛,CSI 为扩展第三方存储的标准接口。

快速上手示例

  • 使用 NFS 提供共享存储(静态 PV/PVC)

    1. 在 NFS 服务器(CentOS)安装并导出目录: sudo yum install -y nfs-utils sudo mkdir -p /mnt/nfs echo “/mnt/nfs *(rw,sync,no_subtree_check)” | sudo tee -a /etc/exports sudo systemctl enable --now nfs-server sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reload
    2. 在集群创建 PV 与 PVC(示例): apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes:
      • ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: 192.168.56.115 path: /mnt/nfs

    apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi 该方式适合多 Pod 共享同一目录(如内容站点、共享缓存)。

  • 使用 GlusterFS + Heketi 提供动态文件存储

    1. 3 个节点安装 GlusterFS 并组建集群(示例命令): yum install -y centos-release-gluster5.noarch yum install -y glusterfs-server systemctl enable --now glusterd gluster peer probe 192.168.1.2 gluster peer probe 192.168.1.3
    2. 部署 Heketi(REST API 管理 Gluster 卷),创建拓扑并加载: heketi-cli --user=admin --secret=yourpass --server http://127.0.0.1:8080 topology load --json=/etc/heketi/heketi-topology.json
    3. 在集群创建 SecretStorageClass(示例要点):
    • Secret(base64 编码的 Heketi 密码)
    • StorageClass 参数:provisioner: kubernetes.io/glusterfs,parameters: resturl=http://:8080, clusterid= 适合需要 RWX、可弹性扩缩的共享文件系统场景。

选型与最佳实践

  • 按访问模式选型:RWO(单节点读写)优先选 RBD/Local PV/EBSRWX(多节点读写)优先选 CephFS/NFS/GlusterFS/EFS
  • 优先使用 动态供给(StorageClass + CSI/内置插件),减少手工创建 PV 的运维成本。
  • 有状态负载尽量使用 StatefulSet,并为 Pod 配置一致的 volumeMountssubPath,避免数据路径漂移。
  • 本地高性能场景用 Local PV,务必配置 nodeAffinity 与污点容忍,确保调度到目标节点;结合节点维护窗口做数据迁移与排空。
  • 数据安全与合规:启用 cephx/KMS/传输加密;定期做 备份与恢复演练(如 Velero 备份 PVC/PV)。
  • 监控与容量:监控 kubelet_volume_stats_available_bytes、存储时延与 IOPS,设置容量告警与扩容流程。
    以上实践可显著提升可用性与可维护性,并降低跨节点与多写场景下的数据一致性风险。

0