使用 Kubeadm 部署 Kubernetes(K8S) 安裝 -- 持久化存盤(NFS網路存盤)
NFS 存在一個弊端,需要知道NFS服務器的地址,配在 yaml 中
PV:持久化存盤,對存盤資源進行抽象,對外提供可以呼叫的地方
PVC:用于呼叫,不需要關心內部實作細節
PV(PersistentVolume):是集群中由管理員配置的一段網路存盤, 它是集群中的資源, 就像節點是集群資源一樣, PV 是容量插件, 如 Volumes, 但其生命周期獨立于使用 PV 的任何單個 pod, 此 API 物件捕獲存盤實作的詳細資訊, 包括 NFS, iSCSI 或特定于云提供程式的存盤系統,
PVC(PersistentVolumeClaim):是由用戶進行存盤的請求, 它類似于 pod, Pod 消耗節點資源, PVC 消耗 PV 資源, Pod 可以請求特定級別的資源( CPU 和記憶體) , 宣告可以請求特定的大小和訪問模式( 例如, 可以一次讀/寫或多次只讀) ,
雖然 PersistentVolumeClaims 允許用戶使用抽象存盤資源, 但是 PersistentVolumes 對于不同的問題, 用戶通常需要具有不同屬性( 例如性能) , 群集管理員需要能夠提供各種PersistentVolumes 不同的方式, 而不僅僅是大小和訪問模式, 而不會讓用戶了解這些卷的實作方式, 對于這些需求, 有 StorageClass 資源,
StorageClass 為管理員提供了一種描述他們提供的存盤的“ 類” 的方法, 不同的類可能映射到服務質量級別, 或備份策略, 或者由群集管理員確定的任意策略, Kubernetes 本身對于什么類別代表是不言而喻的, 這個概念有時在其他存盤系統中稱為“ 組態檔” ,
PVC 和 PV 是一一對應的
PV 是群集中的資源, PVC 是對這些資源的請求, 并且還充當對資源的檢查, PV 和 PVC 之間
的相互作用遵循以下生命周期:
Provisioning ——-> Binding ——– >Using——>Releasing——>Recycling
應用部署 、定義PVC(系結PV)、定義PV(資料存盤服務器IP,路徑)
創建YAML檔案
pvc.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-pvc
spec:
replicas: 3
selector:
matchLabels:
app: nginx
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
persistentVolumeClaim:
claimName: my-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /nfs/pv
server: 172.16.3.181
# 創建目錄
[root@k8smaster ~]# mkdir -p /nfs/pv
# 創建 pvc.yaml ,內容見上
[root@k8smaster ~]# vi pvc.yaml
# 創建 pv.yaml ,內容見上
[root@k8smaster ~]# vi pv.yaml
[root@k8smaster ~]# kubectl apply -f pvc.yaml
deployment.apps/nginx-pvs created
persistentvolumeclaim/my-pvc created
[root@k8smaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
javademo1-d7856c75c-czv2g 1/1 Running 0 22h
javademo1-d7856c75c-n28rs 1/1 Running 0 22h
javademo1-d7856c75c-xzqjc 1/1 Running 0 22h
nginx-f89759699-5hkdw 1/1 Running 0 26d
nginx-nfs-788564fbc8-z9srr 1/1 Running 0 129m
nginx-pvc-58b7bf955f-5clzg 0/1 Pending 0 7s
nginx-pvc-58b7bf955f-lhvx4 0/1 Pending 0 7s
nginx-pvc-58b7bf955f-z2cg6 0/1 Pending 0 7s
[root@k8smaster ~]# kubectl apply -f pv.yaml
persistentvolume/my-pv created
[root@k8smaster ~]# kubectl get pv,pvc
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/my-pv 5Gi RWX Retain Bound default/my-pvc 39s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/my-pvc Bound my-pv 5Gi RWX 2m13s
[root@k8smaster pv]# pwd
/nfs/pv
[root@k8smaster pv]# vi index.html
hello pvc
[root@k8smaster ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
javademo1-d7856c75c-czv2g 1/1 Running 0 22h
javademo1-d7856c75c-n28rs 1/1 Running 0 22h
javademo1-d7856c75c-xzqjc 1/1 Running 0 22h
nginx-f89759699-5hkdw 1/1 Running 0 26d
nginx-nfs-788564fbc8-z9srr 1/1 Running 0 133m
nginx-pvc-58b7bf955f-5clzg 1/1 Running 0 3m17s
nginx-pvc-58b7bf955f-lhvx4 1/1 Running 0 3m17s
nginx-pvc-58b7bf955f-z2cg6 1/1 Running 0 3m17s
[root@k8smaster ~]# kubectl exec -it nginx-pvc-58b7bf955f-5clzg bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
root@nginx-pvc-58b7bf955f-5clzg:/# ls /usr/share/nginx/html/
index.html
root@nginx-pvc-58b7bf955f-5clzg:/# cat /usr/share/nginx/html/index.html
hello pvc
root@nginx-pvc-58b7bf955f-5clzg:/#

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/531492.html
標籤:其他
