真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

kubernetes對象Volume用法詳解

服務(wù)器

概述

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供深州網(wǎng)站建設(shè)、深州做網(wǎng)站、深州網(wǎng)站設(shè)計、深州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、深州企業(yè)網(wǎng)站模板建站服務(wù),10余年深州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

Volume是對各種存儲資源的抽象、虛擬化。為管理、控制、使用存儲資源提供統(tǒng)一接口。Openstack中的volume為虛擬機提供存儲,Docker中的volume為容器提供存儲。因為在kubernetes中可部署運行最小單位是pod ,所以kubernetes的volume為pod提供存儲。當然在部署pod時可以不為其提供volume,pod中的容器使用所在節(jié)點的硬盤,能同時讀寫數(shù)據(jù)的地方稱為可讀寫層。這種存儲是容器級的臨時存儲,不是pod級。其生命周期與容器相同,如果容器crash后被重啟,也就是舊容器被刪除而新容器啟動,則舊容器的可讀寫層與容器一起被刪除,其上數(shù)據(jù)丟失。同理如果pod在節(jié)點之間遷移調(diào)度,容器的可讀寫層并不會遷移調(diào)度。因此,kubernetes需要提供pod級volume,本文中的volume特指kubernetes。

Volume類型

Volume是抽象概念,有很多種具體實現(xiàn),每種實現(xiàn)各具目的、特點、特性。差不多什么東西都可以當成volume,類型如下:

awsElasticBlockStore azuRedisk azureFile cephfs configMap csi downwardAPI emptyDir fc (fibre channel) flocker gcePersistentDisk gitRepo (deprecated) glusterfs hostPath iscsi local nfs persistentVolumeClaim projected portworxVolume quobyte rbd scaleIO secret storageos vsphereVolume 這里不對以上所有類型一一介紹,只對目前可能會用到的本地磁盤存儲和分布式存儲做簡單介紹說明

常見存儲類型說明及示例

cephfs

cephfs是一款優(yōu)秀、流行的云環(huán)境存儲解決方案,原因是它開源、高可用、彈性伸縮,對操作系統(tǒng)、硬件無特殊要求,用戶很容易搭建,使用它的節(jié)點也無特別要求。它具備awsElasticBlockStore陳述之所有特點,并且單個voluem可以被多個節(jié)點同時使用。用戶首先搭建自己的cephfs環(huán)境,然后配置kubernetes集群與其對接,最后在pod中使用其提供的volume,詳細參考這里。

configMap

用戶首先創(chuàng)建configMap并創(chuàng)建數(shù)據(jù)保存其中,此時數(shù)據(jù)保存在kubernetes的etcd數(shù)據(jù)庫中,volume還不存在。當用戶在pod中引用創(chuàng)建的configMap時,系統(tǒng)首先在節(jié)點上創(chuàng)建volume并將數(shù)據(jù)保存其中,這個volume占用的是節(jié)占的存儲空間。此后就可以像使用普通volume一樣使用它。

configMap是kubernetes中的一種對象類型,核心本質(zhì)是以volume的方式將單獨管理的配置信息傳遞給pod中的容器,并非用來存儲持久化數(shù)據(jù)。詳細參考這里。

downwardAPI

與configMap類似,以volume的方式向pod中的容器傳遞信息。configMap中的信息由用戶在創(chuàng)建對象時傳遞,而downwardAPI的信息就來自pod對象本身,downwardAPI不需要創(chuàng)建,它是pod Spec中的一個字段,內(nèi)容指向pod對象本身的其它字段,如pod的metadata、image等信息。在創(chuàng)建pod時系統(tǒng)首先將指向的字段提取出來,然后創(chuàng)建volume并保存提取出來的字段并掛載,容器就可以讀取這些字段了。

downwardAPI的目的是為將pod本身的字段信息如label、annotation等傳遞給容器的一種手段。詳細參考這里。

emptyDir

在節(jié)點上運行pod實例時才會創(chuàng)建emptyDir volume。它首先是節(jié)點上的一個空目錄,pod中的任何容器都可以用volume的形式掛載使用它。如果容器因為某種原因被刪除并重新啟動,創(chuàng)建的emptyDir不會刪除也不會被清空。當pod實例離開節(jié)點調(diào)度到其它節(jié)點或因為縮容被刪除時,emptyDir被刪除,相當于pod還在但數(shù)據(jù)丟了。示例:

apiVersion: v1
kind: Pod
metadata:
 name: test-pd
spec:
 containers:
 - image: k8s.gcr.io/test-webserver
  name: test-container
  volumeMounts:
  - mountPath: /cache
   name: cache-volume
 volumes:
 - name: cache-volume
  emptyDir: {}

glusterfs

與cephfs一樣,流行的云環(huán)境下的存儲解決方案

hostPath

apiVersion: v1
kind: Pod
metadata:
 name: test-pd
spec:
 containers:
 - image: k8s.gcr.io/test-webserver
  name: test-container
  volumeMounts:
  - mountPath: /test-pd
   name: test-volume
 volumes:
 - name: test-volume
  hostPath:
   # directory location on host
   path: /data
   # this field is optional
   type: Directory

iscsi

互聯(lián)網(wǎng)小型計算機系統(tǒng)接口,其特點是便宜。

local

與emptyDir相似,它也占用節(jié)點的存儲空間。不同點是它是kubernetes中的一種對象類型,用戶可以像管理普通對象一樣管理它。emptyDir在pod實例開時運行時分配,當pod離節(jié)點時刪除。local類型的volume則由用戶創(chuàng)建,系統(tǒng)在合適的節(jié)點上為其分配資源,調(diào)度到這個節(jié)點上的pod可以掛載它,pod離開時它也不會消失,除非用戶刪除。示例:

apiVersion: v1
kind: PersistentVolume
metadata:
 name: example-pv
spec:
 capacity:
  storage: 100Gi
 # volumeMode field requires BlockVolume Alpha feature gate to be enabled.
 volumeMode: Filesystem
 accessModes:
 - ReadWriteOnce
 persistentVolumeReclaimPolicy: Delete
 storageClassName: local-storage
 local:
  path: /mnt/disks/ssd1
 nodeAffinity:
  required:
   nodeSelectorTerms:
   - matchExpressions:
    - key: kubernetes.io/hostname
     operator: In
     values:
     - example-node

nfs

nfs
網(wǎng)絡(luò)文件系統(tǒng)

persistentVolumeClaim

與flocker相似,用來屏蔽不同云環(huán)境

projected

如果一個容器需要掛開多個已經(jīng)存在的volume比如Secret、ConfigMap、DownwardAPI等,原本每個這種類型的volume需要各自占用一個掛載目錄,而projected能將它們整合在一起,并只掛開到一個目錄下,示例:

apiVersion: v1
kind: Pod
metadata:
 name: volume-test
spec:
 containers:
 - name: container-test
  image: busybox
  volumeMounts:
  - name: all-in-one
   mountPath: /projected-volume
   readOnly: true
 volumes:
 - name: all-in-one
  projected:
   sources:
   - secret:
     name: mysecret
     items:
      - key: username
       path: my-group/my-username
   - downwardAPI:
     items:
      - path: labels
       fieldRef:
        fieldPath: metadata.labels
      - path: cpu_limit
       resourceFieldRef:
        containerName: container-test
        resource: limits.cpu
   - configMap:
     name: myconfigmap
     items:
      - key: config
       path: my-group/my-config

網(wǎng)頁名稱:kubernetes對象Volume用法詳解
文章源于:http://weahome.cn/article/cphjsp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部