zoukankan      html  css  js  c++  java
  • K8S 指定 nfs 挂载

    在项目中,pod 需要挂载外部的文件才可以使用
    创建 nfs 挂载点,并把文件放进去

    mkdir -p /data2/nfs/test_gc_wms/
    
    vi /etc/exports
    
    /data2/nfs/test_gc_wms          192.168.0.0/24(rw,sync,no_root_squash)
    
    # 重启 nfs
    systemctl restart rpcbind
    systemctl restart nfs
    
    # 关闭防火墙
    systemctl stop firewalld
    
    # 把需要的文件放入 /data2/nfs/test_gc_wms/
    
    # 测试是否正常提供 nfs 目录
    showmount -e 192.168.0.168
    
    

    创建 pv 和 pvc

    vi nfs.yaml
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: kl-test        # pv 名字
      namespace: klvchen
      labels:
        app: kl-test       # 定义 labels ap: kl-test
    spec:
      capacity:
        storage: 10Mi      # 定义容量
      accessModes:
        - ReadWriteMany    # 访问模式
      persistentVolumeReclaimPolicy: Retain # 回收策略
      storageClassName: nfs                 # 定义 storageClassName 只有相同名字的才能绑定在一起
      nfs:
        path: /data2/nfs/test_gc_wms
        server: 192.168.0.168
    
    ---
    
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: kl-test      # pvc 名字
      namespace: klvchen
    spec:
      storageClassName: nfs  # Name of Storage Class Name, use same class name defined in pv
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Mi     # amout of Storage request
      selector:
        matchLabels:
          app: kl-test      # 指定 pv 的标签 kl-test
    
    kubectl apply -f nfs.yaml
    

    创建使用 pvc 的例子

    # 注意该 worker 节点需要安装 nfs-utils 
    yum install nfs-utils -y
    
    vi demo.yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nfs-pvc
      namespace: klvchen
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nfs-pvc
      template:
        metadata:
          labels:
            app: nfs-pvc
        spec:
          containers:
          - name: nginx
            image: nginx:1.7.9
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: kl-test
              mountPath: /usr/share/nginx/html
          volumes:
          - name: kl-test
            persistentVolumeClaim:
              claimName: kl-test
    
    kubectl apply -f demo.yaml
    

    若想把 nfs 一个目录下两个文件夹分开挂载,可以使用 subPath, 在 nfs 目录下必须先包含 subPath 的目录

    cat /etc/exports
    /data2/nfs/test_gc_klvchen         172.18.186.0/24(rw,sync,no_root_squash)
    
    ls /data2/nfs/test_gc_klvchen/
    certs  sensitive
    
    # pvc 与 pv 不需要改变,在配置 volumeMounts 的时候指定 subPath 即可以让 nfs 目录下的 
    # certs 挂载到 容器中的 /usr/local/certs;
    # sensitive 挂载到容器中的 /usr/local/sensitive
    
        volumeMounts
          - name: "gc-klvchen"
            mountPath: "/usr/local/certs"
            subPath: "certs"
          - name: "gc-klvchen"
            mountPath: "/usr/local/sensitive"
            subPath: "sensitive"
      volumes:
        - name: "gc-klvchen"
          persistentVolumeClaim:
            claimName: "gc-klvchen"
    
    
    AccessModes 是用来对 PV 进行访问模式的设置,用于描述用户应用对存储资源的访问权限,访问权限包括下面几种方式:
    - ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
    - ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
    - ReadWriteMany(RWX):读写权限,可以被多个节点挂载
    
    persistentVolumeReclaimPolicy(回收策略) 这里指定的 PV 的回收策略为 Recycle,目前 PV 支持的策略有三种:
    - Retain(保留)- 保留数据,需要管理员手工清理数据
    - Recycle(回收)- 清除 PV 中的数据,效果相当于执行 rm -rf /thevoluem/*
    - Delete(删除)- 与 PV 相连的后端存储完成 volume 的删除操作,当然这常见于云服务商的存储服务,比如 ASW EBS。
    不过需要注意的是,目前只有 NFS 和 HostPath 两种类型支持回收策略。当然一般来说还是设置为 Retain 这种策略保险一点。
    
    PV 的生命周期中的状态,可能会处于4中不同的阶段:
    - Available(可用):表示可用状态,还未被任何 PVC 绑定
    - Bound(已绑定):表示 PVC 已经被 PVC 绑定
    - Released(已释放):PVC 被删除,但是资源还未被集群重新声明
    - Failed(失败): 表示该 PV 的自动回收失败
    
    StorageClassName 
    相同的PV和PVC才能够绑定到一起。
    例如:PVC 的StorageClassName设置为 "nfs",那么它只会和 StorageClassName 也为 "nfs" 的 PV 绑定到一起。
    
  • 相关阅读:
    javascript传值和页面跳转传值
    EXT使用方法汇总(5)——布局
    ext中ArrayStore,JsonStore,XmlStore的用法
    Ext学习系列(9) Ext.data.HttpProxy
    第一章 .NET体系结构
    session相关知识的收集于整理
    struts+spring+mybatis框架整合
    JBoss7 两种运行模式介绍
    Java获取本机mac地址
    JBoss7快速入门
  • 原文地址:https://www.cnblogs.com/klvchen/p/13723471.html
Copyright © 2011-2022 走看看