K8s不同node如何共享存储&&nfs 搭建

  • k8s如何共享存储
  • 什么是分布式共享存储呢?
  • 环境准备
    • 服务端安装NFS服务步骤
      • 第一步:安装NFS和rpc。
      • 第二步:启动服务和设置开启启动:
      • 第三步:配置共享文件目录,编辑配置文件/etc/exports:
    • NFS客户端挂载配置
      • 第一步
      • 第二步,在客户端创建目录,并挂载共享目录。
      • 修改fstab使系统每次启动时都能自动挂载
      • 写入一个测试文件
  • 原生方式数据挂载
    • 1、PV&PVC
    • 静态供应
      • 1、创建pv池
      • 2、PVC创建与绑定
    • 动态供应
  • 参考

k8s如何共享存储

同一个pod内不同container可以使用共同挂载一个volume来共享数据,但是不同node跨服务器如何共享数据呢?

nfs是一种成熟的共享存储方案. 例如我们生产环境中的nas.
ceph是一种(分布式共享存储)

什么是分布式共享存储呢?

pod中产生了数据,数据通过存储插件(通常是一个容器)将数据写入远程的分布式存储系统ceph,当pod迁移或是升级K8s集群 ,即无论你在其他哪个宿主机上启动新的容器,都可以请求挂载指定的持久化存储卷,从而访问到数据卷里保存的内容。

NFS可以实现部分功能,对于动态扩容nfs-provision目前不支持

NFS provisioner limitations/pitfalls

  • The provisioned storage is not guaranteed. You may allocate more than the NFS share’s total size. The share may also not have enough storage space left to actually accommodate the request.
  • The provisioned storage limit is not enforced. The application can expand to use all the available storage regardless of the provisioned size.
  • Storage resize/expansion operations are not presently supported in any form. You will end up in an error state: Ignoring the PVC: didn’t find a plugin capable of expanding the volume; waiting for an external controller to process this PVC.

ceph功能就比较丰富了,还提供 对象存储和块存储。

环境准备

服务端安装NFS服务步骤

第一步:安装NFS和rpc。

[root@localhost ~]# yum install -y nfs-utils
#安装nfs服务
[root@localhost ~]# yum install -y rpcbind
#安装rpc服务

第二步:启动服务和设置开启启动:

systemctl enable rpcbind --now #--now 设置开机启动
systemctl enable nfs-server --now
#配置生效
exportfs -r

第三步:配置共享文件目录,编辑配置文件/etc/exports:

# 创建共享节点
mkdir -p /monitor/data
#编辑配置文件
echo "/monitor/data *(insecure,rw,sync,no_root_squash)" > /etc/exports
# 指定cidr范围的主机可访问
# echo "/monitor/data 10.50.0.0/16(insecure,rw,sync,no_root_squash)" > /etc/exports
systemctl reload nfs
#重新加载NFS服务,使配置文件生效

用于配置NFS服务程序配置文件的参数:

格式: 共享目录的路径 允许访问的NFS客户端(共享权限参数)参数:
- ro 只读
- rw 读写
- root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
- no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
- all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
- sync 同时将数据写入到内存与硬盘中,保证不丢失数据
- async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据请注意,NFS客户端地址与权限之间没有空格

NFS客户端挂载配置

第一步

使用showmount命令查看nfs服务器共享信息。输出格式为“共享的目录名称 允许使用客户端地址”。

[root@meta /www/pigsty]#showmount -e 10.50.10.179
Export list for 10.50.10.179:
/monitor/data     10.50.0.0/16
/k8s-sc2-xfs/data 10.50.0.0/16

showmount 用法

参数   作用
-e  显示NFS服务器的共享列表
-a  显示本机挂载的文件资源的情况NFS资源的情况
-v  显示版本号

第二步,在客户端创建目录,并挂载共享目录。

mkdir -p /nfs/data/prometheus
# 挂载
[root@meta /www/pigsty]#mount 10.50.10.179:/monitor/data/ /nfs/data/prometheus/
[root@meta /www/pigsty]#df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs   32G     0   32G   0% /dev
tmpfs                      tmpfs      32G  180K   32G   1% /dev/shm
tmpfs                      tmpfs      32G   17M   32G   1% /run
tmpfs                      tmpfs      32G     0   32G   0% /sys/fs/cgroup
/dev/sda1                  xfs        40G   30G   11G  74% /
/dev/sdb1                  xfs        50G  5.8G   45G  12% /prometheus
tmpfs                      tmpfs     6.3G     0  6.3G   0% /run/user/0
10.50.10.179:/monitor/data nfs4      2.0T   32G  2.0T   2% /nfs/data/prometheus

修改fstab使系统每次启动时都能自动挂载

这种挂载文件系统的方法只能临时挂载文件系统。当重启Linux系统时,文件系统并不会自动挂载。要强制Linux在启动时自动挂载新的文件系统,可以将其添加到/etc/fstab文件。

# 使系统每次启动时都能自动挂载
]#more /etc/fstab#
# /etc/fstab
# Created by anaconda on Thu Apr 30 22:04:55 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=1c419d6c-5064-4a2b-953c-05b2c67edb15 /                       xfs     defaults        0 0
/dev/sdb1               /prometheus                   xfs    defaults        0 0
/swapfile none swap defaults 0 0
10.50.10.179:/monitor/data /nfs/data/prometheus nfs    defaults 0 0

nfs4加强协议

写入一个测试文件


libvirt是个啥?

原生方式数据挂载

原生方式挂载数据对外暴露太多了,需要用户了解我们整个nfs的架构,对开发人员不友好,而且关键是不安全。 整个存储应该同一管理,并分配给应用。

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-pv-demo
name: nginx-pv-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-pv-demo
template:
metadata:
labels:
app: nginx-pv-demo
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
volumes:
- name: html
nfs:
server: 172.31.0.4
path: /nfs/data/nginx-pv

1、PV&PVC

PV:持久卷(Persistent Volume),将应用需要持久化的数据保存到指定位置

PVC:持久卷申明(Persistent Volume Claim),申明需要使用的持久卷规格

下面这些yaml文件中的字段不懂可以使用explain 一个一个解释。

静态供应

1、创建pv池

#nfs主节点
mkdir -p /nfs/data/01
mkdir -p /nfs/data/02
mkdir -p /nfs/data/03
创建PVapiVersion: v1
kind: PersistentVolume
metadata:name: pv01-10m
spec:capacity:storage: 10MaccessModes:- ReadWriteManystorageClassName: nfsnfs:path: /nfs/data/01server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv02-1gi
spec:capacity:storage: 1GiaccessModes:- ReadWriteManystorageClassName: nfsnfs:path: /nfs/data/02server: 172.31.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:name: pv03-3gi
spec:capacity:storage: 3GiaccessModes:- ReadWriteManystorageClassName: nfsnfs:path: /nfs/data/03server: 172.31.0.4

2、PVC创建与绑定

创建PVCkind: PersistentVolumeClaim
apiVersion: v1
metadata:name: nginx-pvc
spec:accessModes:- ReadWriteManyresources:requests:storage: 200MistorageClassName: nfs
创建Pod绑定PVCapiVersion: apps/v1
kind: Deployment
metadata:labels:app: nginx-deploy-pvcname: nginx-deploy-pvc
spec:replicas: 2selector:matchLabels:app: nginx-deploy-pvctemplate:metadata:labels:app: nginx-deploy-pvcspec:containers:- image: nginxname: nginxvolumeMounts:- name: htmlmountPath: /usr/share/nginx/htmlvolumes:- name: htmlpersistentVolumeClaim:claimName: nginx-pvc
​

动态供应

参考

[1] nfs 搭建

K8s不同node如何共享存储nfs 搭建(markdown版本)相关推荐

  1. K8s不同node如何共享存储

    试用markdown阅读体验更佳 环境准备 1.所有节点 2.主节点 3.从节点 4.原生方式数据挂载 1.PV&PVC 1.创建pv池 2.PVC创建与绑定 同一个pod内不同contain ...

  2. 共享存储--openfiler搭建iscsi

    共享存储--openfiler搭建iscsi 本文简单介绍使用openfiler搭建iscsi的整个过程,实验平台Vmvare workstation 一.下载安装openfiler      从官网 ...

  3. k8s中使用MySQL共享存储_Kubernetes创建挂载共享存储的容器

    在上一次的Mysql容器中,已经使用过了配置宿主机目录挂载的方式,这样虽然方便但是不够安全:一般都是把数据存储在远程服务器上如:NFS,GlusterFS,ceph等:一般目前主流的还是使用ceph. ...

  4. linux nfs mysql_MySQL实现高可用+共享存储NFS

    4.1corosync的安装,两台都安装上 ## yum install -y cluster-glue-1.0.6-1.6.el5.i386.rpm cluster-glue-libs-1.0.6- ...

  5. Docker Swarm使用NFS作为共享存储

    Docker Swarm是轻量级的Docker集群解决方案.实现swarm集群应用数据持久化的一种方法是使用NFS共享存储. 搭建NFS步骤 所有节点安装NFS sudo yum -y install ...

  6. Windows/Linux客户端挂载NFS共享存储

    Windows/Linux客户端挂载NFS共享存储 1. Linux搭建NFS共享存储 1.1. NFS概述 1.2. 安装并配置NFS Server 1.3. 启动并验证NFS Server 2. ...

  7. 4创建iSCSI共享存储

    通过前几节,我们创建了三层交换机.临时DNS服务器.3台ESXi主机,我们还需要有一个存储服务器. 我们创建虚拟机,安装TrueNAS Core,通过配置iSCSI服务,模拟真实的共享存储. 一.版本 ...

  8. CentOS7.5搭建Heartbeat+DRBD+NFS高可用共享存储

    在一般的网络架构的设计中,如果前端web做了负载均衡,后端存储都会用到共享存储,在并发不大.数据量不大的情况下,nfs是一个不错共享存储方案,但是nfs存在单点故障的问题,要想保证nfs的高可用,就要 ...

  9. CentOS7搭建keepalived+DRBD+NFS高可用共享存储

    CentOS7搭建keepalived+DRBD+NFS高可用共享存储 一.服务器信息 IP地址 类型 主机名 操作系统 内存 磁盘 172.25.10.100 主服务器 node1 centos7 ...

  10. Linux系统搭建NFS网络共享存储

    Linux系统搭建NFS网络共享存储 一.NFS概述: NFS是一种基于TCP/IP传输的网络文件系统协议,最初由SUN公司开发.通过NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源 ...

最新文章

  1. 新一代人工智能白皮书(2020年) ——产业智能化升级
  2. 开发vs测试 | 每日趣闻
  3. java报告(一)编程打印一个三角形的乘法口诀表
  4. 计算机视觉:目标检测的发展历程与基础概念
  5. internal java compiler error_java字节码注入AOP作业心得
  6. JavaScript中的点击事件
  7. UVa12107 (120ms)代码
  8. java token身份认证_java – 基于Spring Security Token的身份验证
  9. onnx-tensorrt:builtin_op_importers.cpp:628:5: error: ‘IIdentityLayer’ is not a member of ‘nvinfer1’
  10. NodeMCU(ESP8266) 接入阿里云物联网平台 踩坑之旅
  11. Java开源项目Hibernate获得成功的十大理由
  12. 数学建模(NO.9斯皮尔曼相关系数)
  13. 蓝奏(lanzous)解析工具
  14. Halcon教程十二:回形针识别进阶
  15. input 文件提交 按钮制作
  16. B46 - STM32太阳能充电智能心率监测骑行仪
  17. [Python-turtle]正弦定理能擦出多漂亮的火花?【1】
  18. 即时通讯im源码软件uniapp(基于开源在线交友聊天系统源码框架)
  19. 将时间序列转成图像——格拉姆角场方法 Matlab实现
  20. 男人心中理想女友的职业排行榜

热门文章

  1. ts 报错:‘new‘ expression, whose target lacks a construct signature, implicitly has an ‘any‘ type.
  2. MATLAB麦克劳林展开式cosx,用matlab绘制e^x的泰勒展开式的图像
  3. 哈希函数及哈希函数的特性
  4. 图像坐标球面投影_坐标、投影及坐标转换
  5. threejs 绘制星空
  6. JAVA基础知识之BufferedWriter流
  7. com alibaba.fastjson.JSONException:witer JavaBean error....
  8. 非线性思维 -- 大前研一
  9. wordpress后台固定菜单消失不见了怎么办?
  10. 高性能计算服务器计算费价格,高性能计算云服务器价格表