之前在学习 storageclass 的时候使用过 nfs-client 的外部存储,原文地址:Kubernetes-StorageClass-动态供给
当时有个 bug,需要修改 apiserver 静态 pod 的配置,今天我使用 1.24.0 的 k8s 集群部署时,仍然有这个 bug,根据当时的方法已经无法解决了,所有找了另一个 nfs 外部存储的方法,项目地址:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner 大概看了一下,和之前的如出一辙,就是迁移了继续更新而已。
每个 k8s 节点都要安装 nfs-utils
NFS 搭建
yum -y install nfs-utils rpcbind && \
mkdir /nfsdata && \
echo "nfsdata *(rw,no_root_squash,sync)" >> /etc/exports && \
exportfs -r && \
systemctl enable --now rpcbind nfs-server
HELM 部署
helm 安装参考 Kubernetes-Helm
添加 helm 仓库
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
直接部署nfs-client
helm --install nfs-client nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.1.11 \
--set nfs.path=/nfsdata \
--set replicaCount=3 \
--set image.repository=willdockerhub/nfs-subdir-external-provisioner \
--set storageClass.name=nfs-client \
--set storageClass.defaultClass=true # 开启默认使用的nfs的storageclass
验证查看
$ kubectl get po
NAME READY STATUS RESTARTS AGE
nfs-client-nfs-subdir-external-provisioner-cbdd99cbc-d55wc 1/1 Running 0 10s
nfs-client-nfs-subdir-external-provisioner-cbdd99cbc-jvx2f 1/1 Running 0 10s
nfs-client-nfs-subdir-external-provisioner-cbdd99cbc-mc8dk 1/1 Running 0 10s
$ kubectl get sc -o name
storageclass.storage.k8s.io/nfs-client
验证请跳回 Kubernetes-StorageClass-动态供给 ,我实在不想再写一遍验证了。