kubernetes 使用NFS搭建动态存储卷(PV/SorageClass/PVC)
在日常学习测试kubernetes时,经常需要PersistentVolume把一些数据(例如:数据库、日志等)存储起来,不随着容器的删除而丢失;关于PV、PVC、StorageClass的关系参考PV/PVC/StorageClass;存储卷的实现有很多种,此处选择比较容易实现的NFS作为存储;参考了网上好多资料,但都是不太完整,按照资料上的说明操作都有问题,所以在参考了众多资料之后决定记录一下过程,以供各位参考。
环境: centos-7(3.10.0-957.5.1.el7.x86_64)(node1, node2) kubernetes v1.13.0 helm v2.12.0
安装环境
安装kubernetes、helm
参考资料,在node1、node2上安装kubernetes和helm;
安装NFS
- 在node1上安装NFS Server
$ sudo yum -y install nfs-utils rpcbind
- 在服务端node1上配置共享目录
$ sudo mkdir /var/nfs $ sudo su //切换到root用户 $ echo "/var/nfs 192.168.0.0/24(rw,async,no_root_squash,no_all_squash,sync)" >> /etc/exports //配置共享目录 $ exit //退回原来用户 $ exportfs -r //让上面的配置生效
- 在服务端启动NFS服务
//必须先启动rpcbind服务,再启动nfs服务,这样才能让nfs服务在rpcbind服务上注册成功 $ sudo systemctl start rpcbind $ sudo systemctl start nfs-server
检查服务是否启动成功
$ showmount -e localhost Export list for localhost: /var/nfs 192.168.0.0/24
设置开机启动
$ sudo systemctl enable rpcbind $ sudo systemctl enable nfs-server
在客户端node2安装nfs-utils
**注意:所有kubernetes机器都需要安装nfs-utils,我就是没有在客户端安装nfs-utils,才卡在怎么测试PV、StorageClass、PVC都不通;
$ sudo yum install nfs-utils
可以参考资料,在客服端上测试NFS共享存储;
NFS作为动态存储卷
参考资料,在node1上使用helm安装NFS-Client Provisioner
$ helm install stable/nfs-client-provisioner --set nfs.server=x.x.x.x --set nfs.path=/exported/path --name nfs-client-provisioner
它会安装一个StorageClass
$ kubectl get sc NAME PROVISIONER AGE nfs-client cluster.local/nfs-client-provisioner 32h
设置默认StorageClass
使用PVC的时候需要创建并指定PV;如果没有创建PV,就会使用默认的StorageClass来创建相应的PV;否则PVC一直都是Pending的状态;
把上面创建StorageClass设置为默认的
$ kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' $ kubectl get sc NAME PROVISIONER AGE nfs-client (default) cluster.local/nfs-client-provisioner 32h
现在你可以尽情使用PVC了,而不用在去手动创建PV和StorageClass了;
参考资料(谢谢各位作者):
https://blog.csdn.net/jettery/article/details/72722324
https://www.kubernetes.org.cn/4956.html
https://www.kubernetes.org.cn/4022.html
https://blog.51cto.com/passed/2160149
https://blog.51cto.com/fengwan/2176889
https://github.com/kubernetes-incubator/external-storage/tree/master/nfs-client
https://k8smeetup.github.io/docs/tasks/administer-cluster/change-default-storage-class/

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
死磕 java集合之ConcurrentHashMap源码分析(三)——内含彩蛋
本章接着上两章,链接直达: 死磕 java集合之ConcurrentHashMap源码分析(一) 死磕 java集合之ConcurrentHashMap源码分析(二) 删除元素 删除元素跟添加元素一样,都是先找到元素所在的桶,然后采用分段锁的思想锁住整个桶,再进行操作。 public V remove(Object key) { // 调用替换节点方法 return replaceNode(key, null, null); } final V replaceNode(Object key, V value, Object cv) { // 计算hash int hash = spread(key.hashCode()); // 自旋 for (Node<K,V>[] tab = table;;) { Node<K,V> f; int n, i, fh; if (tab == null || (n = tab.length) == 0 || (f = tabAt(tab, i = (n - 1) & hash)) == null) // 如果目标key所...
- 下一篇
Spring event 使用完全指南
说明 此篇文章以 Spring 4.2+ 为例,在此版本之前略微有不同。 笔者自2014年起开始接触和使用 Spring event,根据 Spring event 的原理开发了 JFinal-event: https://gitee.com/596392912/JFinal-event ,方便 JFinal 用户使用,JFinal event 2.x 也同步成 Spring 4.2.x+ 的使用方式,不再需要创建多个 Listener 类,使用更加简单方便。 使用 创建 Event 事件监听 Spring 4.2+ 中不再需要单独编写监听器类,只需要在 Spring Bean 的方法上标记 @EventListener 注解即可。 示例:多个监听器,监听 Account 创建,完成不同的业务逻辑。 /** * 账号监听,处理账号创建成功的后续逻辑 */ @Component public class AccountListener { /** * 1. 发送邮件、短信 */ @EventListener public void processAccountCreatedEvent1(...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8安装Docker,最新的服务器搭配容器使用