k8s pv pvc的介绍|动态存储|静态存储
1 emptyDir存储卷
当Pod被分配给节点时,首先创建emptyDir卷,并且只要该Pod在该节点上运行,该卷就会存在。正如卷的名字所述,它最初是空的。Pod 中的容器可以读取和写入emptyDir卷中的相同文件,尽管该卷可以挂载到每个容器中的相同或不同路径上。当出于任何原因从节点中删除 Pod 时,emptyDir中的数据将被永久删除。
mkdir /opt/volumes
cd /opt/volumes
vim pod-emptydir.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-emptydir
labels:
app: myapp
spec:
containers:
- name: myapp
image: soscscs/myapp:v1
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
volumeMounts:
- name: ck
mountPath: /usr/share/nginx/html/
- name: busybox
image: busybox:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: ck
mountPath: /data/
command:
- /bin/sh
- -c
- while true;do echo $(date) >> /data/index.html;sleep 3;done
volumes:
- name: ck
emptyDir: {
}
kubectl apply -f pod-emptydir.yaml
kubectl get pods -o wide
2 在上面定义了2个容器,其中一个容器是输入日期到index.html中,然后验证访问nginx的html是否可以获取日期。以验证两个容器之间挂载的emptyDir实现共享。
curl 10.244.1.5
2 hostPath存储卷
hostPath卷将 node 节点的文件系统中的文件或目录挂载到集群中。
hostPath可以实现持久存储,但是在node节点故障时,也会导致数据的丢失。
1 在 node01 节点上创建挂载目录
mkdir -p /data/pod/volume1
echo 'node01.kgc.com' > /data/pod/volume1/index.html
2 在 node02 节点上创建挂载目录
mkdir -p /data/pod/volume1
echo 'node02.kgc.com' > /data/pod/volume1/index.html
3 创建 Pod 资源
vim pod-hostpath.yaml
kubectl apply -f pod-hostpath.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-hostpath
spec:
containers:
- name: myapp
image: soscscs/myapp:v1
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: false
volumes:
- name: html
hostPath:
path: /data/pod/volume1
type: Directory
4 访问测试
kubectl get pods -o wide
5 curl
3 nfs共享存储卷
1 在stor01节点上安装nfs,并配置nfs服务
mkdir /data/volumes -p
chmod 777 /data/volumes
vim /etc/exports
/data/volumes 192.168.10.0/24(rw,no_root_squash)
systemctl start rpcbind
systemctl start nfs
showmount -e
Export list for stor01:
/data/volumes 192.168.10.0/24
2 在node01和node02上操作
实现ip映射
echo '192.168.10.40 stor01' >> /etc/hosts
3 master节点操作
vim pod-nfs-vol.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-vol-nfs
spec:
containers:
- name: myapp
image: soscscs/myapp:v1
volumeMounts:
- name: html-nfs
mountPath: /usr/share/nginx/html
volumes:
- name: html-nfs
nfs:
server: stor01
path: /data/volumes
kubectl apply -f pod-nfs-vol.yaml
1 在nfs服务器上创建index.html
cd /data/volumes
vim index.html