一、配置nfs共享目录
所有节点都需要安装nfs,并在nfs服务端创建共享目录
yum install -y nfs-common nfs-utils
mkdir /nfsdata
chmod 666 /nfsdata
编辑exports文件,如果后续再扩展需要重启nfs
vim /etc/exports
/nfsdata *(rw,no_root_squash,no_all_squash,sync)
启动rpc和nfs(注意顺序)
systemctl start rpcbind
systemctl start nfs
在客户端测试是否可以挂载
mkdir /test
mount -t nfs 192.168.32.142:/nfsdata /nfs-test/ #如果挂载不成功重启rpc与nfs
df -Th|grep "/nfs-test"
touch /nfs-test/john.txt
ls /nfsdata #server端查看是否存在
二、创建PV
编辑PV yaml文件在k8s master节点
vim nfs-pv1.yml
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: mypv1
spec:
capacity:
storage: 1Gi #磁盘空间大小
accessModes:
- ReadWriteOnce #单pod可读写,挂载访问模式
persistentVolumeReclaimPolicy: Recycle #回收pv策略
storageClassName: nfs #设置PV的class的分类
nfs:
path: /nfsdata #挂载的目录
server: 192.168.32.142 #nfs所在IP
kubectl apply -f nfs-pv1.yml
三、创建PVC
编辑PVC yaml文件
vim nfs-pvc1.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mypvc1
spec:
accessModes:
- ReadWriteOnce #指定PV的访问模式
resources:
requests:
storage: 1Gi #指定PV的容量
storageClassName: nfs #指定PV的class类
kubectl apply -f nfs-pvc1.yml
四、创建pod
vim pod1.yml
apiVersion: v1
kind: Pod
metadata:
name: mypod1
labels:
app: john
spec:
containers:
- name: mypod1
image: daocloud.io/library/nginx:1.12.0-alpine
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: nginx-web
volumes:
- name: nginx-web
persistentVolumeClaim: #指定PVC
claimName: mypvc1
五、验证
kubectl exec -it mypod1 /bin/sh
ls /usr/share/nginx/html
echo "jayzhou yyds" > /usr/share/nginx/html/index.html
ctrl p+q
cat /nfsdata/index.html
#测试可否访问,如果返回403给发布目录对应的权限即可
curl 10.244.1.48