温馨提示×

如何在Debian上配置Kubernetes的存储解决方案

小樊
49
2025-10-08 14:30:23
栏目: 云计算

在Debian上配置Kubernetes存储解决方案的步骤

一、前置准备

在配置存储前,需完成Debian系统和Kubernetes集群的基础设置:

  1. 更新系统并安装Kubernetes组件
    确保Debian系统为最新版本,安装kubeadmkubeletkubectl(用于集群管理):
    sudo apt update && sudo apt upgrade -y
    sudo apt install -y apt-transport-https curl
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本避免自动升级
    
  2. 初始化Kubernetes集群
    使用kubeadm初始化集群(以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
    
  3. 安装网络插件
    为Pod间通信部署网络插件(如Calico):
    kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
    

二、常见存储解决方案配置

1. NFS(网络文件系统)

NFS适用于需要共享存储的场景(如多个Pod访问同一数据目录),配置步骤如下:

  • 在Debian节点上安装NFS服务器
    sudo apt install -y nfs-kernel-server
    
  • 创建共享目录并配置权限
    sudo mkdir -p /data/nfs-server
    sudo chmod 777 /data/nfs-server  # 测试时可放宽权限,生产环境需严格限制
    
  • 编辑/etc/exports导出共享目录
    echo "/data/nfs-server *(rw,async,no_subtree_check)" | sudo tee -a /etc/exports
    
  • 启动NFS服务并设置开机自启
    sudo systemctl start nfs-kernel-server
    sudo systemctl enable nfs-kernel-server
    
  • 在Kubernetes中创建PV和PVC
    • PersistentVolume(PV,集群存储资源)
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: nfs-testpv
      spec:
        capacity:
          storage: 2Gi
        accessModes:
          - ReadWriteMany  # 多个Pod可同时读写
        nfs:
          server: <NFS_SERVER_IP>  # 替换为NFS服务器IP
          path: /data/nfs-server
      
    • PersistentVolumeClaim(PVC,用户存储请求)
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: nfs-testpvc
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 2Gi
      
    应用配置:
    kubectl apply -f nfs-pv.yaml
    kubectl apply -f nfs-pvc.yaml
    

2. Ceph(统一存储系统)

Ceph提供对象、块、文件存储,适合高可用、可扩展的场景,需通过Rook简化部署:

  • 安装Ceph Common工具
    sudo apt install -y ceph-common
    
  • 使用Rook部署Ceph集群
    参考Rook官方文档,通过Kubernetes CRD定义Ceph集群(需配置存储设备、网络等参数)。

3. Longhorn(轻量级分布式块存储)

Longhorn专注于有状态应用(如数据库),提供高可用和自动灾难恢复:

  • 安装Longhorn
    按照Rancher Labs官方文档,使用Helm或YAML文件部署Longhorn。

4. Local Storage(本地存储)

适用于单节点存储或测试场景,直接使用节点本地目录:

  • 创建StorageClass
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: local-storage
    provisioner: kubernetes.io/no-provisioner
    volumeBindingMode: WaitForFirstConsumer  # 延迟绑定,确保Pod调度到有存储的节点
    
    应用配置:
    kubectl apply -f local-storage-class.yaml
    
  • 创建PV和PVC
    • PV
      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: local-pv
      spec:
        capacity:
          storage: 1Gi
        accessModes:
          - ReadWriteOnce  # 单节点读写
        hostPath:
          path: /mnt/data  # 节点本地目录
        storageClassName: local-storage
      
    • PVC
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: local-pvc
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: local-storage
      
    应用配置:
    kubectl apply -f local-pv.yaml
    kubectl apply -f local-pvc.yaml
    

三、验证配置

无论选择哪种存储方案,均需通过以下命令验证PV和PVC是否绑定成功:

kubectl get pv  # 查看PV状态应为"Bound"
kubectl get pvc  # 查看PVC状态应为"Bound"

注意事项

  • 生产环境优化:NFS需配置权限控制、Ceph需部署多节点集群以保证高可用;
  • 存储类选择:根据应用需求选择ReadWriteOnce(单节点)、ReadWriteMany(多节点)等访问模式;
  • 数据备份:定期备份持久化数据,尤其是有状态应用(如数据库)。

0