1. 程式人生 > >kubernetes1.7新特性:新增StorageOS卷外掛和Local持久儲存

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的支援。