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 地址

任何程序错误,以及技术疑问或需要解答的,请添加

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV环境搭建(一)

OpenCV环境搭建 环境搭建为OpenCV的python(一下简称py)开发环境搭建,建立在py3的环境和语法上实现的。 windows系统搭建 系统环境:windows 10 python 3.6 OpenCV 3.4.1 一、安装python python的安装之前在python自学笔记的项…

判断一组数字中

public class sushu{public static void main (String args []){//定义i数字范围为100-200&#xff1b;for (int i 100 ; i < 200; i){//定义一个变量bboolean b false;//定义j大于等于2&#xff0c;循环取余数&#xff0c;判断如果K等于0则除尽&#xff0c;此数不为素数f…

git+pylint实现python提交代码格式校验

环境&#xff1a;win10(64)&#xff0c;python3.7.1&#xff0c;git2.7.2&#xff0c;pylint-2.3.1&#xff0c;git_pylint_commit_hook-2.5.1 以上为当期搭建所用到的版本&#xff0c;有异常时方便查找问题。 安装pylint&#xff0c;pylint是一个单独可以对python文件进行格…

OpenCV添加中文(五)

OpenCV添加文字的方法putText(…)&#xff0c;添加英文是没有问题的&#xff0c;但如果你要添加中文就会出现“&#xff1f;&#xff1f;&#xff1f;”的乱码&#xff0c;需要特殊处理一下。 下文提供封装好的&#xff08;代码&#xff09;方法&#xff0c;供OpenCV添加中文使…

UpdatePanel的内容中出现自定义多语言运行异常

2019独角兽企业重金招聘Python工程师标准>>> 我们项目有双语要求&#xff0c;采用的是自定义符号控制。在页面加载时进行翻译。 在xml文件中有如下格式的配置 <items> <resource page"~/SalesAppeal/SalesAppealCO.aspx"> <item key"…

ELK开机自启动脚本

elasticsearch服务配置文件 cd /etc/init.dtouch elasticsearchchmod x elasticsearchvi elasticsearch并输入以下内容: #!bin/bash# chkconfig: 2345 21 89 # description: elasticsearch# JAVA_HOME/usr/lib/jvm/jdk1.8.0_91 ES_HOME/usr/local/elasticsearch-6.7.2 case…

QT5获取QPlainTextEdit 某行内容

#include <QTextBlock> #include <QMessageBox>QString str;//获取总行数 str QString::number(ui->plainTextEdit->document()->lineCount()); QMessageBox::information(this, "information", str);//输出某行内容 str ui->plainTextEdi…

pip/pip3更换国内源

pip/pip3更换国内源 用途&#xff1a;pip更换为国内源&#xff0c;可以大大的提高安装成功率和速度。 Windows更换pip/pip3源 打开目录&#xff1a;%appdata%新增pip文件夹&#xff0c;新建pip.ini文件给pip.ini添加内容 [global] timeout 6000 index-url https://pypi.t…

使用Bazel编译报错ERROR: Unrecognized option: --experimental_repo_remote_exec解决方法

ERROR: Unrecognized option: --experimental_repo_remote_exec 一、问题&#xff1a; INFO: Options provided by the client:Inherited common options: --isatty1 --terminal_columns80 INFO: Reading rc options for version from /home/emadboctor/tensorflow/.bazelrc:I…

QT5获取CPU编号和硬盘序列号

windows下执行命令除了用cmd之外&#xff0c;还有个东西叫WMIC&#xff0c;非常强大&#xff0c;可以通过他获取很多信息&#xff0c;包括硬件信息。 #include <QProcess>QString frmMain::getWMIC(const QString &cmd) {//获取cpu名称&#xff1a;wmic cpu get Nam…

视频人脸检测——Dlib版(六)

往期目录 视频人脸检测——Dlib版&#xff08;六&#xff09; OpenCV添加中文&#xff08;五&#xff09; 图片人脸检测——Dlib版&#xff08;四&#xff09; 视频人脸检测——OpenCV版&#xff08;三&#xff09; 图片人脸检测——OpenCV版&#xff08;二&#xff09; …

解决 wamp网站访问慢的问题

最近使用wamp进行调试。 一个简单页面发现wamp的响应达10s。 经过研究发现&#xff0c;是wamp的sql部分拖慢了访问速度&#xff0c;追深后发现是&#xff0c;mysql进行了dns解析而导致反问速度超慢的情况&#xff1b; 所以给mysql 减减压吧&#xff1a; my.ini(Linux下为 my.co…

Ubuntu apt-get和pip源更换

Ubuntu apt-get和pip源更换 更新数据源为国内&#xff0c;是为了加速安装包的增加速度。 更换apt-get数据源 输入&#xff1a;sudo -s切换为root超级管理员&#xff1b;执行命令&#xff1a;vim /etc/apt/sources.list&#xff1b;使用命令&#xff1a;%d 清空所有内容&…

OpenPose+win10安装

openpose在win10上的环境配置和安装&#xff0c;主要参考&#xff1a;OpenPose_1.3.0 vs2017 cuda_9.2.148_win10 cudnn9.2-windows10-x64-v7.2.1.38 windows 配置教程_无情时尚的博客-CSDN博客_openpose vs 另一篇博客后半部分有讲如何使用代码实现相应的功能&#xff1a;…

QT5获取运行程序的工作目录与程序所在的目录

在qt-creator中debug的时候&#xff0c;发现程序不能读写所在目录的配置文件&#xff0c;资源文件。 Google了一下&#xff0c;原来 运行程序的 工作目录 与 程序所在的目录是不同的概念。 跑跑这段代码就知道了&#xff1a; #include <QDebug> #include <QDir>Q…

超简单的视频对象提取程序

视频对象提取 与其说是视频对象提取&#xff0c;不如说是视频颜色提取&#xff0c;因为其本质还是使用了OpenCV的HSV颜色物体检测。 HSV介绍 HSV分别代表&#xff0c;色调&#xff08;H&#xff1a;hue&#xff09;&#xff0c;饱和度&#xff08;S&#xff1a;saturation&a…

python2.7 与 go1.2简单性能比较

过完年刚上班&#xff0c;项目还没有开始&#xff0c;对于即将到来的项目&#xff0c;想尝试是否可以找到一个开发效率接近python&#xff0c;运行效率接近静态语言的编程语言&#xff0c;选择基本就是scala和go&#xff0c;公司的技术组成基本都是c派的&#xff0c;scala暂不考…

Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本

Windows SubSystem for Linux(WSL) 适用于Linux的Windows子系统 WSL团队的blog:Windows Subsystem for Linux | Microsoft Docs WSL的官方文档&#xff1a;What is Windows Subsystem for Linux | Microsoft Docs 最近需要Linux的shell环境进行学习&#xff0c;之前一直是在虚…

QT5 exec()模态显示子对话框,父子对话框都最小化后显示桌面

QT5 exec()模态显示子对话框&#xff0c;在任务栏上单击鼠标右键&#xff0c;出现‘’显示桌面”选项&#xff0c;选中后&#xff0c;QT5父对话框最小化&#xff0c;但是子对话框一直显示在最上层&#xff0c;却不随父对话框一起最小化。后来发现是添加了Qt::WindowStaysOnTopH…

基于python的图片修复程序-可用于水印去除

图片修复程序-可用于水印去除 在现实的生活中&#xff0c;我们可能会遇到一些美好的或是珍贵的图片被噪声干扰&#xff0c;比如旧照片的折痕&#xff0c;比如镜头上的灰尘或污渍&#xff0c;更或者是某些我们想为我所用但有讨厌水印&#xff0c;那么有没有一种办法可以消除这些…