背景介紹
在Kubernetes中卷的作用在于提供給POD
存儲,這些存儲可以挂載到POD中的容器上,進而給容器提供存儲。

從圖中可以看到結構體PodSpec有個屬性是Volumes,通過這個Volumes屬性可以關聯到結構體Volume和結構體VolumeSource,而且這個Volumes屬性是一個數組類型,就是說POD可以關聯到多個不同類型的卷上面。
結構體Container表示POD中的容器,這個結構體有一個屬性VolumeMounts,通過這個屬性讓容器知道具體挂載的存儲路徑,這個VolumeMounts屬性也是一個數組類型,就是說容器可以挂載多個存儲路徑。
在Kubernetes中還提供了一種持久化存儲,持久化存儲就是PersistentVolume,簡稱PV,PV是獨立于Pod的生命周期單獨存在的。
從圖中可以看到kubernetes1.7中提供了兩種新的PV插件,分别是StorageOS和Local。
新的卷插件
Kubernetes1.7現在一共支援27種卷插件,(1、
kubernetes1.5新特性:支援Photon卷插件2、
kubernetes1.4新特性:支援兩種新的卷插件Quobyte和AzureDisk3、
Kubernetes 中的 StorageClass 和動态卷供給)其中在Kubernetes1.7中又增加了一種新的卷插件StorageOS。
StorageOS
StorageOS是一家英國的初創公司,給無狀态容器提供簡單的自動塊存儲、狀态來運作資料庫和其他需要企業級存儲功能,但避免随之而來的複雜性、剛性以及成本。
它在Linux系統中作為一個容器運作,為其他容器提供插件使用,使其輕松地對有狀态的存儲服務進行程式設計通路。它是無關于底層平台的裸機、容器化的服務、虛拟化的伺服器或者雲。該公司稱,StorageOS這款産品是一款門檻極低、擁有完整的企業級功能的存儲陣列,與VMware、
Docker、AWS以及Google Cloud進行了內建。
StorageOS目前專注于容器是因為這是最大的機會所在。在容器領域,它有四個重點領域:
1、有狀态的容器,用于資料庫和高速資料庫恢複
2、安全雲移動性,降低成本
3、性能加速和卷管理
4、持續應用內建和傳遞
下圖是StorageOS目前架構圖:
新的PV卷插件
Kubernetes1.7現在一共支援20種PV卷插件,其中在
Kubernetes1.7中又增加了兩種新的卷插件:StorageOS和Local。
Local Storage
Local Storage就是Kubernetes叢集中每個節點的本地存儲,在Kubernetes1.7中kubelet可以支援對kube-reserved和system-reserved指定本地存儲資源,這在1.7中是一個α特性。(參考:1、
Kubernetes 1.6新特性系列 | 動态配置和存儲類 Kubernetes存儲機制的實作)
通過上面的這個新特性可以看出來,Local Storage同HostPath的差別在于對Pod的排程上,使用Local Storage可以由Kubernetes自動的對Pod進行排程,而是用HostPath隻能人工手動排程Pod,因為Kubernetes已經知道了每個節點上kube-reserved和system-reserved設定的本地存儲限制。
下面是一個使用Local Storage的樣例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
annotations: "volume.alpha.kubernetes.io/node-affinity": '{
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms":[
{"matchExpressions": [
{ "key":"kubernetes.io/hostname",
"operator":"In",
"values":["example-node"]
}
]}
]}
}'
spec:
capacity:
storage: 100Gi
accessModes: -ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /mnt/disks/ssd1
總結
Kubernetes1.7一共支援27種卷插件,如果算上PV中的LocalStorage類型,那麼實際上就達到了28種類型。從這些卷插件就可以看出Kubernetes社群參與廠家越來越多了,這27種卷插件可以覆寫Google Compute Engine公有雲、Amazon WebService公有雲、Microsoft Azure公有雲、基于OpenStack的公有雲、基于VMware vSphere的私有雲,可以看出來,Kubernetes的影響力在擴大,将來一定會有更多廠商提供對Kubernetes的支援。
本文轉自中文社群-
Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲