欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

kubernetes的存儲(chǔ)類介紹

k8s有很多的服務(wù),很多的資源對(duì)象。

如果要去創(chuàng)建服務(wù),做數(shù)據(jù)持久化,需要預(yù)先知道可用PV有哪些?

成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、微信小程序開(kāi)發(fā)、公眾號(hào)商城、等建站開(kāi)發(fā),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

如果為了這個(gè)服務(wù)去提前創(chuàng)建PV,那么我們還需要知道,這個(gè)服務(wù),大概需要多大的空間?

環(huán)境介紹

主機(jī)IP地址服務(wù)
master192.168.1.21k8s
node01192.168.1.22k8s
node02192.168.1.23k8s

基于[ https://blog.51cto.com/14320361/2464655]() 的實(shí)驗(yàn)繼續(xù)進(jìn)行

存儲(chǔ)類介紹

Kubernetes集群管理員通過(guò)提供不同的存儲(chǔ)類,可以滿足用戶不同的服務(wù)質(zhì)量級(jí)別、備份策略和任意策略要求的存儲(chǔ)需求。動(dòng)態(tài)存儲(chǔ)卷供應(yīng)使用StorageClass進(jìn)行實(shí)現(xiàn),其允許存儲(chǔ)卷按需被創(chuàng)建。如果沒(méi)有動(dòng)態(tài)存儲(chǔ)供應(yīng),Kubernetes集群的管理員將不得不通過(guò)手工的方式類創(chuàng)建新的存儲(chǔ)卷。通過(guò)動(dòng)態(tài)存儲(chǔ)卷,Kubernetes將能夠按照用戶的需要,自動(dòng)創(chuàng)建其需要的存儲(chǔ)。

基于StorageClass的動(dòng)態(tài)存儲(chǔ)供應(yīng)整體過(guò)程如下圖所示:
kubernetes的存儲(chǔ)類介紹

1)集群管理員預(yù)先創(chuàng)建存儲(chǔ)類(StorageClass);
2)用戶創(chuàng)建使用存儲(chǔ)類的持久化存儲(chǔ)聲明(PVC:PersistentVolumeClaim);
3)存儲(chǔ)持久化聲明通知系統(tǒng),它需要一個(gè)持久化存儲(chǔ)(PV: PersistentVolume);
4)系統(tǒng)讀取存儲(chǔ)類的信息;
5)系統(tǒng)基于存儲(chǔ)類的信息,在后臺(tái)自動(dòng)創(chuàng)建PVC需要的PV;
6)用戶創(chuàng)建一個(gè)使用PVC的Pod;
7)Pod中的應(yīng)用通過(guò)PVC進(jìn)行數(shù)據(jù)的持久化;
8)而PVC使用PV進(jìn)行數(shù)據(jù)的最終持久化處理。

先來(lái)簡(jiǎn)單看一下這張圖實(shí)現(xiàn)的過(guò)程,然后我們?cè)賮?lái)研究一下

kubernetes的存儲(chǔ)類介紹

說(shuō)在前面的話,靜態(tài)供給的話,會(huì)需要我們手動(dòng)去創(chuàng)建pv,如果沒(méi)有足夠的資源,找不到合適的pv,那么pod就會(huì)處于pending等待的狀態(tài),就是說(shuō)找不到合適的伴侶了,所以解決這兩種問(wèn)題,就給出了這種動(dòng)態(tài)供給,主要是能夠自動(dòng)幫你創(chuàng)建pv
,就是你需要多大的容量,就自動(dòng)給你創(chuàng)建多大的容量,也就是pv,k8s幫你創(chuàng)建了,創(chuàng)建pvc的時(shí)候就需要找pv了,這個(gè)時(shí)候就交給這個(gè)存儲(chǔ)類了,而存儲(chǔ)類呢,去幫你創(chuàng)建這些pv,存儲(chǔ)類呢,就是實(shí)現(xiàn)了對(duì)指定存儲(chǔ)的一個(gè)支持,直接幫你去調(diào)用api去創(chuàng)建存儲(chǔ)類,所以就不需要人工的去幫你創(chuàng)建pv了。
而你去想想,當(dāng)節(jié)點(diǎn)比較多,業(yè)務(wù)比較多的時(shí)候,再去人工手動(dòng)創(chuàng)建pv,量還是很大的,而且也不是很好去維護(hù)。
而動(dòng)態(tài)供給主要的一個(gè)實(shí)現(xiàn)就是StorageClass存儲(chǔ)對(duì)象,其實(shí)它就是聲明你使用哪個(gè)存儲(chǔ),然后呢幫你去連接,再幫你去自動(dòng)創(chuàng)建pv。

舉個(gè)例子更好去理解
話不多說(shuō)下圖
kubernetes的存儲(chǔ)類介紹

其實(shí)它是一個(gè)基于NFS實(shí)現(xiàn)的一個(gè)pv供給,它大概流程是這樣的,我們可能會(huì)創(chuàng)建一個(gè)statefulset有狀態(tài)的應(yīng)用存儲(chǔ),然后有一個(gè)管理的nfs-storageClass,因?yàn)閚fs目前是不支持這個(gè)自動(dòng)的創(chuàng)建pv的,我們可以利用社區(qū)實(shí)現(xiàn)的插件來(lái)完成這個(gè)pv的自動(dòng)創(chuàng)建,也就是StorageClass這一塊,創(chuàng)建完之后,然后pod再去引用。

一,Storage Class(存儲(chǔ)類)

作用:它可以動(dòng)態(tài)的自動(dòng)的創(chuàng)建所需要的PV

Provisioner(供給方,提供者):及提供了存儲(chǔ)資源的存儲(chǔ)系統(tǒng)。k8s內(nèi)建有多重供給方,這些供給方的名字都以“kubernetes.io”為前綴。并且還可以自定義。

Parameters(參數(shù)):存儲(chǔ)類使用參數(shù)描述要關(guān)聯(lián)到的存儲(chǔ)卷,注意不同的供給方參數(shù)也不同。

ReclaimPlicy: PV的回收策略,可用值有Delete(默認(rèn))和Retain

(1)確定基于NFS服務(wù)來(lái)做的SC。NFS開(kāi)啟

[root@master yaml]# showmount -e

kubernetes的存儲(chǔ)類介紹

(2)需要RBAC權(quán)限。

RBAC:rbac是k8s的API的安全策略,是基于用戶的訪問(wèn)權(quán)限的控制。規(guī)定了誰(shuí),可以有什么樣的權(quán)限。

為了給SC資源操作k8s集群的權(quán)限。

[root@master yaml]# vim rbac-rolebind.yaml
kind: Namespace
apiVersion: v1
metadata:
  name: bdqn-test
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner
  namespace: bdqn-test
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: nfs-provisioner-runner
  namespace: bdqn-test
rules:
   -  apiGroups: [""]
      resources: ["persistentvolumes"]
      verbs: ["get", "list", "watch", "create", "delete"]
   -  apiGroups: [""]
      resources: ["persistentvolumeclaims"]
      verbs: ["get", "list", "watch", "update"]
   -  apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses"]
      verbs: ["get", "list", "watch"]
   -  apiGroups: [""]
      resources: ["events"]
      verbs: ["watch", "create", "update", "patch"]
   -  apiGroups: [""]
      resources: ["services", "endpoints"]
      verbs: ["get","create","list", "watch","update"]
   -  apiGroups: ["extensions"]
      resources: ["podsecuritypolicies"]
      resourceNames: ["nfs-provisioner"]
      verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner
    namespace: bdqn-test
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io

運(yùn)行一下

[root@master yaml]# kubectl apply -f rbac-rolebind.yaml 

(3)nfs-deployment

作用:其實(shí)它是一個(gè)NFS客戶端。但它通過(guò)K8S的內(nèi)置的NFS驅(qū)動(dòng)掛載遠(yuǎn)端的NFS服務(wù)器到本地目錄;然后將自身作為storage provider,關(guān)聯(lián)storage class。

[root@master yaml]# vim nfs-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  namespace: bdqn-test
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccount: nfs-provisioner    #指定賬戶
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner
          volumeMounts:
            - name: nfs-client-root
              mountPath:  /persistentvolumes   #指定容器內(nèi)的掛載目錄
          env:
            - name: PROVISIONER_NAME            #這是這個(gè)容器內(nèi)置的變量
              value: bdqn-test                  #這是上面變量的值(名字)
            - name: NFS_SERVER                  #內(nèi)置變量,用于指定nfs服務(wù)的IP
              value: 192.168.1.21
            - name: NFS_PATH                    #內(nèi)置變量,指定的是nfs共享的目錄
              value: /nfsdata
      volumes:                                  #這下面是指定上面掛載到容器內(nèi)的nfs的路徑及IP
        - name: nfs-client-root
          nfs:
            server: 192.168.1.21
            path: /nfsdata

執(zhí)行一下

[root@master yaml]# kubectl apply -f nfs-deployment.yaml

(4)創(chuàng)建storageclass

[root@master yaml]# vim test-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: stateful-nfs
  namespace: bdqn-test
provisioner: bdqn-test  #這里要和第三個(gè)nfs-client-provisioner的env環(huán)境變量中的value值對(duì)應(yīng)。
reclaimPolicy: Retain   #回收策略為:retain,還有一個(gè)默認(rèn)的值為“default”

執(zhí)行一下

[root@master yaml]# kubectl apply -f test-storageclass.yaml

(5)創(chuàng)建PVC

[root@master yaml]# vim test-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-claim
  namespace: bdqn-test
spec:
  storageClassName: stateful-nfs   #定義存儲(chǔ)類的名字,要和SC的名字對(duì)應(yīng)
  accessModes:
    - ReadWriteMany         #訪問(wèn)模式為RWM
  resources:
    requests:
      storage: 500Mi

執(zhí)行一下

[root@master yaml]# kubectl apply -f test-pvc.yaml 

查看一下

[root@master yaml]# kubectl get pvc

kubernetes的存儲(chǔ)類介紹

(6)創(chuàng)建一個(gè)Pod

[root@master yaml]# vim test-pod.yaml
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
  namespace: bdqn-test
spec:
  containers:
  - name: test-pod
    image: busybox
    args:
      - /bin/sh
      - -c
      - sleep 30000
    volumeMounts:
      - name: nfs-pvc
        mountPath: /test
  restartPolicy: OnFailure
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: test-claim  #這的名字要和PVC的名字一致

執(zhí)行一下

[root@master yaml]# kubectl apply -f  test-pod.yaml 

查看一下

[root@master yaml]# kubectl get pod -n bdqn-test 

kubernetes的存儲(chǔ)類介紹

(7)容器中添加內(nèi)容,并查看掛載目錄

進(jìn)入容器修改頁(yè)面內(nèi)容

[root@master yaml]# kubectl exec -it test-pod -n bdqn-test /bin/sh
/ # cd test/
/test # touch test-file
/test # echo 123456 > test-file 
/test # cat test-file 
123456

查看掛載目錄

[root@master yaml]# ls /nfsdata/
bdqn-test-test-claim-pvc-79ddfcf1-65ae-455f-9e03-5bcfe6c6ce15
web1
web2
[root@master yaml]# cat /nfsdata/bdqn-test-test-claim-pvc-79ddfcf1-65ae-455f-9e03-5bcfe6c6ce15/test-file 
123456

如果,K8S集群中, 有很多類似的PV, PVC在去向PV申請(qǐng)空間的時(shí)候,不僅會(huì)考慮名稱以及訪問(wèn)控制模式,還會(huì)考慮你申請(qǐng)空間的大小,會(huì)分配給你最合適大小的PV。

運(yùn)行一個(gè)web服務(wù),采用Deployment資源,基于nginx鏡像,replicas為3個(gè)。數(shù)據(jù)持久化目錄為nginx服務(wù)的主訪問(wèn)目錄:/usr/share/nginx/html

創(chuàng)建一個(gè)PVC,與上述資源進(jìn)行關(guān)聯(lián)。

1. 基于nfs服務(wù)來(lái)做的PV和pvc

下載nfs所需安裝包

[root@node02 ~]# yum -y install nfs-utils  rpcbind

創(chuàng)建共享目錄

[root@master ~]# mkdir /nfsdata

創(chuàng)建共享目錄的權(quán)限

[root@master ~]# vim /etc/exports
/nfsdata *(rw,sync,no_root_squash)

開(kāi)啟nfs和rpcbind

[root@master ~]# systemctl start nfs-server.service 
[root@master ~]# systemctl start rpcbind

測(cè)試一下

[root@master ~]# showmount -e

kubernetes的存儲(chǔ)類介紹

2.先創(chuàng)建兩個(gè)PV, web- pV1(1G) ,web-pv2 (2G)

web1

[root@master yaml]# vim web.yaml 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv
spec :
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /nfsdata/web1
    server: 192.168.1.21

web2

[root@master yaml]# vim web2.yaml 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv2
spec :
  capacity :
    storage: 2Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /nfsdata/web2
    server: 192.168.1.21
3.創(chuàng)建所需文件夾
[root@master yaml]# mkdir /nfsdata/web1
[root@master yaml]# mkdir /nfsdata/web2
4.執(zhí)行一下web和web2
[root@master yaml]# kubectl apply -f web.yaml 
[root@master yaml]# kubectl apply -f web2.yaml 
5.查看一下
[root@master yaml]# kubectl get pv

kubernetes的存儲(chǔ)類介紹

6.創(chuàng)建web的pvc的yaml文件
[root@master yaml]# vim web-pvc.yaml 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: web-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs

執(zhí)行一下

[root@master yaml]# kubectl apply -f web-pvc.yaml 

查看一下

[root@master yaml]# kubectl get pvc

kubernetes的存儲(chǔ)類介紹

系統(tǒng)會(huì)自動(dòng)給pvc一個(gè)相近內(nèi)存的pv,所以選擇了1G的那個(gè)

7.創(chuàng)建pod的yaml文件
[root@master yaml]# vim web-pod.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web-pod
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - name: web-test
          mountPath: /usr/share/nginx/html
      volumes:
      - name: web-test
        persistentVolumeClaim:
          claimName: web-pvc
執(zhí)行一下
[root@master yaml]# kubectl apply -f web-pod.yaml 
查看一下
[root@master yaml]# kubectl get pod

kubernetes的存儲(chǔ)類介紹

8. 訪問(wèn)一下nginx的網(wǎng)頁(yè)
查看一下nginx的ip
[root@master yaml]# kubectl get pod -o wide

kubernetes的存儲(chǔ)類介紹

進(jìn)入容器設(shè)置網(wǎng)頁(yè)內(nèi)容
root@master yaml]# kubectl exec -it web-pod-8686d9c594-qxhr9 /bin/bash
root@web-pod-8686d9c594-qxhr9:/# cd /usr/share/nginx/html/
root@web-pod-8686d9c594-qxhr9:/usr/share/nginx/html# ls
root@web-pod-8686d9c594-qxhr9:/usr/share/nginx/html# echo 123456 > index.html
root@web-pod-8686d9c594-qxhr9:/usr/share/nginx/html# exit
訪問(wèn)一下
[root@master yaml]# curl 10.244.2.17

kubernetes的存儲(chǔ)類介紹

如果兩個(gè)PV,大小一樣,名稱一樣,訪問(wèn)控制模式不一樣,PVC會(huì)關(guān)聯(lián)哪一個(gè)? (驗(yàn)證PV和PVC 關(guān)聯(lián)的時(shí)候,訪問(wèn)模式必須一樣)

兩個(gè)PV,大小一樣,名稱一樣,訪問(wèn)控制模式不一樣

<1>創(chuàng)建兩個(gè)pv
web1
[root@master yaml]# vim web1.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv
spec :
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce  #能以讀-寫(xiě)mount到單個(gè)的節(jié)點(diǎn)
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /nfsdata/web1
    server: 192.168.1.21
web2
[root@master yaml]# vim web2.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: web-pv
spec :
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteMany        #能以讀-寫(xiě)mount到多個(gè)的節(jié)點(diǎn)
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: nfs
  nfs:
    path: /nfsdata/web1
    server: 192.168.1.21
創(chuàng)建所需文件
[root@master yaml]# mkdir /nfsdata/web1
執(zhí)行一下
[root@master yaml]# kubectl apply -f web1.yaml 
[root@master yaml]# kubectl apply -f web2.yaml 

kubernetes的存儲(chǔ)類介紹

<2>創(chuàng)建pvc
[root@master yaml]# vim web-pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: web-pvc
spec:
  accessModes:
  - ReadWriteMany    #能以讀-寫(xiě)mount到多個(gè)的節(jié)點(diǎn)
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs
執(zhí)行一下
[root@master yaml]# kubectl apply -f web-pvc.yaml 
<3>查看一下
[root@master yaml]# kubectl get pv

kubernetes的存儲(chǔ)類介紹

[root@master yaml]# kubectl get pvc

kubernetes的存儲(chǔ)類介紹

現(xiàn)在可以看到pv和pvc關(guān)聯(lián)成功,但是為什么只有一個(gè)pv呢?(pv掛載的目錄要相同)

那是因?yàn)楫?dāng)創(chuàng)建了兩個(gè)相同名字的pv時(shí)它并不會(huì)認(rèn)為這是兩個(gè)不同的pv,而會(huì)把他們當(dāng)成是同一個(gè)pv,后創(chuàng)建的pv會(huì)刷新前面創(chuàng)建的pv。然后,當(dāng)創(chuàng)建了pvc,并且pvc的訪問(wèn)模式和后面創(chuàng)建pv的訪問(wèn)模式一樣,他們就會(huì)關(guān)聯(lián)成功,反之不成功。(當(dāng)然這些條件下還需要考慮,pv的內(nèi)存)

(1)以自己的名稱創(chuàng)建一個(gè)名稱空間。以下所有資源都在此名稱空間之下。

<1>編寫(xiě)namespace的yam文件

[root@master yaml]# vim namespace.yaml 
kind: Namespace
apiVersion: v1
metadata:
  name: xgp-znb

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f namespace.yaml 

<3>查看一下

[root@master yaml]# kubectl get ns

kubernetes的存儲(chǔ)類介紹

(2)設(shè)置rbac權(quán)限。

下載所需鏡像

docker pull registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner

<1>編寫(xiě)rbac的yam文件

[root@master yaml]# vim rbac-rolebind.yaml
kind: Namespace
apiVersion: v1
metadata:
  name: xgp-znb
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nfs-provisioner
  namespace: xgp-znb
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: nfs-provisioner-runner
  namespace: xgp-znb
rules:
   -  apiGroups: [""]
      resources: ["persistentvolumes"]
      verbs: ["get", "list", "watch", "create", "delete"]
   -  apiGroups: [""]
      resources: ["persistentvolumeclaims"]
      verbs: ["get", "list", "watch", "update"]
   -  apiGroups: ["storage.k8s.io"]
      resources: ["storageclasses"]
      verbs: ["get", "list", "watch"]
   -  apiGroups: [""]
      resources: ["events"]
      verbs: ["watch", "create", "update", "patch"]
   -  apiGroups: [""]
      resources: ["services", "endpoints"]
      verbs: ["get","create","list", "watch","update"]
   -  apiGroups: ["extensions"]
      resources: ["podsecuritypolicies"]
      resourceNames: ["nfs-provisioner"]
      verbs: ["use"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: run-nfs-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner
    namespace: xgp-znb
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f  rbac-rolebind.yaml 

(3)創(chuàng)建nfs-deployment.yaml

<1>編寫(xiě)deployment的yam文件

[root@master yaml]# vim nfs-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  namespace: xgp-znb
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccount: nfs-provisioner
      containers:
        - name: nfs-client-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/open-ali/nfs-client-provisioner
          volumeMounts:
            - name: nfs-client-root
              mountPath:  /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: xgp-znb
            - name: NFS_SERVER
              value: 192.168.1.21
            - name: NFS_PATH
              value: /nfsdata
      volumes:
        - name: nfs-client-root
          nfs:
            server: 192.168.1.21
            path: /nfsdata

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f nfs-deployment.yaml

(4)創(chuàng)建storageclass自動(dòng)創(chuàng)建PV。

<1>編寫(xiě)storageclass的yam文件

[root@master yaml]# vim storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: test-sc
provisioner: xgp-znb   #通過(guò)provisioner字段關(guān)聯(lián)到上述Deploy
reclaimPolicy: Retain

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f storageclass.yaml

(5)創(chuàng)建PVC

<1>編寫(xiě)PVC的yaml文件

[root@master yaml]# vim pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-claim
  namespace: xgp-znb
spec:
  storageClassName: test-sc
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 500Mi

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f pvc.yaml 

<3>查看一下

[root@master yaml]# kubectl get pvc -n xgp-znb

kubernetes的存儲(chǔ)類介紹

(6)創(chuàng)建一個(gè)Pod, 基于nginx運(yùn)行一個(gè)web服務(wù),使用Deployment資源對(duì)象,replicas=3.持久化存儲(chǔ)目錄為默認(rèn)主目錄

<1>編寫(xiě)deployment的yam文件

[root@master yaml]# vim pod.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web-pod
  namespace: xgp-znb
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - name: web-test
          mountPath: /usr/share/nginx/html
      volumes:
      - name: web-test
        persistentVolumeClaim:
          claimName: test-claim

<2>執(zhí)行一下

[root@master yaml]# kubectl apply -f pvc.yaml 

<3>查看一下

[root@master yaml]# kubectl get pod -n xgp-znb

kubernetes的存儲(chǔ)類介紹

(7)訪問(wèn)nginx頁(yè)面

修改nginx主頁(yè)

[root@master yaml]# kubectl exec -it web-pod-8cd956cc7-6szjb -n xgp-znb /bin/bash
//進(jìn)入容器之中
root@web-pod-8cd956cc7-6szjb:/# echo  xgp-znb > /usr/share/nginx/html/index.html
//添加自定義內(nèi)容主機(jī)

訪問(wèn)一下

[root@master yaml]# curl 10.244.2.18

kubernetes的存儲(chǔ)類介紹

五個(gè)可移植性建議

  1. 把你的 pvc,和 其它一系列配置放一起, 比如說(shuō)deployment,configmap
  2. 不要把你的pv放在其它配置里, 因?yàn)橛脩艨赡軟](méi)有權(quán)限創(chuàng)建pv
  3. 初始化pvc 模版的時(shí)候, 提供一個(gè)storageclass
  4. 在你的工具軟件中,watch那些沒(méi)有bound的pvc,并呈現(xiàn)給用戶
  5. 集群?jiǎn)?dòng)的時(shí)候啟用DefaultStorageClass, 但是不要指定某一類特定的class, 因?yàn)椴煌琾rovisioner的class,參數(shù)很難一致

volumn phase

1. 在PVC中綁定一個(gè)PV,可以根據(jù)下面幾種條件組合選擇
  • Access Modes, 按照訪問(wèn)模式選擇pv
  • Resources, 按照資源屬性選擇, 比如說(shuō)請(qǐng)求存儲(chǔ)大小為8個(gè)G的pv
  • Selector, 按照pv的label選擇
  • Class, 根據(jù)StorageClass的class名稱選擇, 通過(guò)annotation指定了Storage Class的名字, 來(lái)綁定特定類型的后端存儲(chǔ)
2. 關(guān)于根據(jù)class過(guò)濾出pv的說(shuō)明:所有的 PVC 都可以在不使用 StorageClass 注解的情況下,直接使用某個(gè)動(dòng)態(tài)存儲(chǔ)。把一個(gè)StorageClass 對(duì)象標(biāo)記為 “default” 就可以了。StorageClass 用注解http://storageclass.beta.kubernetes.io/is-default-class 就可以成為缺省存儲(chǔ)。有了缺省的 StorageClass,用戶創(chuàng)建 PVC 就不用 storage-class 的注解了,1.4 中新加入的DefaultStorageClass 準(zhǔn)入控制器會(huì)自動(dòng)把這個(gè)標(biāo)注指向缺省存儲(chǔ)類。PVC 指定特定storageClassName,如fast時(shí), 綁定名稱為fast的storageClassPVC中指定storageClassName為“”時(shí), 綁定no class的pv(pv中無(wú)class annotation, 或者其值為“”)PVC不指定storageClassName時(shí), DefaultStorageClass admission plugin 開(kāi)啟與否(在apiserver啟動(dòng)時(shí)可以指定), 對(duì)default class的解析行為是不同的。當(dāng)DefaultStorageClass admission plugin啟用時(shí), 針對(duì)沒(méi)有storageClass annotation的pvc,DefaultStorageClass會(huì)分配一個(gè)默認(rèn)的class, 這個(gè)默認(rèn)的class需要用戶指定,比如在創(chuàng)建storageclass對(duì)象時(shí)加入annotation,如 http://storageclass.beta.kubernetes.io/is-default-class: “true” 。如果有多個(gè)默認(rèn)的class, 則pvc會(huì)被拒絕創(chuàng)建, 如果用戶沒(méi)有指定默認(rèn)的class, 則這個(gè)DefaultStorageClass admission plugin不會(huì)起任何作用。 pvc會(huì)找那些no class的pv做綁定。當(dāng)DefaultStorageClass admission plugin沒(méi)有啟用時(shí), 針對(duì)沒(méi)有storageClass annotation的pvc, 會(huì)綁定no class的pv(pv中無(wú)class annotation, 或者其值為“”)

文章標(biāo)題:kubernetes的存儲(chǔ)類介紹
標(biāo)題網(wǎng)址:http://aaarwkj.com/article22/goopjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、小程序開(kāi)發(fā)域名注冊(cè)、、服務(wù)器托管、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
欧美激情一区二区三区蜜桃| 日韩精品视频性色首页| 日韩在线一区中文字幕| 欧美丝袜熟女日韩亚洲| 激情自拍偷拍合集一部| 91亚洲精品一区二区三区| 在线高清中文字幕三区| 麻豆午夜视频免费在线观看| 国产精品亚洲视频欧美视频| 午夜美女精品福利视频| 国产龙熟女高潮一区二区| 日韩电影一区二区在线观看中文字幕| 依依成人影院在线观看av| 国产日产亚洲欧美综合另类| 欧美精品久久在线观看| 国产成人91精品免费看片| 国产精品欧美久久久久久| 久久精品国产亚洲av麻豆尤物| 在线播放av男人的天堂| 欧美亚洲国产另类第一页| 欧美视频在线观看香蕉| 在线欧美亚洲观看天堂| 可以免费看黄的网久久| 亚洲欧美成人自偷自拍一区| av熟女一区二区三区| 国产成年人在线免费观看| 日本乱码一区二区三区在线观看| 欧美日韩另类激情免费| 亚洲精品一级理论片对面| 十八禁在线观看点击进入| 亚洲av中文久久精品国内| 蜜桃av网站免费观看| 五月天丁香婷婷一区二区| 国产精品亚洲视频欧美视频| 久久五月婷婷爱综合亚洲| 国产精品国产亚洲av| 国产尤物直播在线观看| 亚洲国产精品性色av| 日韩有码大片最新自拍| 国产91黑丝在线播放| 亚洲中文字幕伦理在线|