单机k8s集群——本地存储(local)StorageClass
在k8s集群部署应用时,基本都会用到pvc来挂载持久卷,但是我们现在是单节点的k8s,NFS的方法就不太适用,故我们采用创建本地存储(local)StorageClass,手动创建pv来进行匹配
1.现在k8s节点上创建存储文件
mkdir -p /mnt/data
chmod 777 /mnt/data
2.StorageClass
vim local-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner # 本地存储无法动态分配,需手动管理 PV
volumeBindingMode: WaitForFirstConsumer # 延迟绑定,直到 Pod 调度
kubectl apply -f local-storageclass.yaml
kubectl get sc

现在就可以创建一个pv来绑定该StorageClass了
3.PV
vim local-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi # 存储大小
volumeMode: Filesystem
accessModes:
- ReadWriteOnce # 单节点读写
persistentVolumeReclaimPolicy: Retain # 删除 PVC 后保留数据
storageClassName: local-storage # 关联 StorageClass
local:
path: /mnt/data # 节点上的实际路径
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- master # 替换为你的节点名称
kubectl apply -f local-pv.yaml
kubectl get pv

4.PVC
vim local-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: local-storage # 使用 Local StorageClass
kubectl apply -f local-pvc.yaml
kubectl get pvc
状态显示为bound即pvc绑定成功,但是我们这里输出为pending,哪里出错了吗?
其实不是。是因为我们上面在创建storageclass时,选用的策略是WaitForFirstConsumer,当有pod调用时,才回来绑定pvc,我们先往下走创建测试pod,再回来查看pvc

5.创建 Pod 挂载 PVC
vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: nginx
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:alpine
volumeMounts:
- name: local-storage
mountPath: /usr/share/nginx/html
volumes:
- name: local-storage
persistentVolumeClaim:
claimName: local-pvc
kubectl apply -f test-pod.yaml
kubectl get pods

这是我们再查看pvc,它已经从pending状态变为bound状态

6.验证数据持久化
kubectl exec -it test-pod -- sh
echo "Hello, Local Storage!" > /usr/share/nginx/html/test.txt
exit
cat /mnt/data/test.txt
输出Hello,Local Storage!说明部署正确

希望这篇博客能对你提供些许帮助,如果你有任何的问题和建议,欢迎在评论区相互交流。
我们下期再见!
浙公网安备 33010602011771号