首页主机资讯CentOS K8s持久化卷使用指南

CentOS K8s持久化卷使用指南

时间2025-12-12 17:22:04发布访客分类主机资讯浏览1011
导读:CentOS 上搭建与验证 Kubernetes 持久化卷 一 核心概念与访问模式 PV(PersistentVolume) 是集群级别的存储资源,由管理员预先制备或基于 StorageClass 动态制备;PVC(PersistentV...

CentOS 上搭建与验证 Kubernetes 持久化卷

一 核心概念与访问模式

  • PV(PersistentVolume) 是集群级别的存储资源,由管理员预先制备或基于 StorageClass 动态制备;PVC(PersistentVolumeClaim) 是用户对存储的请求,二者按容量与访问模式匹配后进入 Bound 状态,供 Pod 使用。PV 不属于任何命名空间,PVC 属于命名空间。支持的典型访问模式包括:ReadWriteOnce(RWO)ReadOnlyMany(ROX)ReadWriteMany(RWX),以及 ReadWriteOncePod(RWOP,Kubernetes 1.22+,仅 CSI)。PV 常见状态:Available、Bound、Released、Failed。回收策略包括:Retain(保留数据与 PV,需人工清理)、Delete(删除 PV 及后端存储,动态制备时常用)、Recycle(清空数据,已弃用)。动态制备依赖 StorageClass 与 API Server 的准入控制(如启用 DefaultStorageClass 准入插件)。

二 在 CentOS 上快速落地 NFS 静态供给

  • 准备 NFS 服务器(示例网段 192.168.10.0/24
    • 安装组件并共享目录:
      • 安装:yum -y install nfs-utils rpcbind
      • 共享:mkdir -p /data/k8s_data
      • 配置:cat > > /etc/exports < < 'EOF' /data/k8s_data 192.168.10.0/24(rw,sync,no_root_squash) EOF
      • 启动:systemctl enable --now rpcbind nfs-server
      • 权限:chown -R nfsnobody:nfsnobody /data/k8s_data
      • 验证:showmount -e < NFS_IP>
  • 所有节点安装 NFS 客户端工具(用于挂载)
    • yum install -y nfs-utils(无需启动 nfs-server)
  • 创建静态 PV(示例 500Mi,RWX
    • 文件:pv-nfs.yaml
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-nfs
      spec:
        capacity:
          storage: 500Mi
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        nfs:
          server: <
          NFS_IP>
          
          path: /data/k8s_data
      
    • 应用:kubectl apply -f pv-nfs.yaml
  • 创建 PVC 绑定 PV
    • 文件:pvc-nfs.yaml
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-nfs
        namespace: default
      spec:
        resources:
          requests:
            storage: 500Mi
        accessModes:
          - ReadWriteMany
        storageClassName: ""
      
    • 应用:kubectl apply -f pvc-nfs.yaml
  • 在 Pod 中使用 PVC(示例 Nginx 日志目录)
    • 文件:deploy-nginx-pvc.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: deployment-nginx-nfs
        namespace: default
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: nginx-nfs
        template:
          metadata:
            labels:
              app: nginx-nfs
          spec:
            containers:
            - image: nginx:1.7.9
              name: nginx-container
              ports:
              - name: http
                containerPort: 80
              volumeMounts:
              - name: pvc-volume
                mountPath: /var/log/nginx
            volumes:
            - name: pvc-volume
              persistentVolumeClaim:
                claimName: pvc-nfs
      
    • 应用:kubectl apply -f deploy-nginx-pvc.yaml
  • 验证
    • kubectl get pv,pvc 应见 STATUS=Bound
    • kubectl logs deployment/nginx-nfs 正常输出,或进入容器检查挂载点
  • 清理(注意 Retain 策略)
    • kubectl delete deploy deployment-nginx-nfs
    • kubectl delete pvc pvc-nfs(PV 变为 Released,数据仍在 NFS 服务器)
    • 如需复用:手动清理 NFS 目录数据后,再创建同名/同规格 PV;或调整回收策略为 Delete(动态制备时更常见)。

三 动态供给与 StorageClass 要点

  • 作用与机制
    • StorageClass 定义“如何动态创建 PV”,包含 provisionerparametersreclaimPolicy 等;当 PVC 请求某 StorageClass 且无匹配静态 PV 时,控制平面会调用 provisioner 动态创建 PV 并绑定 PVC。
  • 启用与默认类
    • 需在 API Server 启用准入控制插件 DefaultStorageClass,使集群具备“默认存储类”能力;PVC 若显式设置 storageClassName: "" 则禁用动态供给。
  • 示例 StorageClass(以 NFS 动态供给为例,需部署 NFS 外部制备器)
    • 思路:部署 NFS Client Provisioner(RBAC、Deployment、StorageClass),创建 StorageClass 指向该 provisioner;随后创建 PVC 请求该 StorageClass 即可自动获得 PV。
  • 回收策略联动
    • 动态制备的 PV 常见 reclaimPolicy=Delete(删除 PVC 时连同后端存储一起删除);静态 PV 可按需设为 Retain 以避免误删数据。

四 常用场景与注意事项

  • 访问模式选择
    • 单节点读写:选 RWO(如多数块存储、单实例数据库)。
    • 多节点只读共享:选 ROX(如静态内容分发)。
    • 多节点读写共享:选 RWX(如 NFS、CephFS 等支持多挂的文件系统;注意应用对并发写入的兼容性)。
  • 本地开发/测试可用 HostPath,但不具备节点迁移能力,生产慎用;emptyDir 为临时目录,随 Pod 删除而清空,非持久化。
  • 生产建议
    • 优先选择具备高可用与快照/克隆能力的分布式或云 NAS(如 CephFS、公有云 NAS);NFS 简单但存在单点故障风险,生产环境需加固高可用与备份策略。
  • 安全与权限
    • NFS 建议避免使用 no_root_squash;按需使用 root_squash 或更严格的权限映射,结合目录所属用户/组与权限位控制访问。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS K8s持久化卷使用指南
本文地址: https://pptw.com/jishu/770691.html
CentOS K8s服务发现机制介绍 CentOS K8s容器网络接口解析

游客 回复需填写必要信息