首页主机资讯centos部署k8s存储方案

centos部署k8s存储方案

时间2025-10-30 22:51:03发布访客分类主机资讯浏览1346
导读:CentOS上部署Kubernetes存储方案的常见选择与实践 在CentOS环境中为Kubernetes(K8s)配置存储,需根据应用场景(如数据共享需求、性能要求、扩展性)选择合适的存储类型。以下是NFS、GlusterFS、Ceph三...

CentOS上部署Kubernetes存储方案的常见选择与实践
在CentOS环境中为Kubernetes(K8s)配置存储,需根据应用场景(如数据共享需求、性能要求、扩展性)选择合适的存储类型。以下是NFS、GlusterFS、Ceph三种主流方案的详细部署步骤及特点分析:

一、NFS(网络文件系统):简单易用的共享存储方案

NFS适用于需要多Pod共享数据且对性能要求不高的场景(如静态网站、配置文件共享),其核心优势是配置简单、成本低。

1. 部署NFS服务器(CentOS节点)

  • 安装NFS工具包:sudo yum install -y nfs-utils rpcbind
  • 创建共享目录并设置权限:sudo mkdir -p /mnt/nfs & & sudo chown -R nobody:nogroup /mnt/nfs
  • 配置共享规则(编辑/etc/exports):/mnt/nfs *(rw,sync,no_subtree_check)(允许所有客户端读写)
  • 启动服务并设置开机自启:sudo systemctl start nfs-server rpcbind & & sudo systemctl enable nfs-server rpcbind
  • 导出共享目录:sudo exportfs -a
  • 配置防火墙放行端口(NFS默认使用2049、111等端口):sudo firewall-cmd --permanent --add-service=nfs & & sudo firewall-cmd --reload

2. 在K8s中使用NFS存储

  • 创建PersistentVolume(PV):定义存储资源的属性(如容量、访问模式)。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: nfs-pv
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany  # 支持多Pod同时读写
      nfs:
        path: /mnt/nfs
        server: <
        NFS_SERVER_IP>
          # 替换为NFS服务器IP
      persistentVolumeReclaimPolicy: Retain  # 删除PVC后保留PV数据
    
  • 创建PersistentVolumeClaim(PVC):申请存储资源(Pod通过PVC关联PV)。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
    
  • 在Pod中使用PVC:将PVC挂载到Pod的容器路径。
    apiVersion: v1
    kind: Pod
    metadata:
      name: nfs-pod
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html  # 容器内挂载路径
          name: nfs-volume
      volumes:
      - name: nfs-volume
        persistentVolumeClaim:
          claimName: nfs-pvc  # 关联PVC名称
    

应用上述配置(kubectl apply -f < 文件名> .yaml)后,Pod即可通过NFS共享存储读写数据。

二、GlusterFS:分布式高可用存储方案

GlusterFS适用于需要高可用、高扩展性的场景(如大规模数据存储、分布式应用),支持动态扩容且数据自动均衡。

1. 部署GlusterFS集群

  • 在所有存储节点安装GlusterFS:sudo yum install -y centos-release-gluster & & sudo yum install -y glusterfs-server glusterfs-fuse
  • 启动glusterd服务:sudo systemctl start glusterd & & sudo systemctl enable glusterd
  • 添加节点到集群(在任意节点执行,替换为目标节点IP):gluster peer probe < NODE_IP> (需重复执行直到所有节点加入)
  • 创建存储卷(如3节点存储卷):gluster volume create gv0 replica 3 < NODE1_IP> :/data/brick1 < NODE2_IP> :/data/brick2 < NODE3_IP> :/data/brick3 force
  • 启动存储卷:gluster volume start gv0

2. 在K8s中使用GlusterFS存储

  • 创建StorageClass(动态配置):定义存储的Provisioner(GlusterFS)和参数(如REST服务地址、集群ID)。
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: glusterfsp
    provisioner: kubernetes.io/glusterfs
    parameters:
      resturl: http://<
        GLUSTERFS_SERVER_IP>
        :8080  # GlusterFS REST服务地址
      clusterid: <
        CLUSTER_ID>
          # GlusterFS集群ID(通过`gluster cluster info`获取)
      restauthenabled: "true"
      restuser: admin
      restuserkey: password  # 设置REST API密码
    volumeBindingMode: WaitForFirstConsumer  # 延迟绑定,确保Pod调度到正确节点
    
  • 创建PVC:通过StorageClass动态申请存储。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: gluster-pvc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: glusterfsp  # 关联StorageClass
      resources:
        requests:
          storage: 10Gi
    
  • 在Pod中使用PVC:与NFS类似,通过PVC挂载到容器路径。

三、Ceph:高性能分布式存储方案

Ceph适用于对性能、可靠性要求极高的生产环境(如数据库、AI训练),支持块存储(RBD)、对象存储(RADOS Gateway)、文件系统(CephFS)三种类型。

1. 部署Ceph集群

  • 在所有节点安装Ceph工具包:sudo yum install -y ceph ceph-common ceph-fuse ceph-mds ceph-mgr ceph-mon ceph-osd
  • 初始化集群(在管理节点执行):
    • 创建monitor节点:ceph-deploy new < MONITOR_NODE_IP>
    • 安装monitor服务:ceph-deploy mon create-initial
    • 创建OSD(对象存储设备,需准备裸磁盘,如/dev/sdb):ceph-deploy osd create --data /dev/sdb < NODE_IP>
  • 验证集群状态:ceph -s(需显示HEALTH_OK

2. 在K8s中使用Ceph RBD(块存储)

  • 创建Secret(存储Ceph认证信息)
    ceph auth get-or-create client.admin | tee /etc/ceph/ceph.client.admin.keyring
    kubectl create secret generic ceph-secret --from-file=keyring=/etc/ceph/ceph.client.admin.keyring -n default
    
  • 创建StorageClass
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ceph-rbd
    provisioner: kubernetes.io/rbd
    parameters:
      monitors: <
        MONITOR_IP1>
        ,<
        MONITOR_IP2>
        ,<
        MONITOR_IP3>
          # Ceph monitor地址
      adminId: admin
      adminSecretNamespace: default
      adminSecretName: ceph-secret
      pool: rbd  # Ceph存储池名称
      userId: admin
      userSecretName: ceph-secret
      fsType: ext4  # 文件系统类型
      imageFeatures: layering  # 支持快照
    reclaimPolicy: Delete  # 删除PVC后删除PV
    
  • 创建PVC与Pod:通过PVC挂载Ceph块设备到Pod(需Pod内安装rbd工具)。

方案选型建议

  • NFS:适合测试/开发环境、多Pod共享静态数据,配置简单但性能有限。
  • GlusterFS:适合需要高可用、动态扩容的场景,如大规模数据存储。
  • Ceph:适合生产环境、对性能要求极高的场景(如数据库、AI训练),但配置复杂。

以上方案均需确保CentOS节点与K8s集群的网络互通,并根据实际需求调整存储容量、访问模式等参数。

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


若转载请注明出处: centos部署k8s存储方案
本文地址: https://pptw.com/jishu/739381.html
centos部署k8s日志管理 Debian系统Filebeat的插件如何使用

游客 回复需填写必要信息