常用持久化存储
emptyDir
hostPath
nfs
persistenVolumeClaim
glusterfs
cephfs
configMap
secret
volumes 释疑地址
[root@k8smaster4 ~]# kubectl explain pods.spec.volumes
https://kubernetes.io/docs/concepts/storage/volumes#emptydir
持久化存储配置步骤
1. 定义pod 中的 volume,这个volume指明它需要关联到哪个存储
2. 在容器中要使用volumemounts 挂载对应的存储
emptyDir
emptyDir 类型的Volume是在Pod分配到Node上时创建,Kubernetes 会在Node上
自动分配一个目录。目录初始内容为空,当Pod从Node移除时,emptyDir中的数据会被
永久删除。
实例Yaml
[root@k8smaster4 dir]# cat emptydir.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-empty
spec:
containers:
- name: container-empty
image: docker.io/library/nginx
imagePullPolicy: IfNotPresent
volumeMounts:
- name: cache-volume
mountPath: /cache ### 关联容器目录
volumes:
- emptyDir: {} ### 宿主机生成目录
name: cache-volume
查看Yaml 结果
[root@k8smaster4 dir]# kubectl describe pod pod-empty
查看emptyDir 位置
* 查看结果Yaml,获取UID
[root@k8smaster4 dir]# kubectl get pods pod-empty -o yaml
apiVersion: v1
kind: Pod
metadata:
annotations:
cni.projectcalico.org/podIP: 10.244.187.34/32
cni.projectcalico.org/podIPs: 10.244.187.34/32
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"pod-empty","namespace":"default"},"spec":{"containers":[{"image":"docker.io/library/nginx","imagePullPolicy":"IfNotPresent","name":"container-empty","volumeMounts":[{"mountPath":"/cache","name":"cache-volume"}]}],"volumes":[{"emptyDir":{},"name":"cache-volume"}]}}
creationTimestamp: "2023-02-06T15:37:23Z"
name: pod-empty
namespace: default
resourceVersion: "4002708"
uid: 676a6678-ddf7-4a0b-bdf7-17e2a90dec0b
* 查看Pod调度的Node
[root@k8smaster4 dir]# kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-empty 1/1 Running 0 14m 10.244.187.34 k8snode5 <none> <none>
* 通过UID,查询调度的Node临时目录emptyDir
[root@k8snode5 ~]# tree /var/lib/kubelet/pods
├── 676a6678-ddf7-4a0b-bdf7-17e2a90dec0b
│ ├── containers
│ │ └── container-empty
│ │ └── 845127dd
│ ├── etc-hosts
│ ├── plugins
│ │ └── kubernetes.io~empty-dir
│ │ ├── cache-volume
│ │ │ └── ready
│ │ └── wrapped_kube-api-access-2d8j9
│ │ └── ready
│ └── volumes
│ ├── kubernetes.io~empty-dir
│ │ └── cache-volume
│ └── kubernetes.io~projected
│ └── kube-api-access-2d8j9
│ ├── ca.crt -> ..data/ca.crt
│ ├── namespace -> ..data/namespace
│ └── token -> ..data/token
[root@k8snode5 ~]# tree /var/lib/kubelet/pods/676a6678-ddf7-4a0b-bdf7-17e2a90dec0b
查看宿主机临时目录
[root@k8snode5 ~]# cd /var/lib/kubelet/pods/676a6678-ddf7-4a0b-bdf7-17e2a90dec0b
[root@k8snode5 676a6678-ddf7-4a0b-bdf7-17e2a90dec0b]# ls
containers etc-hosts plugins volumes
[root@k8snode5 kubernetes.io~empty-dir]# ls
cache-volume
[root@k8snode5 kubernetes.io~empty-dir]# pwd
/var/lib/kubelet/pods/676a6678-ddf7-4a0b-bdf7-17e2a90dec0b/volumes/kubernetes.io~empty-dir
查看容器目录
[root@k8smaster4 dir]# kubectl exec -it pod-empty -c container-empty -- /bin/bash
root@pod-empty:/# cd /cache