欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Kubernetes中使用PersistentVolume掛載云盤方式

 更新時(shí)間:2024年02月27日 09:43:42   作者:Vic·Tory  
這篇文章主要介紹了Kubernetes中使用PersistentVolume掛載云盤方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Kubernetes中可用將本地磁盤作為存儲(chǔ)掛載到容器上,但這樣做的弊端是當(dāng)容器出現(xiàn)異常而重啟之后數(shù)據(jù)也會(huì)隨之消失

    spec:
      containers:
      - name: logs
	   # 掛載
        volumeMounts:
        - name: varlog
          mountPath: /tmp/log
      # 定義本地存儲(chǔ)
      volumes:
      - name: varlog
        hostPath:
          path: /var/log

為了實(shí)現(xiàn)容器存儲(chǔ)與計(jì)算的分離,可將容器的數(shù)據(jù)單獨(dú)存放到**網(wǎng)絡(luò)共享存儲(chǔ)(Network File System,NFS)**服務(wù)器上,當(dāng)容器掛掉之后并不會(huì)影響到數(shù)據(jù),之后容器重啟或一個(gè)新的容器連接到服務(wù)器后可以重新讀取到數(shù)據(jù)

1 NFS的使用

首先需要將一臺(tái)服務(wù)器配置為NFS服務(wù)器

# 安裝nfs
yum install -y nfs-utils
# 創(chuàng)建存放數(shù)據(jù)的目錄
mkdir -p /data/nfs
# 創(chuàng)建并設(shè)置掛載路徑
vim /etc/exports
/data/nfs *(rw,no_root_squash)
# 啟動(dòng)服務(wù)
systemctl start nfs

之后在K8s集群的Node節(jié)點(diǎn)上也安裝nfs服務(wù)

yum install -y nfs-utils

最后就可以使用nfs作為數(shù)據(jù)掛載點(diǎn)了,在其中定義nfs服務(wù)器的地址server和其上面的存儲(chǔ)路徑path。

通過如下配置文件就將pod中的 /usr/share/nginx/html 掛載到了 192.168.44.134/data/nfs

    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        # 掛載nfs
        - name: mynfs
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      # 定義nfs數(shù)據(jù)掛載點(diǎn)
        - name: mynfs
          nfs:
            server: 192.168.44.134
            path: /data/nfs

2 PV與PVC

上面的nfs掛載時(shí)ip 和端口是直接寫在容器yaml文件中的,這樣管理起來可能不方便。PV 和 PVC 是持久性存儲(chǔ)的概念,它們可幫助我們?cè)诩褐泄芾沓志眯源鎯?chǔ),使數(shù)據(jù)更加穩(wěn)定可靠:

1.PV(Persistent Volume):一個(gè)抽象的存儲(chǔ)資源,可以由管理員預(yù)先設(shè)置,并由集群中的一個(gè) Pod 來使用。它可以是磁盤,NFS 共享或云存儲(chǔ)等存儲(chǔ)資源。PV 可以被動(dòng)態(tài)或靜態(tài)地綁定到一個(gè) PVC 上,以供 Pod 使用。

2.PVC(Persistent Volume Claim):一個(gè)聲明,它請(qǐng)求一個(gè)特定的 PV 資源。PVC 定義了我們所需的存儲(chǔ)容量、訪問模式、數(shù)據(jù)持久性和其他細(xì)節(jié),從而與 PV 進(jìn)行匹配。當(dāng) PVC 綁定到 PV 上時(shí),它就可以被 Pod 使用了。

2.1 使用

如下所示PV定義文件mypv.yaml,在其中定義其存儲(chǔ)大小、路徑等信息,通過kubectl apply -f mypv.yaml創(chuàng)建PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
  	# 定義PV的存儲(chǔ)路徑
    path: /k8s/nfs
    server: 192.168.44.134

創(chuàng)建PVC,系統(tǒng)會(huì)自動(dòng)選擇合適的PV分配給它進(jìn)行綁定,可以在其中定義需要的存儲(chǔ)容量、訪問模式等信息

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  # 訪問模式;描述用戶應(yīng)用對(duì)存儲(chǔ)資源的訪問權(quán)限
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      # 資源請(qǐng)求的存儲(chǔ)大小
      storage: 5Gi

其中,accessModes有如下三種模式

  • RWO:ReadWriteOnce,僅允許單個(gè)節(jié)點(diǎn)掛載進(jìn)行讀寫;
  • ROX:ReadOnlyMany,允許多個(gè)節(jié)點(diǎn)掛載且只讀;
  • RWX:ReadWriteMany,允許多個(gè)節(jié)點(diǎn)掛載進(jìn)行讀寫;

最后在創(chuàng)建容器時(shí)就可以通過PVC的方式掛載存儲(chǔ),不必關(guān)心其底層存儲(chǔ)PV的實(shí)現(xiàn)細(xì)節(jié)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dep1
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        # 掛載到my-pvc
        persistentVolumeClaim:
          claimName: my-pvc

2.2 PV和PVC的生命周期

如圖所示,PVC在與PV綁定之后狀態(tài)就會(huì)變?yōu)?code>Bound,PVC一共有如下幾種狀態(tài):

  • Available: 可用狀態(tài),無PV綁定;
  • Bound:綁定狀態(tài),已經(jīng)和某個(gè)PV綁定;
  • Released:釋放狀態(tài),被綁定的PV已刪除,資源釋放,但沒有被集群回收;
  • Failed:失敗狀態(tài),自動(dòng)資源回收失??;

如下所示,容器Pod經(jīng)過PVC -> PV 使用存儲(chǔ)資源,其生命周期可以分為供應(yīng)、綁定、使用、釋放和回收

  • 資源供應(yīng):通過PV建立對(duì)不同磁盤資源的描述,提供PV資源給消費(fèi)者使用
  • 資源綁定:創(chuàng)建好PVC后,PVC會(huì)在已存在的PV中選擇合適的PV進(jìn)行綁定,綁定成功,狀態(tài)變成Bound,且該P(yáng)V被對(duì)應(yīng)的PVC獨(dú)占綁定,不可以再被其他PVC綁定,除非該P(yáng)VC釋放。若在k8s系統(tǒng)中沒有找到合適的PV,則PVC一直處于Pending狀態(tài)。
  • 資源使用:在通過Deployment創(chuàng)建容器時(shí),在spec.template.spec.volumes進(jìn)行磁盤掛載時(shí)選擇persistentVolumeClaim掛載到對(duì)應(yīng)的PVC。
  • 資源釋放:刪除PVC,與該P(yáng)VC綁定的PV狀態(tài)就會(huì)變成“Released”,該P(yáng)VC在存儲(chǔ)設(shè)備上的數(shù)據(jù)刪除后,對(duì)應(yīng)的PV才能與其他的PVC進(jìn)行綁定。
  • 資源回收:PV中可以通過spec.persistentVolumeReclaimPolicy設(shè)置回收策略,用于在綁定的PVC刪除后,資源釋放后如何處理PVC寫入存儲(chǔ)設(shè)備的數(shù)據(jù):
  • Retain:保留,刪除PVC后,PV保留數(shù)據(jù);
  • Recycle:回收空間,刪除PVC后,簡單的清除文件;(NFS和HostPath存儲(chǔ)支持)
  • Delete:刪除,刪除PVC后,與PV相連接的后端存儲(chǔ)會(huì)刪除數(shù)據(jù);(AWS EBS、Azure Disk、Cinder volumes、GCE PD支持)

2.3 PV與PVC的綁定

PV與PVC之間可以通過靜態(tài)綁定或者動(dòng)態(tài)綁定建立連接:

  • 靜態(tài)模式就是集群管理員預(yù)先創(chuàng)建對(duì)應(yīng)的PV對(duì)存儲(chǔ)特性進(jìn)行設(shè)置;
  • 動(dòng)態(tài)模式就是管理員預(yù)先創(chuàng)建好StorageClass資源對(duì)后端存儲(chǔ)進(jìn)行描述,PVC創(chuàng)建時(shí)對(duì)存儲(chǔ)類型進(jìn)行聲明,k8s會(huì)自動(dòng)創(chuàng)建合適的PV與PVC進(jìn)行綁定。

手動(dòng)綁定

如下所示,首先定義一個(gè)test-pv1

[root@k8s /pv_test]#  vim test_pv1.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
	# 定義PV的名字
  name: test-pv1
  labels:
    pv: test-pv1
spec:
  capacity:
    storage: 2Mi
  accessModes:
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /date-nfs/k8s
    server: 10.139.12.14

之后定義 PVC,在其中通過spec.selector.matchLabels標(biāo)簽匹配上面定義的test-pv1

[root@k8s /pvc_test]#  vim test_pvc1.yaml 
#persistent Volume Claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-pvc1
  namespace: t1
spec:
  #storageClassName: managed-nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi
  selector:
    # 手動(dòng)進(jìn)行綁定
    matchLabels:
      pv: test-pv1

動(dòng)態(tài)綁定

上面的手動(dòng)綁定無法根據(jù)PVC的訪問模式,容量大小等實(shí)際需要靈活地匹配到合適的PV,每次去手動(dòng)選擇或創(chuàng)建PV會(huì)變得十分繁瑣。

這時(shí)可以通過StorageClass根據(jù)pvc定義的來動(dòng)態(tài)創(chuàng)建合適的pv,不僅節(jié)省了管理員的時(shí)間,還可以封裝不同類型的存儲(chǔ)供pvc選用。

如下所示通過StorageClass將PVC和PV進(jìn)行自動(dòng)綁定的過程

首先創(chuàng)建一個(gè)StorageClass

[root@master1 sc]# cat nfs-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: statefu-nfs
  namespace: default
# 云盤資源提供方
provisioner: nfs-deploy     
reclaimPolicy: Retain

[root@master1 sc]# kubectl apply -f nfs-sc.yaml
storageclass.storage.k8s.io/statefu-nfs created

然后創(chuàng)建PVC,在其中配置spec.storageClassName為上面的創(chuàng)建的statefu-nfs。

[root@master1 sc]# cat test-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-claim
  namespace: default
spec:
  storageClassName: statefu-nfs   #sc一定要指向上面創(chuàng)建的sc名稱
  accessModes:
    - ReadWriteMany   #采用ReadWriteMany的訪問模式
  resources:
    requests:
      storage: 1Gi
      
[root@master1 sc]# kubectl apply -f test-pvc.yaml

可以看到PVC test-claim創(chuàng)建成功之后,隨之自動(dòng)創(chuàng)建了對(duì)應(yīng)的PV并且綁定到了test-claim

[root@master1 sc]# kubectl get pvc
NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
test-claim   Bound    pvc-0b9e1107-fefc-48b9-a5ec-8f8690e94435   1Gi        RWX            statefu-nfs    107m

[root@master1 sc]# kubectl get pv
NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
pvc-0b9e1107-fefc-48b9-a5ec-8f8690e94435  1Gi  RWX  Delete   Bound   default/test-claim statefu-nfs          107m

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • kubectl?命令詳解

    kubectl?命令詳解

    這篇文章主要介紹了kubectl?命令的相關(guān)資料,包括常用命令,基本命令和使用說明,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-04-04
  • 虛擬化和云計(jì)算的區(qū)別分析

    虛擬化和云計(jì)算的區(qū)別分析

    這篇文章主要介紹了虛擬化和云計(jì)算的區(qū)別,深入淺出的列舉分析了虛擬化與云計(jì)算的幾點(diǎn)常見區(qū)別,需要的朋友可以參考下
    2016-10-10
  • 超詳細(xì)的Kubernetes?(k8s)常用命令整理

    超詳細(xì)的Kubernetes?(k8s)常用命令整理

    這篇文章主要介紹了Kubernetes?(k8s)常用命令整理的相關(guān)資料,講解了Kubernetes集群管理、節(jié)點(diǎn)資源查看、Pod管理、部署管理、命名空間管理、服務(wù)負(fù)載均衡、調(diào)試排錯(cuò)以及備份恢復(fù)等操作的命令,需要的朋友可以參考下
    2025-03-03
  • K8s學(xué)習(xí)之Pod的定義及詳細(xì)資源調(diào)用案例

    K8s學(xué)習(xí)之Pod的定義及詳細(xì)資源調(diào)用案例

    Kubernetes將所有內(nèi)容抽象為資源,通過操作資源管理集群,核心單元是Pod,通過控制器管理Pod,資源管理分為命令式對(duì)象管理、命令式對(duì)象配置和聲明式對(duì)象配置,各有適用場景,需要的朋友可以參考下
    2024-09-09
  • k8s高可用集群安裝教程

    k8s高可用集群安裝教程

    本文給大家介紹k8s高可用集群安裝教程,本文通過圖文示例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-03-03
  • 理解k8s控制器DaemonSet創(chuàng)建及使用場景

    理解k8s控制器DaemonSet創(chuàng)建及使用場景

    這篇文章主要為大家介紹了k8s控制器DaemonSet創(chuàng)建及使用場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解

    Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解

    這篇文章主要為大家介紹了Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Jenkins打包、發(fā)布、部署完整驟記錄

    Jenkins打包、發(fā)布、部署完整驟記錄

    這篇文章主要介紹了Jenkins的基本概念,服務(wù)器環(huán)境檢查,以及如何安裝和配置Jenkins,包括安裝FTP服務(wù)、Maven、Git和Jenkins本身,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • 普通人如何在區(qū)塊鏈行業(yè)賺錢

    普通人如何在區(qū)塊鏈行業(yè)賺錢

    區(qū)塊鏈?zhǔn)且豁?xiàng)新技術(shù)。之所以快速吸引人們的關(guān)注,是因?yàn)楸忍貛旁?017年的暴漲,迅速吸引了大眾的視線。而比特幣的底層技術(shù),主要是區(qū)塊鏈技術(shù)
    2018-03-03
  • 從小飯館客流量變大論云原生負(fù)載均衡

    從小飯館客流量變大論云原生負(fù)載均衡

    這篇文章主要為大家介紹了從小飯館客流量變大來討論云原生負(fù)載均衡,為大家做出更生動(dòng)易懂的云原生解釋說明有需要的朋友可以借鑒參考下
    2022-03-03

最新評(píng)論