centos

centos k8s安装存储设置

小樊
34
2025-11-10 04:58:35
栏目: 云计算

CentOS环境下Kubernetes存储设置指南
在CentOS上为Kubernetes配置存储需完成基础环境准备存储解决方案部署持久化资源定义Pod集成四大步骤,以下是具体操作流程:

一、基础环境准备

1. 安装Kubernetes集群

使用kubeadm工具快速部署Kubernetes集群:

# 安装必要组件
sudo yum install -y kubeadm kubelet kubectl --disable-gpg-check
sudo systemctl enable kubelet
sudo systemctl start kubelet

# 初始化集群(以10.244.0.0/16为Pod网络CIDR为例)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 配置kubectl(按初始化提示执行)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. 安装网络插件

为保证Pod间通信,需安装网络插件(以Calico为例):

kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

二、存储解决方案部署

Kubernetes支持多种存储类型,以下是NFS(简单共享存储)和Ceph(分布式块存储)的具体配置:

1. NFS存储配置(适用于单节点或多节点共享)

(1)部署NFS服务器

在CentOS节点上安装并配置NFS服务:

# 安装NFS软件包
sudo yum install -y nfs-utils

# 创建共享目录并设置权限
sudo mkdir -p /mnt/nfs
sudo groupadd nogroup
sudo chown -R nobody:nogroup /mnt/nfs

# 配置共享规则(允许所有客户端读写)
echo "/mnt/nfs *(rw,sync,no_subtree_check)" | sudo tee /etc/exports

# 启动服务并配置防火墙
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
sudo firewall-cmd --permanent --add-service=nfs --add-service=mountd --add-service=rpc-bind
sudo firewall-cmd --reload
(2)Kubernetes中创建PV/PVC

通过YAML文件定义PersistentVolume(PV)和PersistentVolumeClaim(PVC):

应用配置:

kubectl apply -f nfs-pv.yaml -f nfs-pvc.yaml

2. Ceph存储配置(适用于分布式高可用场景)

(1)部署Ceph Operator

使用Rook项目简化Ceph集群部署:

# 添加Rook Helm仓库
helm repo add rook-release https://charts.rook.io/release
helm repo update

# 创建rook-ceph命名空间并安装Operator
kubectl create namespace rook-ceph
helm install rook-ceph rook-release/rook-ceph --namespace rook-ceph
(2)配置Ceph集群

通过YAML文件定义CephCluster资源:

apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  cephVersion:
    image: ceph/ceph:v16.2.6
  allowUnsupported: false
  dataDirHostPath: /var/lib/rook
  useAllNodes: true  # 使用所有节点作为存储节点
  useAllDevices: false
  devices:
    - name: /dev/sdb  # 指定存储设备(需提前清理磁盘)
  network:
    hostNetwork: false

应用配置并验证集群状态:

kubectl apply -f ceph-cluster.yaml
kubectl -n rook-ceph get cephcluster  # 查看集群状态(需等待STATUS变为"Ready")
(3)创建Ceph存储类

定义StorageClass以实现动态存储分配(以RBD块存储为例):

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: rook-ceph-block
provisioner: rook-ceph.rbd.csi.ceph.com
parameters:
  clusterID: rook-ceph  # 与CephCluster名称一致
  pool: replicapool     # 存储池名称(需与Ceph集群配置一致)
  imageFormat: "2"      # RBD镜像格式(推荐2)
  imageFeatures: layering  # 支持快照等高级特性
  csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
  csi.storage.k8s.io/provisioner-secret-namespace: rook-ceph
  csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node
  csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph
reclaimPolicy: Delete  # 删除PVC后自动删除PV
allowVolumeExpansion: true  # 支持在线扩容
volumeBindingMode: Immediate  # 立即绑定PVC与PV

应用配置:

kubectl apply -f ceph-storageclass.yaml

三、在Pod中使用存储

通过PVC将存储挂载到Pod中(以Nginx为例):

apiVersion: v1
kind: Pod
metadata:
  name: nginx-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 nginx-pod.yaml
kubectl exec -it nginx-pod -- ls /usr/share/nginx/html  # 查看挂载目录

注意事项

  1. NFS权限:确保NFS共享目录权限设置为nobody:nogroup,避免Pod无法访问。
  2. Ceph设备清理:使用/dev/sdb前需彻底清理磁盘(wipefs -a /dev/sdb),防止数据残留。
  3. StorageClass选择:动态存储分配需依赖StorageClass,静态PV需手动创建PV并与PVC匹配。
  4. 存储插件兼容性:不同存储插件(如Longhorn、Portworx)需参考其官方文档调整配置。

以上步骤覆盖了CentOS环境下Kubernetes存储配置的核心流程,可根据业务需求选择合适的存储方案。

0
看了该问题的人还看了