1. 程式人生 > >Kubernetes(k8s)v1.7新特性 新增StorageOS卷外掛與Local持久儲存_Kubernetes中文社群

Kubernetes(k8s)v1.7新特性 新增StorageOS卷外掛與Local持久儲存_Kubernetes中文社群

背景介紹

在Kubernetes中卷的作用在於提供給POD儲存,這些儲存可以掛載到POD中的容器上,進而給容器提供儲存。

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

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

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

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

新的卷外掛

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新特性系列 | 動態配置和儲存  2、 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的支援。