helm repo add sig-storage-local-static-provisioner https://kubernetes-sigs.github.io/sig-storage-local-static-provisioner
修改:
classes:
- name: host # Defines name of storage classes.修改成storage-class的名称
# Path on the host where local volumes of this storage class are mounted
# under.
hostDir: /data/static/volumn
安装provider:
helm upgrade --install host-volume . -n host-volume --create-namespace
[root@node03 local-static-provisioner]# kubectl -n host-volume get pod -owide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
host-volume-local-static-provisioner-b6mhl 1/1 Running 0 69m 10.244.226.106 node03.bonc.com <none> <none>
host-volume-local-static-provisioner-drsb7 1/1 Running 0 69m 10.244.109.39 node02.bonc.com <none> <none>
创建一个storageclass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: host
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
# Supported policies: Delete, Retain
reclaimPolicy: Delete
挂载目录 因上面配置的挂载目录为/data/static/volume,因此需要在/data/static/volume创建一个目录,比如pv1,然后将/dev/vg1/k8s-volume挂载到/mnt/fast-disks/pv1,/data/static/volume目录下的每一个挂载点都会自动生成为一个pv,挂载之后使用kubectl get pv查看 在某个节点上面创建几个pv
for i in {01..100}
do
vol="vol$i"
echo $vol
mkdir /data/static/volume/$vol
mount -t tmpfs $vol /data/static/volume/$vol
done
会在集群中出现如下的pv
[root@node03 bak]# kubectl get pv
local-pv-1e9f487 31Gi RWO Delete Available host 28s
local-pv-3da07ade 31Gi RWO Delete Bound host-volume/host-pvc host 34m
local-pv-47bdbac4 31Gi RWO Delete Available host 28s
local-pv-5a1d9371 31Gi RWO Delete Available host 28s
local-pv-708a03f8 31Gi RWO Delete Available host 34m
local-pv-c453c05d 31Gi RWO Delete Available host
创建pvs和pod
[root@node03 bak]# cat pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: host-pvc
namespace: host-volume
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: host
[root@node03 bak]# cat pod.yaml
kind: Pod
apiVersion: v1
metadata:
name: mypod
namespace: host-volume
spec:
# nodeSelector:
#kubernetes.io/hostname: node02.bonc.com
containers:
- name: myfrontend
image: nginx:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: "/data"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: host-pvc