centos部署k8s存储方案
导读: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>
 
- 创建monitor节点:
- 验证集群状态: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
