一、服务器资源
资源名称 | IP |
NFS server | 47.97.112.208 |
k8s master node | 192.168.132.64 |
k8s cluster node | 192.168.132.63 |
二、安装NFS服务端
192.168.132.64,192.168.132.63均执行:
yum install nfs-utils rpcbind -y
验证nfs是否可用:
四、nfs结合pv、pvc使用
PersistentVolumes,是k8s抽象化的存储资源,主要包括存储能力、访问模式、存储类型、回收策略等关键信息.PV是k8s实际对接存储后端的真正入口。
kubernetes使用NFS共享存储有两种方式:
#手动方式静态创建所需要的PV和PVC;
#通过创建PVC动态地创建对应PV,无需手动创建PV。
我这里使用第一种方式。
1.创建PV
vim pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfspv1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
nfs:
path: /home/ydxc
server: 47.97.112.208
配置说明:
① capacity 指定 PV 的容量为 1G。
② accessModes 指定访问模式为 ReadWriteOnce,支持的访问模式有:
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载;
ReadOnlyMany(ROX):只读权限,可以被多个节点挂载;
ReadWriteMany(RWX):读写权限,可以被多个节点挂载;
③ persistentVolumeReclaimPolicy 指定当 PV 的回收策略为 Recycle,支持的策略有:
Retain(保留)- 保留数据,不会再分配给pvc,需要管理员手工清理数据;
Recycle(回收)- 清除 PV 中的数据,保留pv资源,可以留供其他pvc使用;
Delete(删除)- 删除整个pv资源及内部的数据;
④ storageClassName 指定 PV 的 class 为 nfs。相当于为 PV 设置了一个分类,PVC 可以指定 class 申请相应 class 的 PV。
⑤ 指定 PV 在 NFS 服务器上对应的目录。
kubectl apply -f pv.yaml
2.创建PVC,通过挂载PVC使用PV
vim pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
kubectl apply -f pvc.yaml
3.打包springboot项目为镜像
将镜像上传到dockerHub,方法:
vim ydxc.yaml
apiVersion: v1
kind: Service
metadata:
name: ydxc-service
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30010
selector:
app: ydxc
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ydxc-web
spec:
replicas: 3
template:
metadata:
labels:
app: ydxc
spec:
containers:
- name: ydxc
image: finley23/ydxcds:v1.0
ports:
- containerPort: 8080
volumeMounts:
- name: pv1
mountPath: /home/ydxc
volumes:
- name: pv1
persistentVolumeClaim:
claimName: pvc1
kubectl apply -f ydxc.yaml
查看pod,svc:
所有pod状态均为Running,说明应用部署成功了。
查看pod日志:
kubectl describe pod ydxc-web-688457d5b9-6p7z6
查看容器日志:
kubectl logs ydxc-web-688457d5b9-6p7z6 -c ydxc
测试接口:
curl 192.168.132.64:30010/yn/save?fd=530000
参考资料:
K8S中使用nfs - 简书环境信息 三台机器,操作系统CentOS 7.4:hanyu-210 10.20.0.210hanyu-211 10.20.0.211hanyu-212 10.20.0...https://www.jianshu.com/p/65ed4bdf0e89blog_demos/k8spvdemofiles at master · zq2599/blog_demos · GitHubhttps://github.com/zq2599/blog_demos/tree/master/k8spvdemofiles