天天看點

Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲

背景介紹

在Kubernetes中卷的作用在于提供給POD

存儲

,這些存儲可以挂載到POD中的容器上,進而給容器提供存儲。

Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲

從圖中可以看到結構體PodSpec有個屬性是Volumes,通過這個Volumes屬性可以關聯到結構體Volume和結構體VolumeSource,而且這個Volumes屬性是一個數組類型,就是說POD可以關聯到多個不同類型的卷上面。

結構體Container表示POD中的容器,這個結構體有一個屬性VolumeMounts,通過這個屬性讓容器知道具體挂載的存儲路徑,這個VolumeMounts屬性也是一個數組類型,就是說容器可以挂載多個存儲路徑。

在Kubernetes中還提供了一種持久化存儲,持久化存儲就是PersistentVolume,簡稱PV,PV是獨立于Pod的生命周期單獨存在的。

Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲

從圖中可以看到kubernetes1.7中提供了兩種新的PV插件,分别是StorageOS和Local。

新的卷插件

Kubernetes1.7現在一共支援27種卷插件,(1、

kubernetes1.5新特性:支援Photon卷插件

2、

kubernetes1.4新特性:支援兩種新的卷插件Quobyte和AzureDisk

3、

Kubernetes 中的 StorageClass 和動态卷供給

)其中在Kubernetes1.7中又增加了一種新的卷插件StorageOS。

Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲

StorageOS

StorageOS是一家英國的初創公司,給無狀态容器提供簡單的自動塊存儲、狀态來運作資料庫和其他需要企業級存儲功能,但避免随之而來的複雜性、剛性以及成本。

它在Linux系統中作為一個容器運作,為其他容器提供插件使用,使其輕松地對有狀态的存儲服務進行程式設計通路。它是無關于底層平台的裸機、容器化的服務、虛拟化的伺服器或者雲。該公司稱,StorageOS這款産品是一款門檻極低、擁有完整的企業級功能的存儲陣列,與VMware、

Docker

、AWS以及Google Cloud進行了內建。

StorageOS目前專注于容器是因為這是最大的機會所在。在容器領域,它有四個重點領域:

1、有狀态的容器,用于資料庫和高速資料庫恢複

2、安全雲移動性,降低成本

3、性能加速和卷管理

4、持續應用內建和傳遞

下圖是StorageOS目前架構圖:

Kubernetes(k8s)v1.7新特性 新增StorageOS卷插件與Local持久存儲

新的PV卷插件

Kubernetes1.7現在一共支援20種PV卷插件,其中在

Kubernetes1.7

中又增加了兩種新的卷插件:StorageOS和Local。

Kubernetes(k8s)v1.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持久存儲