国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage

這篇具有很好參考價值的文章主要介紹了Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

kubernetes使用NFS共享存儲有兩種方式:

  • (1)手動方式靜態(tài)創(chuàng)建所需要的PV和PVC(見本文1.3.2小節(jié))。
  • (2)通過創(chuàng)建PVC動態(tài)地申請PV(見本文1.4.2小節(jié))。

一、Storage

Volume地址:https://kubernetes.io/docs/concepts/storage/

Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器


1.1、Volume

1.1.1、Volume簡介

volume(/?v?lju?m/,IT詞匯–百度百科): 在電腦中, volume(文件集)是一個可辨認(rèn)的數(shù)據(jù)存儲(storage)單元。

Volume地址:https://kubernetes.io/docs/concepts/storage/volumes/

容器中的磁盤文件是臨時的,這對于在容器中運行的非平凡(重大)應(yīng)用程序會帶來一些問題:

  • (1)容器崩潰時文件丟失。
  • (2)Kubelet重新啟動容器后為clean狀態(tài)。

在Pod中一起運行的容器之間共享文件時,會出現(xiàn)第二個問題。

Kubernetes的Volume抽象地解決了這兩個問題。


1.2.1、Host類型volume實戰(zhàn)

思路: 查看volume掛載目錄是否同步。

定義一個Pod,其中包含兩個Container,都使用Pod的Volume。

(1)創(chuàng)建volume-pod.yaml

創(chuàng)建volume-pod.yaml:

[root@m test]# mkdir volume
[root@m test]# cd volume
[root@m volume]# vi volume-pod.yaml

內(nèi)容:

apiVersion: v1
kind: Pod
metadata:
  name: volume-pod
spec:
  containers:
  - name: nginx-container
    image: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - name: volume-pod
      mountPath: /nginx-volume
  - name: busybox-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
    volumeMounts:
    - name: volume-pod
      mountPath: /busybox-volume
  volumes:
  - name: volume-pod
    hostPath:
      path: /tmp/volume-pod

(2)創(chuàng)建pod
[root@m volume]# kubectl apply -f volume-pod.yaml
pod/volume-pod created
[root@m volume]# 

[root@m volume]# kubectl get pod -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP               NODE   NOMINATED NODE   READINESS GATES
volume-pod   2/2     Running   0          82s   192.168.80.248   w2     <none>           <none>
[root@m volume]# 

(3)查看pod的容器ID

在volume-pod所在的集群節(jié)點,查看容器ID:

[root@w2 ~]# docker ps | grep volume

容器busybox-volume的ID為:a91b394009ff
容器nginx-volume的ID為:3a7201c4a656


(4)測試volume掛載目錄是否同步

① 在宿主系統(tǒng)中/tmp/volume-pod目錄創(chuàng)建1.txt:

[root@w2 ~]# cd /tmp/volume-pod
[root@w2 volume-pod]# vi 1.txt
[root@w2 volume-pod]# ls
1.txt
[root@w2 volume-pod]#

② 進(jìn)入nginx-volume容器查看/nginx-volume目錄

[root@w2 volume-pod]# docker exec -it a91b394009ff sh
/ # ls /busybox-volume
1.txt
/ # cat /busybox-volume/1.txt
1234
/ # exit
[root@w2 volume-pod]# 

③ 進(jìn)入busybox-volume容器查看/busybox-volume目錄

[root@w2 volume-pod]# docker exec -it 3a7201c4a656 sh
# ls /nginx-volume
1.txt
# cat /nginx-volume/1.txt
1234
# exit
[root@w2 volume-pod]# 

(5)測試結(jié)果

總結(jié):volume掛載目錄是同步的。


(6)刪除測試資源
[root@m volume]# kubectl delete -f volume-pod.yaml

[root@m volume]# rm volume-pod.yaml

1.2.3、查看pod中的容器里面的hosts文件

查看nginx-volume容器hosts

[root@w2 volume-pod]# docker exec -it 3a7201c4a656 cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
192.168.80.248	volume-pod
[root@w2 volume-pod]# 

查看busybox-volume容器的hosts文件

[root@w2 volume-pod]# docker exec -it a91b394009ff cat /etc/hosts
# Kubernetes-managed hosts file.
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
fe00::0	ip6-mcastprefix
fe00::1	ip6-allnodes
fe00::2	ip6-allrouters
192.168.80.248	volume-pod
[root@w2 volume-pod]# 

結(jié)論:

發(fā)現(xiàn)兩個容器的hosts是一樣的,并且都是由pod管理的。所以一般container中的存儲或網(wǎng)絡(luò)內(nèi)容,不要在container層面直接修改,而是在pod中進(jìn)行修改。


1.2、PersistentVolume(PV)

官網(wǎng):https://kubernetes.io/docs/concepts/storage/persistent-volumes/

PersistentVolume(PV)是已經(jīng)由管理員提供或者動態(tài)使用供應(yīng)的集群中的一塊存儲的存儲類。它是集群中的資源,就像節(jié)點是集群資源一樣。PV是類似于Volumes的卷插件,但是其生命周期獨立于使用PV的任何單個Pod。

yaml示例:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi    # 存儲空間大小
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce     # 只允許一個Pod進(jìn)行獨占式讀寫操作
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp            # 遠(yuǎn)端服務(wù)器的目錄
    server: 172.17.0.2    # 遠(yuǎn)端的服務(wù)器

PV是K8s中的資源,是volume的plugin實現(xiàn),生命周期獨立于Pod,封裝了底層存儲卷實現(xiàn)的細(xì)節(jié)。

注意:PV的維護(hù)通常是由運維人員、集群管理員進(jìn)行維護(hù)的。


1.3、PersistentVolumeClaim(PVC)

1.3.1、PVC簡介

官網(wǎng):https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims

有了PV,那Pod如何使用呢?為了方便使用,我們可以設(shè)計出一個PVC來綁定PV,然后把PVC交給Pod來使用即可,且聽下面的分析。

PersistentVolumeClaim(PVC)是由用戶進(jìn)行存儲的請求,它類似于pod,容器消耗節(jié)點資源,PVC消耗PV資源,Pod可以請求特定級別的資源(CPU和內(nèi)存),聲明可以請求特定的大小和訪問模式(例如,可以將它們安裝為ReadWriteOnce,ReadOnlyMany或ReadWriteMany)。

yaml示例:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

Pod中如何使用PVC示例:

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

PVC會匹配滿足要求的PV[是根據(jù)size和訪問模式進(jìn)行匹配的],進(jìn)行一一綁定,然后它們的狀態(tài)都會變成Bound,即PVC負(fù)責(zé)請求PV的大小和訪問方式,然后Pod中就可以直接使用PVC了。
?
注意:PVC通常由開發(fā)小伙伴維護(hù),開發(fā)小伙伴無需關(guān)注與存儲細(xì)節(jié)。

pod、pvc、pv關(guān)系圖:
Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器


1.3.2、Pod中使用PVC實戰(zhàn)

背景:使用nginx持久化存儲演示
?
(1) 共享存儲使用nfs,比如選擇在master節(jié)點。
(2) 創(chuàng)建pv和pvc。
(3) nginx pod中使用pvc。

(1)master節(jié)點搭建nfs

nfs(network file system)網(wǎng)絡(luò)文件系統(tǒng),是FreeBSD支持的文件系統(tǒng)中的一種,允許網(wǎng)絡(luò)中的計算機(jī)之間通過TCP/IP網(wǎng)絡(luò)共享資源。

在master節(jié)點上搭建一個NFS服務(wù)器,目錄為/nfs/data

01 選擇k8s集群的master節(jié)點作為nfs的server,所以在master節(jié)點上
    # 安裝nfs
	yum install -y nfs-utils
	# 創(chuàng)建nfs目錄
	mkdir -p /nfs/data/
	mkdir -p /nfs/data/mysql
	# 授予權(quán)限
	chmod -R 777 /nfs/data
	# 編輯export文件
	vi /etc/exports
	  內(nèi)容:/nfs/data *(rw,no_root_squash,sync)
	# 使得配置生效
	exportfs -r
	# 查看生效
	exportfs
	# 啟動rpcbind、nfs服務(wù)(并設(shè)置開機(jī)啟動)
	systemctl restart rpcbind && systemctl enable rpcbind
	systemctl restart nfs && systemctl enable nfs
	# 查看rpc服務(wù)的注冊情況
	rpcinfo -p localhost
	# showmount測試
	showmount -e
	
02 所有k8s集群node上都需要安裝客戶端,并啟動
	yum -y install nfs-utils
	systemctl start nfs && systemctl enable nfs

(2)為nfs服務(wù)器創(chuàng)建測試目錄(/nfs/data/nginx)
[root@m /]# mkdir -p /nfs/data/nginx

(3)創(chuàng)建nginx-pv-demo.yaml

在master節(jié)點,創(chuàng)建nginx-pv-demo.yaml,定義PV、PVC、Nginx:

[root@m /]# vi nginx-pv-demo.yaml

yaml內(nèi)容(修改nfs服務(wù)器IP):

# 定義PV
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nginx-pv
spec:
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 2Gi    
  nfs:
    path: /nfs/data/nginx     
    server: 192.168.116.170  
    
---
# 定義PVC,用于消費PV
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nginx-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  
---
# 定義Pod,指定需要使用的PVC
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels: 
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: mysql
        ports:
        - containerPort: 80
        volumeMounts:
        - name: nginx-persistent-storage
          mountPath: /usr/share/nginx/html
      volumes:
      - name: nginx-persistent-storage
        persistentVolumeClaim:
          claimName: nginx-pvc

(4)創(chuàng)建PV&PVC&Nginx

根據(jù)nginx-pv-demo.yaml配置創(chuàng)建資源,并查看資源:

#(1)創(chuàng)建資源
[root@m /]# kubectl apply -f nginx-pv-demo.yaml
persistentvolume/nginx-pv created
persistentvolumeclaim/nginx-pvc created
deployment.apps/nginx created
[root@m /]# 

#(2)查看pod
[root@m /]# kubectl get pod -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE   NOMINATED NODE   READINESS GATES
nginx-c4998fd44-8bwt2   1/1     Running   0          24s   192.168.80.249   w2     <none>           <none>
[root@m /]# 

#(3)查看pv和pvc
[root@m /]# kubectl get pv,pvc
NAME                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM               STORAGECLASS   REASON   AGE
persistentvolume/nginx-pv   2Gi        RWX            Retain           Bound    default/nginx-pvc                           28s

NAME                              STATUS   VOLUME     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/nginx-pvc   Bound    nginx-pv   2Gi        RWX                           28s
[root@m /]# 

(5)測試目錄同步

說明: 這里創(chuàng)建的nginx的pod的IP,在k8s的其他集群節(jié)點,ping不通,所以只能在w2(worker02)集群節(jié)點執(zhí)行curl測試。

#(1)創(chuàng)建任意測試文件test.html(內(nèi)容:abcd1234)
[root@m /]# vi /nfs/data/nginx/test.html

#(2)查看pod的IP
[root@m /]# kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE   NOMINATED NODE   READINESS GATES
nginx-c4998fd44-8bwt2   1/1     Running   0          19m   192.168.80.249   w2     <none>           <none>
[root@m /]# 

#(3)curl訪問pod測試(需要在w2(worker02)集群節(jié)點執(zhí)行)
[root@w2 ~]# curl 192.168.80.249/test.html
abcd1234
[root@w2 ~]# 

#(4)進(jìn)入nginx容器,查看同步目錄
[root@m /]# kubectl exec -it nginx-c4998fd44-8bwt2 -- bash
root@nginx-c4998fd44-8bwt2:/# cat /usr/share/nginx/html/test.html
abcd1234
root@nginx-c4998fd44-8bwt2:/# exit
exit
[root@m /]# 
(6)測試持久化存儲
#(1)刪除pod(deployment會自動維護(hù)創(chuàng)建新pod)
[root@m /]# kubectl delete pod nginx-c4998fd44-8bwt2
pod "nginx-c4998fd44-8bwt2" deleted
[root@m /]# 

#(2)查看新pod的IP
[root@m /]# kubectl get pods -o wide
NAME                    READY   STATUS    RESTARTS   AGE   IP               NODE   NOMINATED NODE   READINESS GATES
nginx-c4998fd44-j7mlf   1/1     Running   0          42s   192.168.80.250   w2     <none>           <none>
[root@m /]# 

#(3)curl再次訪問pod測試(需要在w2(worker02)集群節(jié)點執(zhí)行)
[root@w2 ~]# curl 192.168.80.250/test.html
abcd1234
[root@w2 ~]# 

(7)刪除測試資源
[root@m /]# kubectl delete -f nginx-pv-demo.yaml

[root@m /]# rm nginx-pv-demo.yaml


1.4、StorageClass

上面手動管理PV的方式還是有點low,能不能更加靈活一點呢?

1.4.1、StorageClass簡介

官網(wǎng):https://kubernetes.io/docs/concepts/storage/storage-classes/

nfs github:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs

????StorageClass為管理員提供了一種描述它們提供的存儲“classes”的方法。不同的classes可以映射到服務(wù)質(zhì)量級別、備份策略或集群管理員確定的任意策略。
????每個StorageClass都包含fields provisioner、parameters和reclaimPolicy,當(dāng)需要dynamically provisioned屬于該類的PersistentVolume(PV)時,就使用這些字段。
????StorageClass對象的名稱很重要的,它是用戶請求特定類的方式。管理員在首次創(chuàng)建StorageClass對象時設(shè)置類的名稱和其他參數(shù),創(chuàng)建對象后就不能再次更新對象。
?
????StorageClass聲明存儲插件,用于自動創(chuàng)建PV。
?????創(chuàng)建PV的模板,其中有兩個重要部分:PV屬性和創(chuàng)建此PV所需要的插件,這樣PVC就可以按“Class”來匹配PV。也可以為PV指定storageClassName屬性,標(biāo)識PV歸屬于哪一個Class。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
volumeBindingMode: Immediate

(1)對于PV或者StorageClass只能對應(yīng)一種后端存儲
(2)對于手動的情況,一般我們會創(chuàng)建很多的PV,等有PVC需要使用的時候就可以直接使用了
(3)對于自動的情況,那么就由StorageClass來自動管理創(chuàng)建
(4)如果Pod想要使用共享存儲,一般會在創(chuàng)建PVC,PVC中描述了想要什么類型的后端存儲、空間等,K8s從而會匹配對應(yīng)的PV,如果沒有匹配成功,Pod就會處于Pending狀態(tài)。Pod中使用只需要像使用volumes一樣,指定名字就可以使用了
(5)一個Pod可以使用多個PVC,一個PVC也可以給多個Pod使用
(6)一個PVC只能綁定一個PV,一個PV只能對應(yīng)一種后端存儲

Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器

有了StorageClass之后的PVC如下:

 kind: PersistentVolumeClaim
 apiVersion: v1
 metadata:
 name: test-claim1
 spec:
 accessModes:
     - ReadWriteMany
 resources:
   requests:
     storage: 1Mi
   storageClassName: nfs

StorageClass之所以能夠動態(tài)供給PV,是因為Provisioner,也就是Dynamic Provisioning。但是NFS這種類型,K8s中默認(rèn)是沒有Provisioner插件的,需要自己創(chuàng)建。


1.4.2、StorageClass實戰(zhàn)

github:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs

StorageClass之所以能夠動態(tài)供給PV,是因為Provisioner,也就是Dynamic Provisioning。但是NFS這種類型,K8s中默認(rèn)是沒有Provisioner插件的,需要自己創(chuàng)建。


(1)nfs準(zhǔn)備

nfs(network file system),已搭建在k8s集群的master節(jié)點。

nfs所在節(jié)點IP:192.168.116.170


(2)為nfs創(chuàng)建持久化目錄(/nfs/data/jack)
[root@m /]# mkdir -p /nfs/data/jack

(3)根據(jù)rbac.yaml(身份驗證)創(chuàng)建資源

① 創(chuàng)建yaml文件

[root@m test]# vi rbac.yaml

內(nèi)容:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: nfs-provisioner-runner
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: ["create", "update", "patch"]
  - apiGroups: [""]
    resources: ["services", "endpoints"]
    verbs: ["get"]
  - 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
     # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: ClusterRole
  name: nfs-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-provisioner
rules:
  - apiGroups: [""]
    resources: ["endpoints"]
    verbs: ["get", "list", "watch", "create", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: leader-locking-nfs-provisioner
subjects:
  - kind: ServiceAccount
    name: nfs-provisioner
    # replace with namespace where provisioner is deployed
    namespace: default
roleRef:
  kind: Role
  name: leader-locking-nfs-provisioner
  apiGroup: rbac.authorization.k8s.io

② 根據(jù)yaml創(chuàng)建資源

[root@m test]# kubectl apply -f rbac.yaml

(4)根據(jù)deployment.yaml文件創(chuàng)建資源

① 創(chuàng)建yaml文件

[root@m test]# vi deployment.yaml

內(nèi)容(注意修改nfs的IP地址):

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

② 根據(jù)yaml創(chuàng)建并查看資源

[root@m test]# kubectl apply -f deployment.yaml

[root@m test]# kubectl get pod -o wide

(5)根據(jù)class.yaml創(chuàng)建資源

① 創(chuàng)建yaml文件

[root@m test]# vi class.yaml

內(nèi)容:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: example-nfs
provisioner: example.com/nfs

② 根據(jù)yaml創(chuàng)建資源

[root@m test]# kubectl apply -f class.yaml

(5)根據(jù)pvc.yaml創(chuàng)建資源

① 創(chuàng)建yaml文件

[root@m test]# vi pvc.yaml

內(nèi)容:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi
  # 這個名字要和上面class.yaml中創(chuàng)建的storageclass名稱一致
  storageClassName: example-nfs

② 根據(jù)yaml創(chuàng)建并查看資源

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

[root@m test]# kubectl get pvc

狀態(tài)已經(jīng)變成了Bound狀態(tài),已經(jīng)動態(tài)創(chuàng)建了:
Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器


(6)根據(jù)nginx-pod創(chuàng)建資源

① 創(chuàng)建yaml文件

[root@m test]# vi nginx-pod

內(nèi)容:

kind: Pod
apiVersion: v1
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
      - name: my-pvc
        mountPath: "/usr/jack"
  restartPolicy: "Never"
  volumes:
    - name: my-pvc
      persistentVolumeClaim:
        claimName: my-pvc

② 根據(jù)yaml創(chuàng)建資源

[root@m test]# kubectl apply -f nginx-pod

[root@m test]# kubectl get pod -o wide
NAME                               READY   STATUS    RESTARTS   AGE     IP                NODE   NOMINATED NODE   READINESS GATES
nfs-provisioner-8688c9fd67-42g2k   1/1     Running   0          9m21s   192.168.190.106   w1     <none>           <none>
nginx                              1/1     Running   0          11s     192.168.80.251    w2     <none>           <none>
[root@m test]# 

(7)測試目錄同步

我們首先查看nfs的測試目錄/nfs/data/jack,發(fā)現(xiàn)它已經(jīng)為我們創(chuàng)建好了一個同步目錄(如下圖):
Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器

在同步目錄創(chuàng)建測試文件my.html:

#(1)進(jìn)入同步目錄
[root@m jack]# cd /nfs/data/jack/default-my-pvc-pvc-348bb4cd-559c-11eb-b58e-005056284f30
[root@m default-my-pvc-pvc-348bb4cd-559c-11eb-b58e-005056284f30]#

#(2)創(chuàng)建測試文件my.html(內(nèi)容:1234567890)
[root@m default-my-pvc-pvc-348bb4cd-559c-11eb-b58e-005056284f30]# vi my.html

進(jìn)入nginx容器內(nèi)部,查看對應(yīng)同步目錄:

[root@m ~]# kubectl exec -it nginx -- bash
root@nginx:/# 
root@nginx:/# ls /usr/jack
my.html
root@nginx:/# 
root@nginx:/# cat /usr/jack/my.html
1234567890
root@nginx:/# 

結(jié)論: 發(fā)現(xiàn)內(nèi)容同步成功,即pvc動態(tài)幫我們創(chuàng)建了pv,且測試同步成功。


1.5、PV的狀態(tài)和回收策略

  • PV的狀態(tài)

Available:表示當(dāng)前的pv沒有被綁定
Bound:表示已經(jīng)被pvc掛載
Released:pvc沒有在使用pv, 需要管理員手工釋放pv
Failed:資源回收失敗

  • PV回收策略

Retain:表示刪除PVC的時候,PV不會一起刪除,而是變成Released狀態(tài)等待管理員手動清理
Recycle:在Kubernetes新版本就不用了,采用動態(tài)PV供給來替代
Delete:表示刪除PVC的時候,PV也會一起刪除,同時也刪除PV所指向的實際存儲空間

注意:目前只有NFS和HostPath支持Recycle策略。AWS EBS、GCE PD、Azure Disk和Cinder支持Delete策略。

Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage,Kubernetes,kubernetes,學(xué)習(xí),容器文章來源地址http://www.zghlxwxcb.cn/news/detail-852700.html

到了這里,關(guān)于Kubernetes(K8S)學(xué)習(xí)(四):K8S之Storage的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 學(xué)習(xí) Kubernetes(K8s)、常用命令

    學(xué)習(xí) Kubernetes(K8s)是現(xiàn)代云原生應(yīng)用開發(fā)和部署的關(guān)鍵,它提供了一種靈活的、自動化的方式來管理容器化的應(yīng)用程序。下面是學(xué)習(xí) Kubernetes 和一些常見命令的建議: 官方文檔 :Kubernetes官方文檔是學(xué)習(xí)的最佳資源之一。它包含了全面的指南、教程和參考文檔,從基礎(chǔ)概念

    2024年02月20日
    瀏覽(39)
  • K8s(Kubernetes)學(xué)習(xí)(六)——Ingress

    K8s(Kubernetes)學(xué)習(xí)(六)——Ingress

    什么是 Ingress Ingress 和 Service 區(qū)別 Ingress 控制器 Traefik 使用 Ingress Route的定義 1 簡介 https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/ Ingress 是一種 Kubernetes 資源類型,它允許在 Kubernetes 集群中暴露 HTTP 和 HTTPS 服務(wù) 。通過 Ingress,您可以將流量路由到不同的服務(wù)和端點,而

    2024年02月07日
    瀏覽(59)
  • 01-k8s學(xué)習(xí)筆記之認(rèn)識 Kubernetes

    應(yīng)用部署的三大階段 k8s 的特點 Apache Mesos Docker Swarm Google Kubernetes

    2024年01月16日
    瀏覽(29)
  • kubernetes(K8S)學(xué)習(xí)(一):K8S集群搭建(1 master 2 worker)

    kubernetes(K8S)學(xué)習(xí)(一):K8S集群搭建(1 master 2 worker)

    kubernetes官網(wǎng) :https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectl GitHub :https://github.com/kubernetes/kubeadm 本文 :使用kubeadm搭建一個3臺機(jī)器組成的k8s集群,1臺master節(jié)點,2臺worker節(jié)點。 由于k8s安裝較麻煩,為防止出現(xiàn)其他異常,特此

    2024年04月09日
    瀏覽(23)
  • 從零開始學(xué)習(xí)K8s系列——Kubernetes指南

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) Kubernetes(簡稱k8s)是一個開源的,用于自動部署、擴(kuò)展和管理容器化的應(yīng)用的平臺。它主要提供四大功能,包括: 服務(wù)發(fā)現(xiàn)和負(fù)載均衡 :Kubernetes集群中的服務(wù)能夠自動地尋找其他運行著的服務(wù)并進(jìn)行負(fù)載均衡。 存儲編排 :Kubernetes允許用戶

    2024年02月06日
    瀏覽(50)
  • liqo學(xué)習(xí)及安裝,k8s,kubernetes多集群互聯(lián)

    liqo學(xué)習(xí)及安裝,k8s,kubernetes多集群互聯(lián)

    先按照官方的教程在虛擬機(jī)安裝學(xué)習(xí) Docker,容器運行時。 Kubectl,Kubernetes 的命令行工具。 Helm,Kubernetes 的包管理器。 curl,通過 HTTP/HTTPS 與教程應(yīng)用程序交互。 Kind,Docker 運行時中的 Kubernetes。(在docker中運行的Kubernetes,主要做測試用) liqoc??tl與 Liqo 交互的命令行工具。

    2024年04月22日
    瀏覽(52)
  • K8s(Kubernetes)學(xué)習(xí)(三):pod概念及相關(guān)操作

    K8s(Kubernetes)學(xué)習(xí)(三):pod概念及相關(guān)操作

    摘取官網(wǎng): https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/#working-with-pods 1.1 簡介 Pod 是可以在 Kubernetes 中 創(chuàng)建和管理的、最小的可部署的計算單元 。 Pod (就像在鯨魚莢或者豌豆莢中) 是一組(一個或多個)容器 ; 這些容器共享存儲、網(wǎng)絡(luò)、以及怎樣運行這些容器的聲明。 P

    2024年02月13日
    瀏覽(90)
  • 運維高級學(xué)習(xí)--Kubernetes(K8s 1.28.x)部署

    運維高級學(xué)習(xí)--Kubernetes(K8s 1.28.x)部署

    主機(jī)名規(guī)劃 1.配置IP地址和主機(jī)名、hosts解析 2.關(guān)閉防火墻、禁用SELinux 3.安裝常用軟件 4.時間同步 5.禁用Swap分區(qū) 6.修改linux的內(nèi)核參數(shù) 7.配置ipvs功能 1.定制軟件源 2.安裝最新版docker 3.配置docker加速器 4.啟動docker 定制軟件源(所有主機(jī)操作) 在倉庫中新建項目:google_container

    2024年02月11日
    瀏覽(33)
  • kubernetes(k8s)大白學(xué)習(xí)02:容器和docker基礎(chǔ)、使用、架構(gòu)學(xué)習(xí)

    kubernetes(k8s)大白學(xué)習(xí)02:容器和docker基礎(chǔ)、使用、架構(gòu)學(xué)習(xí)

    簡單說:容器(container)就是計算機(jī)上的一個沙盒進(jìn)程,它與計算機(jī)上的所有其它進(jìn)程相隔離。 這種隔離是怎么做到的呢?它利用了內(nèi)核提供的 namespace 和 cgroup 這 2 種技術(shù)。這些技術(shù)能力在 Linux 中已經(jīng)存在了很長時間。而 Docker 或容器技術(shù)致力于將這些功能更易于使用和更

    2024年02月07日
    瀏覽(45)
  • Kubernetes(k8s)實戰(zhàn):Kubernetes(k8s)部署Springboot項目

    Kubernetes(k8s)實戰(zhàn):Kubernetes(k8s)部署Springboot項目

    wordpress是用于快速搭建博客系統(tǒng)。 該yaml文件創(chuàng)建一個mysql,并且生成一個service,service對外暴露的端口是3306 我們發(fā)現(xiàn),搭建成功了,用瀏覽器訪問192.168.56.101:30493,發(fā)現(xiàn)訪問成功了! 在集群中,pod之間可以通過service 的name進(jìn)行訪問,不僅僅是ip,這就意味著,service中不僅幫

    2024年02月12日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包