hostpath
当pods对磁盘性能要求比较高 不允许网络抖动的情况。
local pv
当数据不能根据pod调度时 让pod根据数据调度。让pod创建的时候 创建到原来的节点上。
创建storageclass.yaml
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer # 设置延迟绑定
# Supported policies: Delete, Reta
reclaimPolicy: Retain # 删除pvc时保留pv 需要手动删除pv
创建localpv.yaml
需要先将vdd磁盘通过fdisk 格式化成ext4格式
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pv
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /dev/vdd1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-worker-0.novalocal
创建pvc localpvc.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: local-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 10Gi
创建测试的pod-http.yaml
---
apiVersion: v1
kind: Pod
metadata:
name: www
labels:
name: www
spec:
containers:
- name: www
image: nginx:latest
ports:
- containerPort: 80
name: www
volumeMounts:
- name: www-persistent-storage
mountPath: /usr/share/nginx/html
volumes:
- name: www-persistent-storage
persistentVolumeClaim:
claimName: local-pvc
local volume manager管理local pv的生命周期
cd /srv/stuy/k201-master/3.Kubernetes容器持久化存储/config/localpv/local-static-provisioner
使用fdisk 分配并格式化磁盘 并挂载vdd1 到/mnt/disks/vdd
mount /dev/vdd1 /mnt/disks/vdd # 这个在provisioner/values.yaml中有用到
通过helm安装provisioner
cd /srv/stuy/k201-master/3.Kubernetes容器持久化存储/config/localpv/local-static-provisioner
helm install local-static-provisioner provisioner
创建statefulset测试
kubectl apply -f local-statefulset.yaml