1. 程式人生 > >Kubernetes 中的pv和pvc

Kubernetes 中的pv和pvc

原文地址:http://www.cnblogs.com/leidaxia/p/6485646.html

持久卷 PersistentVolumes

本文描述了 Kubernetes 中的 PersistentVolumes。要求讀者有對卷 (volumes) 所有了解。

簡介

儲存管理跟計算管理是兩個不同的問題。PersistentVolume 子系統,對儲存的供應和使用做了抽象,以 API 形式提供給管理員和使用者使用。要完成這一任務,我們引入了兩個新的 API 資源:PersistentVolume(持久卷) 和 PersistentVolumeClaim(持久卷申請)

PersistentVolume(PV)是叢集之中的一塊網路儲存。跟 Node 一樣,也是叢集的資源。PV 跟 Volume (卷) 類似,不過會有獨立於 Pod 的生命週期。這一 API 物件包含了儲存的實現細節,例如 NFS、iSCSI 或者其他的雲提供商的儲存系統。

PersistentVolumeClaim (PVC) 是使用者的一個請求。他跟 Pod 類似。Pod 消費 Node 的資源,PVCs 消費 PV 的資源。Pod 能夠申請特定的資源(CPU 和 記憶體);Claim 能夠請求特定的尺寸和訪問模式(例如可以載入一個讀寫,以及多個只讀例項)

PV 和 PVC 的生命週期

PV 是叢集的資源。PVC 是對這一資源的請求,也是對資源的所有權的檢驗。PV 和 PVC 之間的互動遵循如下的生命週期。

供應

叢集管理員會建立一系列的 PV。這些 PV 包含了為叢集使用者提供的真實儲存資源。他們可利用 Kubernetes API 來消費。

繫結

使用者建立一個包含了容量和訪問模式的持久卷申請。Master 會監聽 PVC 的產生,並嘗試根據請求內容查詢匹配的 PV,並把 PV 和 PVC 進行繫結。使用者能夠獲取滿足需要的資源,並且在使用過程中可能超出請求數量。

如果找不到合適的卷,這一申請就會持續處於非繫結狀態,一直到出現合適的 PV。例如一個叢集準備了很多的 50G 大小的持久卷,(雖然總量足夠)也是無法響應 100G 的申請的,除非把 100G 的 PV 加入叢集。

使用

Pod 把申請作為捲來使用。叢集會通過 PVC 查詢繫結的 PV,並 Mount 給 Pod。對於支援多種訪問方式的卷,使用者在使用 PVC 作為卷的時候,可以指定需要的訪問方式。

一旦使用者擁有了一個已經繫結的 PVC,被繫結的 PV 就歸該使用者所有了。使用者的 Pods 能夠通過在 Pod 的卷中包含的 PVC 來訪問他們佔有的 PV。

釋放

當用戶完成對卷的使用時,就可以利用 API 刪除 PVC 物件了,而且他還可以重新申請。刪除 PVC 後,對應的卷被視為 “被釋放”,但是這時還不能給其他的 PVC 使用。之前的 PVC 資料還儲存在卷中,要根據策略來進行後續處理。

回收

PV 的回收策略向叢集闡述了在 PVC 釋放卷的時候,應如何進行後續工作。目前可以採用三種策略:保留,回收或者刪除。保留策略允許重新申請這一資源。在持久卷能夠支援的情況下,刪除策略會同時刪除持久卷以及 AWS EBS/GCE PD 或者 Cinder 卷中的儲存內容。如果外掛能夠支援,回收策略會執行基礎的擦除操作(rm -rf /thevolume/*),這一卷就能被重新申請了。

持久卷的型別

持久卷是以外掛方式實現的,目前支援如下外掛:

  • GCEPersistentDisk
  • AWSElasticBlockStore
  • NFS
  • iSCSI
  • RBD (Ceph Block Device)
  • Glusterfs
  • HostPath (單節點測試使用)

持久卷

每個 PV 包含一個 spec 以及 status ,用於描述該卷的規格和狀態。

  apiVersion: v1
  kind: PersistentVolume
  metadata:
    name: pv0003
  spec:
    capacity:
      storage: 5Gi
    accessModes:
      - ReadWriteOnce
    persistentVolumeReclaimPolicy: Recycle
    nfs:
      path: /tmp
      server: 172.17.0.2

Capacity(容量)

一般來說,PV 會指定儲存容量。這裡需要使用 PV 的 capcity 屬性。參見 Kubernetes 的 Resource Model 一文,來獲取這一屬性的計量單位 (Mi/Gi....)。

目前儲存大小是唯一一個能夠被申請的指標,今後會加入更多屬性,例如 IOPS,吞吐能力等。

Access Modes(訪問模式)

只要資源提供者支援,持久卷能夠被用任何方式載入到主機上。每種儲存都會有不同的能力,每個 PV 的訪問模式也會被設定成為該卷所支援的特定模式。例如 NFS 能夠支援多個讀寫客戶端,但是某個 NFS PV 可能會在伺服器上以只讀方式使用。每個 PV 都有自己的一系列的訪問模式,這些訪問模式取決於 PV 的能力。

訪問模式的可選範圍如下:

  • ReadWriteOnce:該卷能夠以讀寫模式被載入到一個節點上。
  • ReadOnlyMany:該卷能夠以只讀模式載入到多個節點上。
  • ReadWriteMany:該卷能夠以讀寫模式被多個節點同時載入。

在 CLI 下,訪問模式縮寫為:

  • RWO:ReadWriteOnce
  • ROX:ReadOnlyMany
  • RWX:ReadWriteMany

重要!一個卷不論支援多少種訪問模式,同時只能以一種訪問模式載入。例如一個 GCEPersistentDisk 既能支援 ReadWriteOnce ,也能支援 ReadOnlyMany。

Recycling Policy(回收策略)

當前的回收策略可選值包括:

  • Retain - 人工重新申請
  • Recycle - 基礎擦除(“rm -rf /thevolume/*”)
  • Delete - 相關的儲存資產例如 AWS EBS,GCE PD 或者 OpenStack Cinder 卷一併刪除。

目前,只有 NFS 和 HostPath 支援 Recycle 策略,AWS EBS、GCE PD 以及 Cinder 卷支援 Delete 策略(其他的都是 Retain 是吧。。)。

階段(Phase)

一個卷會處於如下階段之一:

  • Available:可用資源,尚未被繫結到 PVC 上
  • Bound:該卷已經被繫結
  • Released:PVC 已經被刪除,但該資源尚未被叢集回收
  • Failed:該卷的自動回收過程失敗。

CLI 會顯示繫結到該 PV 的 PVC。

PersistentVolumeClaims(持久卷申請)

每個 PVC 包含一個 spec 以及 status,用以表達其規格和狀態。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 8Gi

訪問模式

PVC 使用跟 PV 一致的訪問模式。

資源

PVC 跟 Pod 一樣可以請求特定數量的資源。在這裡的請求內容就是儲存(storage)。Resource Model 文中提到的內容對 PV 和 PVC 同樣適用。

PVC 卷

Pod 能夠藉助 PVC 來訪問儲存。PVC 必須跟 Pod 處於同一個名稱空間。叢集找到 Pod 名稱空間中的 PVC,然後利用 PVC 獲取到背後的 PV。這個卷就會被載入到主機上,讓 Pod 可以使用。

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: dockerfile/nginx
      volumeMounts:
      - mountPath: "/var/www/html"
        name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim

相關推薦

kubernetes pvpvc、configmapsecret

configmap和secret PV和PVC是藉助於StorageClass來分配磁碟的 如何給Pod傳配置資訊: 兩種方式: 1.把configmap關聯到一個pod上,傳遞給pod內部的一個變數,注入的方式給容器傳配置資訊 2.配置卷,將配置檔案對映到外面的路徑 configm

Kubernetes pvpvc

原文地址:http://www.cnblogs.com/leidaxia/p/6485646.html持久卷 PersistentVolumes本文描述了 Kubernetes 中的 PersistentVolumes。要求讀者有對卷 (volumes) 所有了解。簡介儲存管

KubernetesPVPVC是啥

K8S引入了一組叫作Persistent Volume Claim(PVC)和Persistent Volume(PV)的API物件,大大降低了使用者宣告和使用持久化Volume的門檻。 在Pod的Volumes中,只要宣告型別是persistentVolumeClaim,指定PVC的名字,當建立這個PVC物

KubernetesPV/PVC/StorageClass

介紹 PersistentVolume(PV)是對管理員用來管理叢集中的儲存資源的一種抽象,跟叢集的節點資源類似。 PV是諸如卷之類的卷外掛,具有生命週期管理,獨立於使用PV的Pod. 該API物件包含了實現該儲存的細節,儲存的實現包含NFS, iSCSI和雲

MySQL 如何使用 PV PVC?- 每天5分鐘玩轉 Docker 容器技術(154)

Kubernetes Docker 容器 教程 本節演示如何為 MySQL 數據庫提供持久化存儲,步驟為:創建 PV 和 PVC。部署 MySQL。向 MySQL 添加數據。模擬節點宕機故障,Kubernetes 將 MySQL 自動遷移到其他節點。驗證數據一致性。首先創建 PV 和 PVC,

?mysql使用pvpvc實踐操作記錄

技術 volume 數據表 containe ins disco connected ber Oz 創建nfs存儲目錄[root@kubernetes1 ~]# mkdir /data/k8s/mysqlpv1創建pv[root@kubernetes1 ~]# cat my

k8s的pvpvc(阿里雲伺服器nfs建立pv

全棧工程師開發手冊 (作者:欒鵬) 簡介 PersistentVolume(pv)和PersistentVolumeClaim(pvc)是k8s提供的兩種API資源,用於抽象儲存細節。管理員關注於如何通過pv提供儲存功能而無需關注使用者如何使用,同樣的使用

K8S-PVPVC的實踐

一、什麼是PV和PVC? PV的全稱是Persistent Volume,翻譯過來為持久化儲存卷,是對底層的共享儲存的一種抽象,PV由管理員進行建立和配置,主要含儲存能力、訪問模式、儲存型別、回收策略、後端儲存型別等主要資訊,它和具體的底層的共享儲存技術的實現方式有關,比如NFS、Hostpath、RBD等。

k8s的儲存卷-基於NFSPVPVC的入門(二)

下面做一個基於NFS的儲存 NFS支援多客戶端的讀寫 新建立一個主機 node3:192.168.68.30 安裝 yum -y install nfs-utils 建立共享資料夾: mkdir /data/volumes -pv 設定共享: vim /etc/exports /data

大神教你輕松玩轉DockerKubernetes如何運行MongoDB微服務

cdn 成員 實現 細節 步驟 class 就會 接受 blog 本文介紹了利用Docker和Kubernetes搭建一套具有冗余備份集合的MongoDB服務,從容器對CI和CD引發的改變入手,討論了容器技術對MongoDB帶來的挑戰和機會,然後實戰如何部署一套穩定的Mo

kubernetes部署HeketiGlusterFS(二)

sta 自動創建 bdc ber ESS ddr ubunt cto cat kubernetes中部署Heketi和GlusterFS(二)在上一節中,Heketi的部署方式還不能用於生產環境,因為Heketi Pod的數據並沒有持久化,容易導致heketi的數據丟失,H

淺析kubernetes創建PvPvc、Deployment

quest 一個 aml bound ref volume minor repl rec 淺析kubernetes創建Pv、Pvc、Deployment 基本環境 #系統環境 cat /etc/redhat-release CentOS Linux release 7.4

Kubernetes部署HeketiGlusterFS

issue 服務 p地址 following 節點 tidb fuse led 安裝 Kubernetes中部署Heketi和GlusterFS [TOC] 1. 前言 在Kubernetes中,使用GlusterFS文件系統,操作步驟通常是: 創建brick--&g

LivenessReadiness兩種Health Check手段在Kubernetes的使用

一.概述 強大的自愈能力是Kubernetes這一類容器編排管理引擎的一個重要特性。通常情況下,Kubernetes通過重啟發生故障的容器來實現自愈。除此之外,我們還有其他方式來實現基於Kubernetes編排的容器的健康檢查嗎?Liveness和Readiness就是不錯的選擇。 二.實踐步驟 2.1

Kubernetes Pv & Pvc

編輯 stp 通過 def meta 建議 其他 state ast Kubernetes PV & pvc 介紹 PersistentVolume(pv)和PersistentVolumeClaim(pvc)是k8s提供的兩種API資源,用於抽象存儲細節。管理

Kubernetes 存儲卷管理 PV&PVC(十)

創建配置文件 執行 container cinder don rm -rf directory -c 可用 為了持久化保存容器的數據,可以使用 Kubernetes Volume。 Volume 的生命周期獨立於容器,Pod 中的容器可能被銷毀和重建,但 Volume 會被

StatefulSet: Kubernetes 對有狀態應用的執行伸縮_Kubernetes中文社群

在最新發布的 Kubernetes 1.5 我們將過去的 PetSet 功能升級到了 Beta 版本,並重新命名為StatefulSet。除了依照社群民意改了名字之外,這一 API 物件並沒有太大變化,不過我們在向集合裡部署 Pod 的過程中加入了“每索引最多一個”的語義。有了順序部署、順序終

Kubernetes 的 StorageClass 動態卷供給_Kubernetes中文社群

儲存是容器執行環境的重要一環,Kubernetes 提供了一些用於儲存管理的基礎能力。動態卷供給是一個 Kubernetes 獨有的功能,這一功能允許按需建立儲存卷。在沒有這種能力之前,叢集管理員需要打電話給他們的雲或者儲存提供者來建立新的儲存卷,成功以後再建立 PersistentVolum

Kubernetes Elastic Search 叢集的通訊加密、認證清理_Kubernetes中文社群

Kubernetes 的 Release 檔案包中,一直包含了使用 Elastic Search 方案進行日誌處理的簡單例子,這個例子非常簡陋外加版本較舊,處於“能用”的狀態而已。 而近期的版本中這一情況發生了變化,原來的elasticsearch中新增了一個子目錄: production_c

Kubernetes的nodePort,targetPort,port的區別意義

1. nodePort  外部機器可訪問的埠。 比如一個Web應用需要被其他使用者訪問,那麼需要配置type=NodePort,而且配置nodePort=30001,那麼其他機器就可以通過瀏覽器訪問scheme://node:30001訪問到該服務,例如ht