Nfs Provider
前言
本文介绍如何使用 nfs 网络存储为 kubernetes 提供动态的PV创建。
本文使用的环境
| 操作系统 | 主机IP | 数据存储目录 |
|---|---|---|
| Ubuntu-Server 22.04 | 172.16.0.119/24 | /data/nfs |
部署
step1. 在宿主机部署 NFS 服务
sudo apt update
# 服务端
sudo apt install nfs-kernel-serverstep2. 创建共享目录
创建目录/data/nfs
mkdir -p /data/nfsstep3. 宿主机配置 NFS export
echo -e "/data/nfs\t172.16.0.119/24(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports配置完成后重启 nfs server
sudo systemctl restart nfs-kernel-serverstep4. 测试 nfs 服务可用
/sbin/showmount -e 172.16.0.119部署 NFS Provider
使用helm 部署
helm upgrade --install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=172.16.0.119 \
--set nfs.path=/data/nfs \
--set storageClass.onDelete=true \
--set image.repository=registry.cn-hangzhou.aliyuncs.com/linuzb/nfs-subdir-external-provisionernfs.server使用部署 nfs 的宿主机ip,本文是172.16.0.119nfs.path使用部署 nfs 的宿主机共享目录,本文是/data/nfs
使用
获取 storageClass 名字
kubectl get sc创建 pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 3Gi其中
storageClassName使用的就是 nfs 的 storageclass 名字nfs-client
pod 挂载 pvc
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage对 Pod 而言,PersistentVolumeClaim 就是一个存储卷。