介绍:

nfs-client-provisione是一个专门用于NFS外部目录挂载的控制器,当多个副本创建时,他们的命名方式如下:

  • pv provisioned as ${namespace}-${pvcName}-${pvName} 表示正在使用的
  • pv recycled as archieved-${namespace}-${pvcName}-${pvName}  POD delete操作后之前使用的PV目录名称前面会多出一个archieved-用于区分

现在测试:

1.安装NFS

NFS测试环境:腾讯云NFS文件存储(自建NFS也可以)

首先登陆腾讯云平台打开文件存储服务,新建一个服务,注意地址选择何K8S同一网络环境

这里我的NFS服务端地址是192.168.100.74~至此NFS已经创建完成

2.部署nfs-client-provisioner

下面用到的测试文件均是从官方文档种获取的

地址:https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client

我的K8S版本是1.10

kubectl create -f deployment.yaml

这里只需要修改你的NFS地址即可 /ifs/kubernetes 是你远程端NFS需要创建的目录记得提前创建,否则会报错创建PVC的时候会提示你让你手动创建目录

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: nfs-client-provisioner
.....
image: registry.cn-hangzhou.aliyuncs.com/lisong/nfs-client-provisioner:latest #地址默认是谷歌的,如果你没有翻墙请改成这个
.....  

kubectl create -f class.yaml

##千万注意上面第一个操作不要使用deployment去执行~否则你会发现POD无法创建

上面2部执行完成之后我们需要作RBAC认证,文件也在官方文档种有,目录是deploy/auth

kubectl create -f serviceaccount.yaml

kubectl create -f clusterrole.yaml

kubectl create -f clusterrolebinding.yaml

上述操作做完之后测试是否能够正常挂载

kubectl create -f test-clai.yaml # 声明,指定使用哪一个外部控制器以及对控制器资源的请求容量

kubectl create -f test-pod.yaml #创建测试POD

kind: Pod
apiVersion: v1
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: busybox:1.24 #官方的busybox地址是谷歌的,如果你没有翻墙请改成这个
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: test-claim

  

查看PO

现在我们请查看我们的NFS服务~因为NFS是使用的腾讯云的,所以我们找个地方挂载我们的根目录/

mount -t nfs -o vers=4 192.168.100.74:/ /testnfs/

~请记住

/testnfs/就是你的NFS根目录,不要搞混了~在POD上创建的挂在目录都是NFS上面的目录

完成,目录已创建~看一下是否创建了文件

文件也创建成功

NFS挂在还有2种方式

第一种:

第二种:

第二种和我提到的外部控制器原理是一样的~只是第一个PV将不需要由我们请创建和维护了~

具体就是 创建PV 包含了NFS的IP地址,NFS版本,模式,指定PV的大小 #NFS目录需要提前创建好,否则在创建PVC时候等提示,等待VLOUME创建,需要管理员请创建这个目录~

在然后就一样了,创建StorageClass,创建PVC,

如何使用:

跟test-pod.yaml使用方法一样。

kubernetes nfs-client-provisioner外部存储控制器的更多相关文章

  1. Rancher 2:添加 NFS client provisioner 动态提供 Kubernetes 后端存储卷

    一.前提说明 1.说明: NFS client provisioner 利用 NFS Server 给 Kubernetes 作为持久存储的后端,并且动态提供PV. 默认 rancher 2 的存储类 ...

  2. kubernetes/k8s CSI分析-容器存储接口分析

    更多 k8s CSI 的分析,可以查看这篇博客kubernetes ceph-csi分析,以 ceph-csi 为例,做了详细的源码分析. 概述 kubernetes的设计初衷是支持可插拔架构,从而利 ...

  3. Longhorn,Kubernetes 云原生分布式块存储

    Longhorn 是用于 Kubernetes 的轻量级.可靠且功能强大的分布式块存储系统. Longhorn 使用容器(containers)和微服务(microservices)实现分布式块存储. ...

  4. s3c2440存储控制器和地址以及启动的理解

    转自:http://blog.sina.com.cn/s/blog_5ddb672b0100fkcf.html 1.首先应该先了解Flash ROM的种类 NOR FLASH地址线和数据线分开,来了地 ...

  5. JZ2440开发笔记(6)——存储控制器

    存储控制器与CPU及其它外设的关系 我们看到cpu上集成了一个存储管理器,外围的存储设备都接在这个存储管理器上.cpu负责发出命令,其它的一切工作都交给了存储管理器.那么存储管理器是如何来管理这些外设 ...

  6. Kubernetes的三种外部访问方式:NodePort、LoadBalancer和Ingress(转发)

    原文 http://cloud.51cto.com/art/201804/570386.htm Kubernetes的三种外部访问方式:NodePort.LoadBalancer和Ingress 最近 ...

  7. u-boot移植(七)---代码修改---存储控制器

    一.CPU访问芯片的条件 CPU通过访问存储控制器,来读取外部设备的数据. CPU想访问一个芯片,需要如下条件(配置信息): 地址线 数据线:8位/16位/32位数据宽度 时钟/频率 其他芯片相关的特 ...

  8. JZ2440 裸机驱动 第6章 存储控制器

    本章目标:     了解S3C2410/S3C2440地址空间的布局     掌握如何通过总线形式访问扩展的外设,比如内存.NOR Flash.网卡等 ························ ...

  9. 存储控制器和SDRAM 实验

    S3C2440 存储控制器(memory controller)提供了訪问外部设备所需的信号,这是一种通过总线形式来訪问扩展的外设. S3C2440  的存储器控制器有下面的特性: 支持小字节序.大字 ...

随机推荐

  1. SpringMVC找不到对应的页面

    确认springmvc配置文件视图解析器配置正确. <!-- 视图解析器 --> <bean class="org.springframework.web.servlet. ...

  2. Java中的clone方法-理解浅拷贝和深拷贝

    最近学到Java虚拟机的相关知识,更加能理解clone方法的机制了 java中的我们常常需要复制的类型有三种: 1:8种基本类型,如int,long,float等: 2:复合数据类型(数组): 3:对 ...

  3. shell习题第8题:监控nginx的502状态

    [题目要求] 服务器上跑的是LNMP环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是nginx最为普遍的错误状态码. 由于502只是暂时的,并且只要一重启php-fpm服 ...

  4. 记遇到的一个php坑

    最近对项目的一个高访问量业务接口进行功能扩展,上线一段时间后,服务器cpu load突然飙升,并出现大量502.一开始找运维查看日志,并没有看是什么问题,后来发现别的部门项目之前也遇到类似的问题,原来 ...

  5. Security 安全框架1

    security 过滤器链 检查请求是否有请求信息-主要校验规则 UsernamePasswordAuthenticationFilter: 处理表单登录, 请求是否带用户名密码 BasicAuthe ...

  6. python 爬虫基础知识(继续补充)

    学了这么久爬虫,今天整理一下相关知识点,还会继续更新 HTTP和HTTPS HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法 ...

  7. 20155305乔磊2016-2017-2《Java程序设计》第三周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属 ...

  8. 20155308 2016-2017-2《Java程序设计》课程总结

    20155308 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:回答"我专业吗.我的老师.师生关系.代码问题"四个问题. 预备作业2 ...

  9. 2017-2018-1 20155319《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155319<信息安全技术>实验二--Windows口令破解 实验环境 试验系统:Windows 2003 实验工具:LC5.SuperDic 实验原理 一.口 ...

  10. 20155321 实验四 Android程序设计

    20155321 实验四 Android程序设计 安装Android studio成功 任务一:Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)( ...