一、Volume
Volume是pod中能被多个容器访问的共享目录。Kubernetes 中的Volume被pod里的多个容器挂载到具体的文件夹目录下,当容器终止或重启时,Volume中的数据不会丢失。kubernetes支持几种类型的卷:awsElasticBlockStore、azureDisk、azureFile、cephfs、configMap、CSI、downwardAPI、emptyDir、fc(光纤通道)、flexVolume、flocker、gcePersistentDisk、gitRepo(已弃用)、glusterfs、hostPath、iSCSI、local/NFS、persistentVolumeClaim
projected、portworxVolume、quobyte、RBD、caleIO、ecret、torageos、sphereVolume等
AWS EBS示例配置
apiVersion: v1
kind: Pod
metadata:
name: test-ebs
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-ebs
name: test-volume
volumes:
- name: test-volume
# This AWS EBS volume must already exist.
awsElasticBlockStore:
volumeID: <volume-id>
fsType: ext4
configMap
该configMap资源提供了一种将配置数据注入Pod的方法。存储在ConfigMap对象中的数据可以在类型的卷中引用 configMap,然后由在Pod中运行的容器化应用程序使用。
引用configMap对象时,只需在卷中提供其名称即可引用它。您还可以自定义ConfigMap中特定条目的路径。例如,要将log-configConfigMap 挂载到被调用的Pod上
事例:
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod
spec:
containers:
- name: test
image: busybox
volumeMounts:
- name: config-vol
mountPath: /etc/config
volumes:
- name: config-vol
configMap:
name: log-config
items:
- key: log_level
path: log_level
emptyDir
将emptyDirPod分配给节点时首先创建卷,并且只要Pod在该节点上运行,就会存在卷。顾名思义,它最初是空的。Pod中的容器都可以读取和写入卷中的相同文件emptyDir,但该卷可以安装在每个Container中相同或不同的路径中。当出于任何原因从节点中删除Pod时,将emptyDir永久删除其中的数据。
事例:
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
二、Persistent Volumes(PV)
PersistentVolume(PV)是群集中由管理员配置的一块存储。它是集群中的资源,就像节点是集群资源一样。PV是容量插件,如Volumes,但其生命周期独立于使用PV的任何单个pod。此API对象捕获存储实现的详细信息,包括NFS,iSCSI或特定于云提供程序的存储系统。
PersistentVolumeClaim(PVC)是由用户进行存储的请求。它类似于一个吊舱。Pod消耗节点资源,PVC消耗PV资源。Pod可以请求特定级别的资源(CPU和内存)。声明可以请求特定的大小和访问模式
事例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0003
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /tmp
server: 172.17.0.2在这里插入代码片