张春 发表于 2022-11-10 16:43:03

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

使用 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: 5Gipv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
    storage: 5Gi
accessModes:
    - ReadWriteMany
nfs:
    path: /nfs/pv
    server: 172.16.3.181# 创建目录
# mkdir -p /nfs/pv
# 创建 pvc.yaml ,内容见上
# vi pvc.yaml
# 创建 pv.yaml ,内容见上
# vi pv.yaml
# kubectl apply -f pvc.yaml
deployment.apps/nginx-pvs created
persistentvolumeclaim/my-pvc created
# 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
# kubectl apply -f pv.yaml
persistentvolume/my-pv created
# 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
# pwd
/nfs/pv
# vi index.html
hello pvc
# 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
# kubectl exec -it nginx-pvc-58b7bf955f-5clzg bash
kubectl exec is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec -- 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://img2022.cnblogs.com/blog/80824/202211/80824-20221109192939004-1342263969.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)