kubernetes1.7新特性:新增StorageOS卷外掛和Local持久儲存
背景介紹
在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種卷外掛,其中在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中是一個α特性。
通過上面的這個新特性可以看出來,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的支援。