k8s使用nfs持久化数据
nfs是们常用的远程存储,这里记录下k8s安装nfs
部署nfs服务器
安装nfs工具
yum -y install nfs-utils systemctl start nfs systemctl enable nfs
创建nfs的目录
mkdir -p /data/nfs/ chmod -R 777 /data/nfs# 设置共享目录echo /data/nfs *(rw,no_root_squash,sync) /etc/exports# 应用配置exportfs -r# 查看配置exportfs
启动nfs服务
systemctl restart rpcbind systemctl enable rpcbind systemctl restart nfs systemctl enable nfs# 查看 RPC 服务的注册状况rpcinfo -p localhost# 测试一下showmount -e 192.168.32.133
k8s安装nfs驱动
官方仓库https://github /kubernetes-csi/csi-driver-nfs
官方默认的镜像在国内是无法访问,需要转储到国内的仓库里,建议找台香港的机器或者科学上网
registry.k8s.io/sig-storage/csi-provisioner:v3.2.0 registry.k8s.io/sig-storage/livenessprobe:v2.7.0 registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.5.1 gcr.io/k8s-staging-sig-storage/nfsplugin:canary
在线安装
curl -skSL https://raw.githubusercontent /kubernetes-csi/csi-driver-nfs/master/deploy/install-driver.sh | bash -s master --
本地安装
git clone https://github /kubernetes-csi/csi-driver-nfs.gitcd csi-driver-nfs ./deploy/install-driver.sh master local
git clone https://github /kubernetes-csi/csi-driver-nfs.gitcd csi-driver-nfs ./deploy/install-driver.sh master local
等待所有pod running
kubectl -n kube-system get pod |grep nfs
部署存储类对象
cat <<EOF nfs-cs.ymlapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs parameters: server: 192.168.32.133 # nfs服务器地址 share: /data/nfs # nfs共享的目录 provisioner: nfs.csi.k8s.io reclaimPolicy: Delete volumeBindingMode: Immediate EOFkubectl apply -f nfs-cs.yml
# 将nfs-csi 设置为默认存储类kubectl patch storageclass nfs-csi -p 39;{ metadata : { annotations :{ storageclass.kubernetes.io/is-default-class : true }}} 39;
测试部署
静态pv
---apiVersion: v1kind: PersistentVolumemetadata: name: pv-nfsspec: capacity: storage: 10Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-csi mountOptions: - nfsvers=3 csi: driver: nfs.csi.k8s.io readOnly: false volumeHandle: unique-volumeid # make sure it 39;s a unique id in the cluster volumeAttributes: server: 192.168.32.133 share: /data/nfs---kind: PersistentVolumeClaimapiVersion: v1metadata: name: pvc-nfs-staticspec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-nfs storageClassName: nfs-csi---apiVersion: v1kind: Podmetadata: name: nginxspec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - name: test mountPath: /data volumes: - name: test persistentVolumeClaim: claimName: pvc-nfs-static