Volumes 详解
常见卷类型
- ConfigMap
- emptyDir
- Local
- NFS
- Secret
搭建NFS
安装nfs-server
安装nfs-server
bash
#安装nfs-server
yum -y install nfs-utils
echo "/nfs/data *(insecure,rw,sync,no_root_squash)" >/etc/exports
mkdir -p /nfs/data
# 启动服务
systemctl enable rpcbind --now
systemctl enable nfs-server --now
# 配置生效
exportfs -r
exportfs
配置nfs-client
bash
showmount -e master
mkdir -p /nfs/data
mount -t nfs master:/nfs/data /nfs/data
NFS方式数据挂载
nginx-pod-volumes.yaml 注意创建nfs文件夹
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-volume-demo
name: nginx-volume-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-volume-demo
template:
metadata:
labels:
app: nginx-volume-demo
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html
name: html
volumes:
- name: html
nfs:
path: /nfs/data/nginx-volume-demo
server: master
PV & PVC
创建PV
yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfs/data/volume # 目录名称
server: master # ip地址
示例 创建3个目录
bash
mkdir -p /nfs/data/01 /nfs/data/02 /nfs/data/03
创建PV资源
yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv-01
spec:
capacity:
storage: 10m
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfs/data/01 # 目录名称
server: master # ip地址
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv-02
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfs/data/02 # 目录名称
server: master # ip地址
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv-03
spec:
capacity:
storage: 3Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs
nfs:
path: /nfs/data/03 # 目录名称
server: master # ip地址
查看pv
bash
kubectl get pv
申请pvc
pvc.yaml
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 200Mi
storageClassName: nfs
查看pvc
可以查看到分配的pc
bash
kubectl get pvc
创建deploy静态提供
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-delpoy-pvc
name: nginx-deploy-pvc
spec:
replicas: 2
selector:
matchLabels:
app: nginx-deploy-pvc
template:
metadata:
labels:
app: nginx-deploy-pvc
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html
name: html
volumes:
- name: html
persistentVolumeClaim:
claimName: nginx-pvc