一、pv
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv-local
labels:
type: test
spec:
capacity:
storage: 1Gi
volumeMode: Filesystem
storageClassName: test-ocal
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
local:
path: /Users/chenjiahao/docker/k8s/volume
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
二、pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-pvc
spec:
storageClassName: test-ocal
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
三、pvc
apiVersion: apps/v1
kind: DaemonSet
metadata:
# 部署名字
name: nginx
spec:
# 用来查找关联的 Pod,所有标签都匹配才行
selector:
matchLabels:
app: nginx
# 定义 Pod 相关数据
template:
metadata:
labels:
app: nginx
spec:
# 定义容器,可以多个
containers:
- name: nginx # 容器名字
image: nginx:latest # 镜像
ports:
- name: http
containerPort: 80
volumeMounts:
- mountPath: /var/log/nginx/
name: test-volume
volumes:
- name: test-volume
persistentVolumeClaim:
claimName: test-pvc
总结
pv使用本地目录存储需要指定匹配的节点,当k8s创建pod的时候会自动把pod创建在pv指定的节点上面,这里和hostPath的区别在于,使用hostPath的时候需要在创建pod的时候指定节点。