最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Kubernetes中使用PersistentVolume掛載云盤方式

 更新時(shí)間:2024年02月27日 09:43:42   作者:Vic·Tory  
這篇文章主要介紹了Kubernetes中使用PersistentVolume掛載云盤方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(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ǔ)的概念,它們可幫助我們在集群中管理持久性存儲(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è)聲明,它請求一個(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)用對存儲(chǔ)資源的訪問權(quán)限
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      # 資源請求的存儲(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建立對不同磁盤資源的描述,提供PV資源給消費(fèi)者使用
  • 資源綁定:創(chuàng)建好PVC后,PVC會(huì)在已存在的PV中選擇合適的PV進(jìn)行綁定,綁定成功,狀態(tài)變成Bound,且該P(yáng)V被對應(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掛載到對應(yīng)的PVC。
  • 資源釋放:刪除PVC,與該P(yáng)VC綁定的PV狀態(tài)就會(huì)變成“Released”,該P(yáng)VC在存儲(chǔ)設(shè)備上的數(shù)據(jù)刪除后,對應(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)建對應(yīng)的PV對存儲(chǔ)特性進(jìn)行設(shè)置;
  • 動(dòng)態(tài)模式就是管理員預(yù)先創(chuàng)建好StorageClass資源對后端存儲(chǔ)進(jìn)行描述,PVC創(chuàng)建時(shí)對存儲(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)建了對應(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)文章

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

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

    這篇文章主要為大家介紹了Rainbond配置組件自動(dòng)構(gòu)建部署官方文檔講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法

    K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法

    這篇文章主要為大家介紹了K8S節(jié)點(diǎn)本地存儲(chǔ)被撐爆問題徹底解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • k8s Prometheus的manifests清單部署實(shí)踐

    k8s Prometheus的manifests清單部署實(shí)踐

    本教程詳細(xì)介紹了如何在Kubernetes集群中部署Prometheus和Grafana監(jiān)控系統(tǒng),并融合了文件傳輸、解壓、編譯及Kubctl命令使用等強(qiáng)調(diào)時(shí)區(qū)設(shè)置等步驟,適合初學(xué)者學(xué)習(xí)參考
    2026-05-05
  • Kubernetes安裝Jenkins的思路詳解

    Kubernetes安裝Jenkins的思路詳解

    這篇文章主要介紹了Kubernetes安裝Jenkins,Jenkins插件可以在Kubernetes集群中運(yùn)行動(dòng)態(tài)jenkins-slave代理,基于Kubernetes的docker,自動(dòng)化在Kubernetes中運(yùn)行的Jenkins-slave代理的縮放,需要的朋友可以參考下
    2022-06-06
  • k8s多節(jié)點(diǎn)master部署過程

    k8s多節(jié)點(diǎn)master部署過程

    這篇文章主要介紹了k8s多節(jié)點(diǎn)master部署過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 關(guān)于CentOS7日志文件及journalctl日志查看方法

    關(guān)于CentOS7日志文件及journalctl日志查看方法

    這篇文章主要介紹了關(guān)于CentOS7日志文件及journalctl日志查看方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • k8s安裝CICD?devtron過程詳解

    k8s安裝CICD?devtron過程詳解

    這篇文章主要為大家介紹了k8s安裝CICD?devtron過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • K8s生產(chǎn)環(huán)境那些文檔不會(huì)告訴你的坑及解決辦法

    K8s生產(chǎn)環(huán)境那些文檔不會(huì)告訴你的坑及解決辦法

    K8s作為當(dāng)前最流行的容器編排平臺(tái),在企業(yè)生產(chǎn)環(huán)境中的部署需要綜合考慮高可用性、安全性、性能優(yōu)化等多方面因素,這篇文章主要介紹了K8s生產(chǎn)環(huán)境那些文檔不會(huì)告訴你的坑及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2026-05-05
  • k8s之ingress-nginx詳解和部署方案

    k8s之ingress-nginx詳解和部署方案

    Ingress是一種向k8s集群外部的客戶端公開服務(wù)的方法,下面這篇文章主要給大家介紹了關(guān)于k8s之ingress-nginx詳解和部署方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Kubernetes部署可視化地圖的十個(gè)步驟

    Kubernetes部署可視化地圖的十個(gè)步驟

    這篇文章主要為大家介紹了十步驟Kubernetes部署的可視化地圖,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03

最新評(píng)論

长寿区| 常山县| 屯留县| 永善县| 新宾| 互助| 嘉善县| 平罗县| 新宁县| 阜城县| 微山县| 上蔡县| 廊坊市| 海丰县| 曲阳县| 海伦市| 嘉善县| 武穴市| 佛冈县| 南充市| 梧州市| 通许县| 湛江市| 宾阳县| 沈丘县| 中牟县| 枣庄市| 兴城市| 东丽区| 志丹县| 渝北区| 涞源县| 洛扎县| 新丰县| 明水县| 易门县| 沾化县| 连南| 远安县| 黎川县| 顺平县|