zoukankan      html  css  js  c++  java
  • kubernetes之配置Pod的PersistentVolume存储

    简介

    此文讲解如何使用PersistentVolumeClaim配置Pod存储,步骤如下:

    • 作为群集管理员,创建一个由物理存储支持的PersistentVolume。没有将卷与任何Pod相关联。
    • 以开发人员/集群用户的身份创建一个PersistentVolumeClaim,它自动绑定到合适的PersistentVolume
    • 创建一个使用上述PersistentVolumeClaim进行存储的Pod。

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    开始前的准备工作

    选择集群中的一个node节点,进入shell,创建/mnt/data目录

    # mkdir /mnt/data
    

    进入/mnt/data目录,创建一个index.html的文件

    # sudo sh -c "echo 'Hello from Kubernetes storage' > /mnt/data/index.html"
    

    查看文件是否是否创建成功

    cat /mnt/data/index.html
    

    输出内容如下

    Hello from Kubernetes storage
    

    创建PersistentVolume

    创建一个hostPath类型的创建PersistentVolume。Kubernetes支持在集群一个node节点上使用hostPath开发和测试。hostPath类型的PersistentVolume使用node节点上的文件或目录来模拟网络附加存储。

    在生产环境中,不要使用hostPath。集群管理员可以用Google Compute Engine persistent diskNFSAmazon Elastic Block Store volume提供的网络存储来代替。集群管理员可以可使用StorageClasses设置dynamic provisioning

    创建hostPath类型的PersistentVolume对象,文件问:pv-volume.yaml

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: task-pv-volume
      labels:
        type: local
    spec:
      storageClassName: manual
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    

    配置文件定义的volumes是集群node节点上的/mnt/data。配置中指定了存储大小为10 gibibytesReadWriteOnce模式,也就意味着在被挂载的单一节点上可读可写。配置中定义的StorageClass namemanual,绑定PersistentVolumeClaim请求到PersistentVolume

    # kubectl apply -f /root/k8s-example/volume/pv-volume.yaml
    

    查看PersistentVolume资源详情

    # kubectl get pv task-pv-volume -o wide
    

    结果显示PersistentVolumeSTATUSAvailable。说明该PersistentVolume还没有绑定PersistentVolumeClaim

    NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE   VOLUMEMODE
    task-pv-volume   10Gi       RWO            Retain           Available           manual                  9s    Filesystem
    

    创建PersistentVolumeClaim

    接下来创建PersistentVolumeClaim。Pod使用PersistentVolumeClaim请求物理存储。

    创建一个PersistentVolumeClaim,该请求的卷至少为3 gibibytes,可以为至少一个节点提供读写访问权限。文件名:pv-claim.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: task-pv-claim
    spec:
      storageClassName: manual
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 3Gi
    
    # kubectl apply -f /root/k8s-example/volume/pv-claim.yaml
    

    查看PersistentVolume的资源详情,

    # kubectl get pv task-pv-volume
    
    NAME             CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                   STORAGECLASS   REASON   AGE
    task-pv-volume   10Gi       RWO            Retain           Bound    default/task-pv-claim   manual                  28m
    

    查看PersistentVolumeClaim资源状态

    # kubectl get pvc task-pv-claim
    

    输出结果显示PersistentVolumeClaim已绑定PersistentVolumetask-pv-volume

    NAME            STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    task-pv-claim   Bound    task-pv-volume   10Gi       RWO            manual
    

    创建Pod

    创建Pod,使用PersistentVolumeClaim作为volume。文件名:pv-pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: task-pv-claim
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage
    
    # kubectl apply -f /root/k8s-example/volume/pv-pod.yaml
    
    # kubectl get pod task-pv-pod
    
    NAME          READY   STATUS    RESTARTS   AGE
    task-pv-pod   1/1     Running   0          14s
    

    进入task-pv-pod的shell中

    kubectl exec -it task-pv-pod -- /bin/bash
    

    在shell中,验证nginx是否正在从hostPath卷提供index.html文件

    apt update
    apt install curl
    curl http://localhost/
    

    输出结果如下:

    Hello from Kubernetes storage
    

    如果看到该消息,则说明您已成功将Pod配置为使用来自PersistentVolumeClaim的存储。

    清理资源

    kubectl delete pod task-pv-pod
    kubectl delete pvc task-pv-claim
    kubectl delete pv task-pv-volume
    

    在创建/mnt/data目录的node节点上,删除目录

    sudo rm /mnt/data/index.html
    sudo rmdir /mnt/data
    
  • 相关阅读:
    关于document.body.scrollLeft总是0的原因
    转载:如何配置 SQL Server 2005 以允许远程连接
    【转载】SQL Server中Rollup关键字使用技巧
    JavaScript代码优化
    JavaScript中定义类或对象
    【转载】SQLServer2005 Pivot 转置使用动态列
    迅雷刷分
    ROW_NUMBER() OVER函数的基本用法用法
    FireFox下表单无法刷新重置的解决
    SQL 远程查询
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12220856.html
Copyright © 2011-2022 走看看