Kubernetes云原生实战02 磁盘分区挂载实战

news2024/11/18 14:02:44

大家好,我是飘渺。

今天咱们继续更新Kubernetes云原生实战系列,如何基于上篇文章中提到的部署架构进行磁盘分区、格式化、挂载目录。

看到这里估计很多人要直接就关掉了:磁盘分区格式化不是运维的事吗,跟我开发有什么关系?

理论上确实没什么关系,但是面试的时候面试官不也经常问你如何保证redis高可用,消息队列高可用吗?那时候可不敢说跟开发没关系~

所以作为一名光(KU)荣(BI)的开发,咱要有这样一个觉悟:运维会的我们要会,运维不会的我们也要会!

磁盘挂载分析

首先我们来分析一下需要对哪些目录进行挂载

  • 首先,master和worker节点都需要一个容器运行时环境,目前还是建议直接使用docker。使用docker的时候我们都知道,容器数据是存储在/var/lib/docker这个目录的,在使用和操作过程中数据量会逐渐增加,所以建议为 /var/lib/docker 单独挂载一个硬盘。
  • master节点需要安装etcd,etcd数据会存放在/var/lib/etcd这个目录下,生产环境也建议直接给它挂载一个硬盘。
  • worker节点会安装ceph存储,ceph存储需要有一块未格式化的磁盘。

所以结论如下:

  1. master 节点需要分两个区,分别需要挂载 /var/lib/docker/var/lib/etcd目录
  2. worker 节点需要分两个区,一个用于挂载/var/lib/docker目录,一块不要格式化并将其预留给ceph。
  3. 对于负载均衡器这个没要求,直接使用系统盘即可

磁盘分区挂载实战

master节点

master节点我们预备了160G,其中docker使用100G,etcd使用60G(其实etcd只需要10G左右就够了)

  1. 查看磁盘挂载情况
df -h

[root@k8s-master1 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs         16G     0   16G    0% /dev
tmpfs            16G     0   16G    0% /dev/shm
tmpfs            16G   33M   16G    1% /run
tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/vda2        49G  2.4G   47G    5% /
/dev/vda1      1014M  142M  873M   14% /boot
tmpfs           3.2G     0  3.2G    0% /run/user/0

可以发现并未有磁盘挂载。

  1. 查看磁盘分区情况
[root@k8s-master1 ~]# fdisk -l

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cdd7e

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200   104857566    51379183+  83  Linux

磁盘 /dev/vdb:107.4 GB, 107374182400 字节,209715200 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfe180011

   设备 Boot      Start         End      Blocks   Id  System

磁盘 /dev/vdc:64.4 GB, 64424509440 字节,125829120 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa9b4219c

   设备 Boot      Start         End      Blocks   Id  System

可以发现有两块空磁盘,/dev/vdb100G 和 /dev/vdc 60G,接下来需要对其进行分区格式化

  1. 对2块磁盘分别进行分区,以/dev/vdb为例

使用fdisk命令进行分区

fdisk /dev/vdb

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHpGEwUA-1668998479804)(https://img.javadaily.cn/uPic/image-20220331202902797.png)]

说明:

  • 输入n进行分区,d删除分区

  • 选择分区类型

    这里有两个选项(推荐选择P):

    p: 主分区 linux上主分区最多能有4个,如果要分多个区那就依次选1、2、3、4

    e:扩展分区 linux上扩展分区只能有1个,扩展分区创建后不能直接使用,还要在扩展分区上创建逻辑分区。

  • 选择分区个数,可以选择4个分区,这里只需要分成1个区

  • 设置柱面,这里选择默认值就可以,这里所有空间就会被分到一个区

  • 输入w,写入分区表,进行分区

/dev/vdb分完区后按照同样的步骤对/dev/vdc进行分区。

分区完成后再次查看磁盘分区情况

fdisk -l

可以看到磁盘/dev/vdb下已经有了一个分区/dev/vdb1,而/dev/vdc磁盘下也已经有了分区/dev/vdc1

  1. 使用mkfs.ext4对分区后的磁盘进行格式化
[root@k8s-master1 ~]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
/dev/vdb1 已经挂载;will not make a 文件系统 here!

[root@k8s-master1 ~]# mkfs.ext4 /dev/vdc1
mke2fs 1.42.9 (28-Dec-2013)
/dev/vdc1 已经挂载;will not make a 文件系统 here!
  1. 挂载磁盘
# 查看格式化后的UUID,用于挂载使用
[root@k8s-master1 ~]# blkid
/dev/vda2: UUID="5a00d5df-880e-4f76-b61d-d712d353e8d9" TYPE="xfs"
/dev/vda1: UUID="2d10a1a9-0917-4162-a4ed-589a26127875" TYPE="xfs"
/dev/vdb1: UUID="b3351cfa-5623-4633-b4a6-9baab1d8e2d4" TYPE="ext4"
/dev/vdc1: UUID="3543f03e-0b16-4271-8601-f7f0b2222a92" TYPE="ext4"
/dev/sr0: UUID="2022-03-30-15-13-58-00" LABEL="config-2" TYPE="iso9660"

可以看到格式化后的vdb1的uuid为b3351cfa-5623-4633-b4a6-9baab1d8e2d4,vdc1的UUID为3543f03e-0b16-4271-8601-f7f0b2222a92

编辑/etc/fstab文件,在最后一行加上需要挂载的磁盘UUID,并设置磁盘格式为ext4

#
# /etc/fstab
# Created by anaconda on Thu May 14 10:38:44 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=5a00d5df-880e-4f76-b61d-d712d353e8d9 /                       xfs     defaults        0 0
UUID=2d10a1a9-0917-4162-a4ed-589a26127875 /boot                   xfs     defaults        0 0
UUID=b3351cfa-5623-4633-b4a6-9baab1d8e2d4 /var/lib/docker         ext4    defaults        0 0
UUID=3543f03e-0b16-4271-8601-f7f0b2222a92 /var/lib/etcd           ext4    defaults        0 0

分区挂载完成后手动挂载确认配置是否正常

mount -a
  1. 验证分区挂载情况,可以看到已经给/var/lib/docker/var/lib/etcd 挂载了分区
[root@dev-k8s-master3 ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
devtmpfs         16G     0   16G    0% /dev
tmpfs            16G     0   16G    0% /dev/shm
tmpfs            16G  8.6M   16G    1% /run
tmpfs            16G     0   16G    0% /sys/fs/cgroup
/dev/vda2        49G  2.4G   47G    5% /
/dev/vdc1        59G   53M   56G    1% /var/lib/etcd
/dev/vdb1        99G   61M   94G    1% /var/lib/docker
/dev/vda1      1014M  142M  873M   14% /boot
tmpfs           3.2G     0  3.2G    0% /run/user/0
  1. 挂载完成后建议重启机器
[root@k8s-slb ~]# reboot

挂载worker节点

worker节点挂载操作同master节点,不过需要注意的是,worker节点总共500G,我们需要将其中的100G独立分区并挂载到/var/lib/docker,剩下的400G用作ceph存储使用,切记ceph的分区不需要格式化。

主体操作就不再演示,只需要关注将其分成2个区即可。

第一次分区:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAnhv6UC-1668998479804)(https://img.javadaily.cn/uPic/image-20220629220435490.png)]

分区完成后查看分区情况

[root@k8s-worker1 ~]# fdisk -l

磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cdd7e

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200   104857566    51379183+  83  Linux

磁盘 /dev/vdb:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb098e2fd

   设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   209717247   104857600   83  Linux

可以看到vdb总共536.9G,一个分区/dev/vdb1占用了100G空间,接着再对vdb进行第二次分区。

image-20220629221624117

剩下的步骤如格式化、挂载、验证可以参考master节点。

切记,只需要挂载第一个100G的分区给/var/lib/docker,剩下的分区预留给ceph,不需要格式化挂载。

小结

正常情况下磁盘分区是运维工程师的事,不过有句话叫 “技多不压身”,多会点总不是坏事。

各位在生产环境使用docker的时候一定不要忘记分区挂载,或者提醒运维给你挂载好目录。还记得很早之前我们使用docker部署应用,由于未给其单独挂载磁盘,/var/lib/docker默认使用系统盘空间,用了一段时间后就收到磁盘空间报警(系统盘只分配了50G),现在想起来还是觉得好笑。

好了,今天的文章到这里就要结束了。如果你喜欢这个系列,请不要吝啬你的一键三连。同时也欢迎你把这个系列分享给你的朋友,我们一起进步。。。我们下期再见。

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

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

相关文章

图书管理系统(Java实现)[附完整代码]

作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:JavaSE 作者专栏:大三学生,希望跟大家一起进步! 文章目录 目录 文章目录 一、图书管理系统菜单 二、实现基本框架 三、实现业务 3.1 打印所有图书 3.2 退出系统 3.3 查…

化合物纯度、溶剂溶解度检测

产品检测方法一般有核磁共振氢谱 (HNMR),液质联用 (LCMS),高效液相色谱 (HPLC)。我们一般通过核磁共振确定结构式 (产品是否正确) 和大概纯度 (是否含杂质及杂质大概比例),通过 LCMS 或 HPLC 测定确定产品具体纯度 (产品需要有紫外吸收)。■ …

连锁超市如何部署远程监控系统

大型超市又称综合超市,一般是采取自选销售方式,以销售大众化实用品为主,并将超市和折扣店的经营优势结合为一体的,品种齐全,满足顾客一次性购齐的零售业态。根据商品结构,可以分为以经营食品为主的大型超市…

神了,用 Python 预测世界杯决赛,发现准确率还挺高

那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。 今天我就通过Python数据分析以及机…

低/无代码开发系统集成能力有多强?一文告诉你

Gartner预计,到2025年,公司将会有70%的新应用软件使用到低/无代码技术。Statista的报告表明,在2027年的时候,在低/无代码技术上的花费将会达到650亿。 面对庞大的数字经济,许多公司都在加快数字化转型的步伐…

【Linux进程间通信】共享内存

共享内存API简单案例:一个进程往共享内存中写一次数据然后在另一块共享内存读一次数据,然后另一个进程在一个共享内存读一次数据在另一块共享内存写一次数据(同时验证了它是半双工的)使用信号量进行同步原理:多个进程映…

C++socket网络编程实战http服务器(支持php)(上)

TOC 第一章 Socket快速入门篇 1、TCP/IP模型 用Wireshark抓包工具来看一下上图TCP/IP模型这种4层协议里面究竟有什么内容。 在windows和Linux系统之间配置共享 首先保证我们的putty已经连接上了linux服务器,然后我们要安装samba这么一个目录共享工具&#xff1a…

Spark 离线开发框架设计与实现

一、背景 随着 Spark 以及其社区的不断发展,Spark 本身技术也在不断成熟,Spark 在技术架构和性能上的优势越来越明显,目前大多数公司在大数据处理中都倾向使用 Spark。Spark 支持多种语言的开发,如 Scala、Java、Sql、Python 等。…

亚马逊、OZON、速卖通等跨境电商平台卖家怎样快速提高产品权重?

亚马逊跨境电商是世界顶级的电子商务平台之一。基本上,当80%的客户购买产品时,亚马逊跨境电子商务将成为首选的在线购物平台。亚马逊是一个拥有自己独特优化算法的服务平台,对服务平台上数亿产品进行有序排序。当客户进行产品检索时&#xff…

【附源码】计算机毕业设计JAVA学生宿舍信息管理系统

【附源码】计算机毕业设计JAVA学生宿舍信息管理系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA…

经典排序算法JAVA实现

1、选择排序 首先在未排序数列中找到最小元素,然后将其与数列的首部元素进行交换,然后,在剩余未排序元素中继续找出最小元素,将其与已排序数列的末尾位置元素交换。以此类推,直至所有元素均排序完毕.复杂度为n2&#…

《Java并发编程之美》读书笔记——第一部分(并发编程基础知识)

文章目录第一章 并发编程线程基础1.什么是线程2.线程的创建与运行3.线程的通知与等待wait()wait(long timeout)wait(long timeout, int nanos)notify()与notifyAll()虚假唤醒4.等待线程执行终止的join方法5.让线程睡眠的sleep方法6.让CPU交出执行权的yield方法7.线程中断8.理解…

[附源码]java毕业设计物理中考复习在线考试系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

消息队列卡夫卡+EFLFK集群部署

pache公司的软件包官方下载地址:archive.apache.org/dist/ 注:kafka从3.0版本之后,不再依赖zookeeper。 一 Zookeeper概述 官方下载地址:archive.apache.org/dist/zookee… 1.Zookeeper定义 Zookeeper是一个开源的分布式的&a…

国内网络编译,Ambari 2.7.6 全部模块源码编译笔记

本次编译 ambari 2.7.6 没有使用科学上网的工具,使用的普通网络,可以编译成功,过程比 ambari 2.7.5 编译时要顺畅。 该版本相对 2.7.5 版本以来,共有 26 个 contributors 提交了 114 个 commits 以及修改了 557 个文件。详情见&a…

ovirt-engine通过UI Plugin自定义页面

官方API:点击打开 1 新增一个菜单项 1.1 创建引导html 首先你的这个页面是作为一个功能插件存在的,所以先给他起个名字,我这里的页面主要是用作用户创建,所以我的这个插件的名字就叫user。 接着就创建这个插件的 引导html &…

多级式多传感器信息融合中的状态估计(Matlab代码实现)

🍒🍒🍒欢迎关注🌈🌈🌈 📝个人主页:我爱Matlab 👍点赞➕评论➕收藏 养成习惯(一键三连)🌻🌻🌻 🍌希…

新能源车提车、上牌流程

漫长等待四个多月,终于2022年10月27日,笔者圆梦,喜提人生第一辆车。从选车、提车、上牌全程一人,用文记录下经历,以供参考。 一、提车流程 1.1 提车时间 若分到车,4S店销售会提前联系确定时间。 提示&…

【自然语言处理】【实体匹配】CollaborER:使用多特征协作的自监督实体匹配框架

CollaborER:使用多特征协作的自监督实体匹配框架《CollaborER: A Self-supervised Entity Resolution Framework Using Multi-features Collaboration》论文地址:https://arxiv.org/pdf/2108.08090.pdf 相关博客: 【自然语言处理】【实体匹配…

最大似然估计(机器学习)

目录 最大似然估计算法 最大似然估计例子 最大似然估计算法存在的问题 最大似然估计算法 EM算法是一种最大似然估计(Max imum Likel ihood Est imation)算法,传统的最大似然估计算法是根据已知的观察数据来评估模型参数 最大似然估计的一般步骤如下: …