kubernetes 实战 使用 nfs 作为动态 storageClass 存储
kubernetes 实战 使用 nfs 作为动态 storageClass 存储
概述
之前有介绍过 Kubernetes 实战 pv and pvc, 相信使用过的pv和pvc的同学或者有过虚拟化经验的人来说肯定会想到很多问题,比如每次申请 pvc 都需要手动添加pv,这岂不是太不方便了。那我们如何实现类似于公有云或者私有云的共享存储模式呢?kubernetes 提供了 storageclass 的概念,接下来我们来一探究竟。
本文通过 nfs 来讲解,首先需要注意的是 nfs默认不支持动态存储,使用了第三方的NFS插件 external-storage, kubernetes
官网也有会叫详细的解析。
先上一张图大家就比较清楚了:
基础环境
nfs 存储
pv、pvc 的基础
kubernetes 集群
操作步骤
保证基础环境部分就绪
1. 准备
clone external-storage
git clone https://github.com/kubernetes-incubator/external-storage.git
部署 rbac
cd external-storage/nfs-client/deploy
kubectl apply -f rbac.yaml
1
2
2. 部署 nfs client 插件
修改deployment.yml配置, 修改 nfs 配置信息。
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
image: quay.io/external_storage/nfs-client-provisioner:latest
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: fuseim.pri/ifs
- name: NFS_SERVER
value: 192.168.8.220 # nfs 服务器ip
- name: NFS_PATH
value: /root/work/storage/nfs # 存储地址
volumes:
- name: nfs-client-root
nfs:
server: 192.168.8.220 # nfs 服务器ip
path: /root/work/storage/nfs # 存储地址
创建客户端
kubectl apply -f deployment.yaml
创建storage class
kubectl apply -f class.yaml
查看 nfs 客户端 和 storage class:
客户端
[root@node3 deploy]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nfs-client-provisioner-7695c66c6b-56sbw 1/1 Running 0 10m
storage class
[root@node3 deploy]# kubectl get sc
NAME PROVISIONER AGE
managed-nfs-storage fuseim.pri/ifs 10m
3. 创建pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-claim
annotations:
volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
spec:
accessModes: # 策略
- ReadWriteMany
resources:
requests:
storage: 1Mi # 请求空间大小
创建
kubectl apply -f test-claim.yaml
查看 pvc
[root@node3 deploy]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-claim Bound pvc-2febc25a-d2b0-11e9-9623-000c29b3776e 1Mi RWX managed-nfs-storage 14s
4. 部署测试pod
kind: Pod
apiVersion: v1
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: nginx
command:
- "/bin/sh"
args:
- "-c"
- "touch /mnt/SUCCESS && exit 0 || exit 1"
volumeMounts:
- name: nfs-pvc # 绑定pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: nfs-pvc #pvc 通过pvc 动态创建pv
persistentVolumeClaim:
claimName: test-claim
创建 测试 pod
kubectl apply -f test-pod.yaml
1
查看pod
[root@node3 deploy]# kubectl get pod | grep pod
test-pod 0/1 Completed 0 81s
1
2
查看 pv 是否动态创建:
[root@node3 deploy]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-e78d0817-d2b0-11e9-9623-000c29b3776e 1Mi RWX Delete Bound default/test-claim managed-nfs-storage 22m
1
2
3
好了是不是用起来很方便,还有其他的很多存储可以测试自己搞一套试试。
github 地址
kubernetes 实战 使用 nfs 作为动态 storageClass 存储相关推荐
- 实战Kubernetes动态卷存储(NFS)
之前的< Kubernetes持久卷实战两部曲>系列中,我们实战了先声明一个存储卷,再使用这个存储卷,这种方式要求每次都要提前申明存储,不是很方便,而动态卷存储不需要提前申明,而是使用时自 ...
- Kubernetes之PersistentVolumeClaim 静态与动态供给实现NFS网络存储(李作强)
PersistentVolume 静态供给 网络存储 NFS是一种很早的技术,单机的存储在服务器方面还是非常主流的,但nfs唯一的就是缺点比较大就是没有集群版,做集群化还是比较费劲的,文件系统做不了, ...
- 【Kubernetes存储篇】StorageClass存储类动态生成PV详解
文章目录 一.StorageClass存储类理论 二.案例:Storageclass存储类实战演示 1.搭建NFS服务端 2.搭建NFS供应商(provisioner) 3.创建StorageClas ...
- 使用nfs为k8s提供pv动态供给存储
环境:k8s一主两从 k8s version: 1.20.2 k8s-master: 192.168.31.200 k8s-node1: 192.168.31.201 k8s-node2: 192.1 ...
- Kubernetes学习总结(15)—— Kubernetes 实战之部署 Mysql 集群
前言 一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板创建多个 pod 副本,但是它们都是无状态的,任何时候它们都可以被一个全新的 pod 替换.然而有状态的 p ...
- k8s——pv(静态+动态storageclass)与pvc
k8s--pv(静态+动态storageclass)与pvc PVC和PV PV概念 PVC概念 PV与PVC之间的关系 两种PV的提供方式 基于nfs创建静态PV资源和PVC资源 配置nfs存储(1 ...
- 【云原生之kubernetes实战】在k8s集群下部署Weave Scope监控平台
[云原生之kubernetes实战]在k8s集群下部署Weave Scope监控平台 一.Weave Scope介绍 1.Weave Scope简介 2.Weave Scope的特点 3.Weave ...
- 阿里云Kubernetes实战2–搭建基础服务
前言: 在系列的第一篇文章中,我已经介绍过如何在阿里云基于kubeasz搭建K8S集群,通过在K8S上部署gitlab并暴露至集群外来演示服务部署与发现的流程.文章写于4月,忙碌了小半年后,我才有时间 ...
- Kubernetes - - k8s - v1.12.3 动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群
1,准备工作 1.1 所有节点安装GFS客户端 yum install glusterfs glusterfs-fuse -y 1.2 如果不是所有节点要部署GFS管理服务,就在需要部署的节点上打上标 ...
最新文章
- puppeteer爬虫的奇妙之旅
- ubunu16.04 TensorFlow object detection API 应用配置
- 微软(北京).NET俱乐部 2008雪上激情之旅-续
- unity 200.8m yoy_没错,Unity双十一来了
- 前端临床手扎——简单易用的fetch
- 深入分析线程池的实现原理
- 新手学测试----Unit Test(单元测试)
- 什么是node网站服务器,node.js
- 苹果第一财季营收1239亿美元 iPhone、Mac及服务营收均创下新高
- 在计算机软件中 CUI的中文意思是,长江大学 计算机基础11-12上A卷cui
- Atitit. Api 设计 原则 ---归一化
- 自制汉字字库,识别汉字(三)(汉字篇)
- WiFi通信字节乱码问题的产生原因及解决方法
- 新编计算机英语第二版,新编计算机英语-电子教案
- 豆芽的生长过程观察日记-绿豆发芽观察日记7天-2021年
- 使用超级用户登录系统linux,登录和退出Linux系统
- 【成神之路】多线程并发相关面试题
- 麦克风阵列定位matlab算法,基于麦克风阵列的MUSIC声源定位算法研究
- 大道争锋手游如何在电脑上玩 大道争锋手游拟器教程
- CAD在线转换PDF格式怎么操作?