使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC) ...

张春  金牌会员 | 2022-11-10 16:43:03 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 571|帖子 571|积分 1713

使用 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
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: nginx-pvc
  5. spec:
  6.   replicas: 3
  7.   selector:
  8.     matchLabels:
  9.       app: nginx
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: nginx
  14.     spec:
  15.       containers:
  16.       - name: nginx
  17.         image: nginx
  18.         volumeMounts:
  19.         - name: wwwroot
  20.           mountPath: /usr/share/nginx/html
  21.         ports:
  22.         - containerPort: 80
  23.       volumes:
  24.       - name: wwwroot
  25.         persistentVolumeClaim:
  26.           claimName: my-pvc
  27. ---
  28. apiVersion: v1
  29. kind: PersistentVolumeClaim
  30. metadata:
  31.   name: my-pvc
  32. spec:
  33.   accessModes:
  34.     - ReadWriteMany
  35.   resources:
  36.     requests:
  37.       storage: 5Gi
复制代码
pv.yaml
  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4.   name: my-pv
  5. spec:
  6.   capacity:
  7.     storage: 5Gi
  8.   accessModes:
  9.     - ReadWriteMany
  10.   nfs:
  11.     path: /nfs/pv
  12.     server: 172.16.3.181
复制代码
  1. # 创建目录
  2. [root@k8smaster ~]# mkdir -p /nfs/pv
  3. # 创建 pvc.yaml ,内容见上
  4. [root@k8smaster ~]# vi pvc.yaml
  5. # 创建 pv.yaml ,内容见上
  6. [root@k8smaster ~]# vi pv.yaml
  7. [root@k8smaster ~]# kubectl apply -f pvc.yaml
  8. deployment.apps/nginx-pvs created
  9. persistentvolumeclaim/my-pvc created
  10. [root@k8smaster ~]# kubectl get pods
  11. NAME                         READY   STATUS    RESTARTS   AGE
  12. javademo1-d7856c75c-czv2g    1/1     Running   0          22h
  13. javademo1-d7856c75c-n28rs    1/1     Running   0          22h
  14. javademo1-d7856c75c-xzqjc    1/1     Running   0          22h
  15. nginx-f89759699-5hkdw        1/1     Running   0          26d
  16. nginx-nfs-788564fbc8-z9srr   1/1     Running   0          129m
  17. nginx-pvc-58b7bf955f-5clzg   0/1     Pending   0          7s
  18. nginx-pvc-58b7bf955f-lhvx4   0/1     Pending   0          7s
  19. nginx-pvc-58b7bf955f-z2cg6   0/1     Pending   0          7s
  20. [root@k8smaster ~]# kubectl apply -f pv.yaml
  21. persistentvolume/my-pv created
  22. [root@k8smaster ~]# kubectl get pv,pvc
  23. NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
  24. persistentvolume/my-pv   5Gi        RWX            Retain           Bound    default/my-pvc                           39s
  25. NAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
  26. persistentvolumeclaim/my-pvc   Bound    my-pv    5Gi        RWX                           2m13s
  27. [root@k8smaster pv]# pwd
  28. /nfs/pv
  29. [root@k8smaster pv]# vi index.html
  30. hello pvc
  31. [root@k8smaster ~]# kubectl get pods
  32. NAME                         READY   STATUS    RESTARTS   AGE
  33. javademo1-d7856c75c-czv2g    1/1     Running   0          22h
  34. javademo1-d7856c75c-n28rs    1/1     Running   0          22h
  35. javademo1-d7856c75c-xzqjc    1/1     Running   0          22h
  36. nginx-f89759699-5hkdw        1/1     Running   0          26d
  37. nginx-nfs-788564fbc8-z9srr   1/1     Running   0          133m
  38. nginx-pvc-58b7bf955f-5clzg   1/1     Running   0          3m17s
  39. nginx-pvc-58b7bf955f-lhvx4   1/1     Running   0          3m17s
  40. nginx-pvc-58b7bf955f-z2cg6   1/1     Running   0          3m17s
  41. [root@k8smaster ~]# kubectl exec -it nginx-pvc-58b7bf955f-5clzg bash
  42. kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
  43. root@nginx-pvc-58b7bf955f-5clzg:/# ls /usr/share/nginx/html/
  44. index.html
  45. root@nginx-pvc-58b7bf955f-5clzg:/# cat /usr/share/nginx/html/index.html
  46. hello pvc
  47. root@nginx-pvc-58b7bf955f-5clzg:/#
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张春

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表