zoukankan      html  css  js  c++  java
  • k8s之PV & PVC

    PV : PersistentVolume(持久化卷)

    它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。

    PVC:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明。

    PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可 以请求特定的存储空间和访问模式。

    以NFS作为示例:

    先在各节点安装nfs服务:

    1、关闭防火墙 

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    2、安装配置nfs

    yum -y install nfs-utils rpcbind

    3、设置共享目录的权限,chmod 755 $path (假设这里的path为 /data/k8s)【server端需配置】

    配置NFS: 默认配置文件是 /etc/exports ,添加以下信息

    /data/k8s *(rw,sync,no_root_squash)

    配置说明:

    /data/k8s:是共享的数据目录
    * :表示任何人都有权限连接,当然也可以是一个网段,一个 IP,也可以是域名

    rw:读写的权限
    sync:表示文件同时写入硬盘和内存
    no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名 使用者,通常它的 UID 与 GID,都会变成 nobody 身份

    启动nfs服务:先启动 rpcbind 再启动 nfs

    systemctl start rpcbind 

    systemctl enable rpcbind 

    systemctl start nfs 

    systemctl enable nfs 

    可以通过以下指令可以确认nfs是否启动成功:

    rpcinfo -p|grep nfs

    systemctl status nfs  

    查看具体目录挂载权限:  cat /var/lib/nfs/etab

    showmount -e $server_ip 查看nfs 服务端的是否有共享目录。【共享文件的服务器为server端,其他的为client端】

     mount -t $server_ip:$path  $client_path  挂载到指定路径

    可在client端 df -h 查看挂载目录

    使用yaml文件创建pv

     

     kubectl get pv 可查看pv

    使用yaml文件创建pvc,这里可以看到pv与pvc不存在任何的绑定的行为,是因为在k8s中pvc会自动去匹配适合的pv。

    主要是依据 labels、accessmodes、storage进行自动匹配的。

    【注意】这里要求pv满足或超过 pvc的条件才会去匹配的。

    譬如:pv的storage为2Gi; pv的storage为1Gi; 在 labels、accessmodes 符合的情况下,是可以自动匹配绑定的

    pvc已经绑定好pv了,就在pod中进行挂载了。 

    以下通过创建deployment 和service进行测试。

  • 相关阅读:
    【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包
    【Dart学习】-- Dart之异常处理
    【Dart学习】-- Dart之操作符
    【Dart学习】-- Dart之注释
    【dart学习】-- Dart之元数据
    【Dart学习】-- Dart之泛型
    利用Aspose文档转图片
    结合仓库设计MVC控制器
    分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架
    开发日记:接口开发设计
  • 原文地址:https://www.cnblogs.com/czz-zone/p/14212634.html
Copyright © 2011-2022 走看看