亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kubernetes對象Volume用法詳解

發布時間:2020-09-29 20:58:06 來源:腳本之家 閱讀:221 作者:laozhang 欄目:服務器

概述

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

Volume類型

Volume是抽象概念,有很多種具體實現,每種實現各具目的、特點、特性。差不多什么東西都可以當成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是一款優秀、流行的云環境存儲解決方案,原因是它開源、高可用、彈性伸縮,對操作系統、硬件無特殊要求,用戶很容易搭建,使用它的節點也無特別要求。它具備awsElasticBlockStore陳述之所有特點,并且單個voluem可以被多個節點同時使用。用戶首先搭建自己的cephfs環境,然后配置kubernetes集群與其對接,最后在pod中使用其提供的volume,詳細參考這里。

configMap

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

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

downwardAPI

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

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

emptyDir

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

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一樣,流行的云環境下的存儲解決方案

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

互聯網小型計算機系統接口,其特點是便宜。

local

與emptyDir相似,它也占用節點的存儲空間。不同點是它是kubernetes中的一種對象類型,用戶可以像管理普通對象一樣管理它。emptyDir在pod實例開時運行時分配,當pod離節點時刪除。local類型的volume則由用戶創建,系統在合適的節點上為其分配資源,調度到這個節點上的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
網絡文件系統

persistentVolumeClaim

與flocker相似,用來屏蔽不同云環境

projected

如果一個容器需要掛開多個已經存在的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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普兰县| 潢川县| 林周县| 垣曲县| 岳池县| 保山市| 峡江县| 随州市| 鄂托克前旗| 米泉市| 习水县| 襄樊市| 鄂伦春自治旗| 临高县| 托克逊县| 小金县| 海南省| 嘉义市| 乌苏市| 洱源县| 怀柔区| 武山县| 鄱阳县| 青海省| 郴州市| 固安县| 名山县| 江达县| 富裕县| 中山市| 卓资县| 漳浦县| 张家界市| 聂拉木县| 科技| 新河县| 青州市| 兰考县| 石屏县| 墨竹工卡县| 弥勒县|