Bootstrap

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
;