local PV
文章目錄
- 1. 簡介
- 2. HostPath Volume缺點
- 3.Local PV使用場景
- 4. 實驗
- 5.清理local pv
- 6. 注意事項
1. 簡介
- Kubernetes的Local PV自1.7版本進行alpha發布,在1.10版本beta發布,最終的正式發布(General Availability)是在1.14版本;
- 一個Local PV對應指定節點上的一處本地磁盤空間;
- 相比NFS之類的遠程存儲,Local PV提供了本地IO帶來的更好性能;
2. HostPath Volume缺點
- 因為集群內部節點差異化,使用hostPath volume必須使用NodeSelector等方式進行精確調度
- DirectoryOrCreate和FileOrCreate兩種類型的hostPath,當Node上沒有對應的File/Directory時,你需要保證kubelet有在Node上Create File/Directory的權限
- 如果Node上的文件或目錄是由root創建的,掛載到容器內之后,你通常還要保證容器內進程有權限對該文件或者目錄進行寫入,比如你需要以root用戶啟動進程并運行于privileged容器,或者你需要事先修改好
- Scheduler并不會考慮hostPath volume的大小,hostPath也不能申明需要的storage size,這樣調度時存儲的考慮,就需要人為檢查并保證Node上的文件權限配置。
- StatefulSet無法使用hostPath volume,已經寫好的使用共享存儲的Helm Chart不能兼容hostPath volume
- 用HostPath Volume的時候,既可以在PVC聲明,又可以直接寫到Pod的配置中,但是Local PV只能在PVC聲明,對于PV資源,通常都有專人管理,這樣就避免了Pod開發者擅自使用本地磁盤帶來的沖突和風險;、
- HostPath Volume和Local PV都是在使用本地磁盤,和常見的分布式文件系統相比,本地磁盤故障會導致數據丟失,保存重要數據請勿使用HostPath Volume和Local PV;
3.Local PV使用場景
- 節點上的目錄數據是從遠程網絡存儲上掛載或者預先讀取到本地的,為了能加速Pod讀取這些數據的速度,相當于起Cache作用,這種情況下因為只讀,不存在懼怕數據丟失
- 本地節點上目錄/磁盤實際是具有副本/分片機制的分布式存儲
- Local volume允許掛載本地的disk, partition, directory到容器內某個掛載點。在Kuberentes 1.11仍然僅支持local pv的static provision,不支持dynamic provision
4. 實驗
[root@master01 localpv]# cat localpv-storageclass.yaml kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer[root@master01 localpv]# cat test_localpv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: example-pv spec:capacity: storage: 400MivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: DeletestorageClassName: local-storagelocal:path: /mnt/disk/vol1nodeAffinity:required:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/hostnameoperator: Invalues:- node2[root@master01 localpv]# cat local-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: example-local-claim spec:accessModes:- ReadWriteOnceresources:requests: storage: 300MistorageClassName: local-storage You have new mail in /var/spool/mail/root[root@master01 localpv]# cat localpv-pod.yaml apiVersion: v1 kind: Pod metadata: name: localpv-pod spec:containers:- name: localpv-containerimage: hub.renwoxing.com/library/nginx:latestports: - containerPort: 80name: "http-server"volumeMounts:- mountPath: "/usr/share/nginx/html"name: example-pv-storagevolumes:- name: example-pv-storagepersistentVolumeClaim:claimName: example-local-claim5.清理local pv
a. 刪除pod,或者deployment;
b. 刪除pvc;
c. 刪除Local PV;
6. 注意事項
一共有以下兩種volumeBindingMode:Immediate和WaitForFirstConsumer
總結
- 上一篇: [转bbs]师大女生VS川大女生
- 下一篇: 实力秒杀ArcGIS,各种地图数据一键快