温馨提示×

debian k8s存储如何部署

小樊
38
2026-10-22 20:16:01
栏目: 云计算

在 Debian 上部署 Kubernetes(k8s)存储,通常分为 “准备 Debian 节点” → “搭建 K8s 集群” → “部署存储方案” 三步。下面给你一个实用、可落地的方案,涵盖常见存储类型。


一、Debian 环境准备(所有节点)

1. 系统要求

  • Debian 11 / 12
  • 2 核 CPU / 4G 内存以上
  • 静态 IP
  • 禁用 swap
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab

2. 基础设置

sudo apt update
sudo apt install -y curl wget gnupg apt-transport-https

3. 内核参数

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system

二、安装 Kubernetes(containerd)

1. 安装 containerd

sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd

2. 安装 kubeadm / kubelet / kubectl

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/k8s.gpg

echo "deb https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | 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

3. 初始化 Master

sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4. 安装网络插件(Flannel)

kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

三、K8s 存储部署方案(重点)

方案 1:本地存储(最简单,适合测试)

使用 emptyDir / hostPath

volumes:
  - name: data
    hostPath:
      path: /data

⚠️ 不适合生产


方案 2:Local PV(Debian 本地磁盘)

1. 准备磁盘

mkfs.ext4 /dev/sdb
mkdir /mnt/localpv
mount /dev/sdb /mnt/localpv

2. 创建 StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

3. 创建 PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
spec:
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /mnt/localpv
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - node1

方案 3:NFS(多节点共享,最常用)

1. Debian 上安装 NFS

sudo apt install -y nfs-kernel-server
sudo mkdir -p /srv/nfs
echo "/srv/nfs *(rw,sync,no_subtree_check)" | sudo tee /etc/exports
sudo exportfs -ra

2. 安装 NFS CSI

kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/install-driver.sh

3. StorageClass

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage
provisioner: nfs.csi.k8s.io
parameters:
  server: 192.168.1.10
  share: /srv/nfs

方案 4:Ceph / Rook(生产级分布式存储)

适合多节点、高可用

kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/crds.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/common.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/operator.yaml
kubectl apply -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/cluster.yaml

四、验证存储

kubectl get sc
kubectl get pv
kubectl get pvc

五、推荐组合(实战)

场景 推荐
测试 hostPath / Local PV
小集群 NFS
生产 Rook-Ceph
云 云厂商 CSI

如果你愿意,我可以:

  • ✅ 给你 完整一键脚本
  • ✅ 按 单节点 / 多节点 定制
  • ✅ 指定 Debian 版本 + K8s 版本

直接告诉我你的使用场景即可。

0 踩