数据卷emptydir,是本地存储,pod重启,数据就不存在了,需要对数据持久化存储。
nfs网络存储
pod重启,数据还存在
找一台服务器作为nfs服务端。
安装nfs:
yum install -y nfs-utils
设置挂载路径
vi /etc/exports
/data/nfs *(rw,no_root_squash)
创建挂载路径
mkdir /data/nfs
在k8s集群node节点安装nfs
yum install -y nfs-utils
在nfs服务端启动nfs
systemctl start nfs
ps -ef | grep nfs
在k8s集群部署应用使用nfs持久化网络存储
vi nfs-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 1
selector:
matchLabels:
app: nginx
temlpate:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server:
path: /data/nfs
kubectl apply -f nfs-nginx.yaml
kubectl exec -it nginx-dep1-xxx
cd /usr/share/nginx/html
kubectl expose delpoyment nginx-dep1 --port=80 --target-port=80 --type=NodePort
kubectl get svc
PV和PVC
PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方(生产者)
PVC:不需要关心内部实现细节,用于调用(消费者)
pvc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
persistentVolumeClaim:
claimName: my-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
kubectl apply -f pvc.yaml
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /k8s/nfs
server:
kubectl apply -f pv.yaml