这篇文章上次修改于 686 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
本篇接上回用Ceph实现K8s集群数据持久化 #1。
Ceph集群部署
环境信息
本次部署以星河武汉金银潭集群为例,环境信息如下:
内网网段: 172.23.1.0/24
网关: 172.23.1.1 gateway
节点A1: 172.23.1.2 a1 Ubuntu-20.04-LTS SSD*1(/dev/nvme0n1)
节点A2: 172.23.1.3 a2 Ubuntu-20.04-LTS SSD*1(/dev/nvme0n1)
节点A3: 172.23.1.4 a3 Ubuntu-20.04-LTS SSD*1(/dev/nvme0n1)
Master节点: A1
注意: 本教程仅供参考,在进行任何操作前请结合实际情况思考,切莫照搬操作,否则可能造成生产环境灾难!
配置集群节点免密登录
在A1(Master节点)生成ssh key并copy到各个机器上:
ssh-keygen -o
ssh-copy-id -i ~/.ssh/id_rsa.pub root@a2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@a3
注意: 下述操作能且只能在Master节点进行
初始化Master节点
安装ceph-deploy
ceph-deploy是一个ceph的简易部署工具,能简化很多操作流程,您可以通过该命令安装它:
sudo apt install ceph-deploy -y
创建集群
在安装完ceph-deploy后,您需要创建一个文件夹用于存放ceph-deploy的临时文件。
我这里选的是/opt/ceph-deploy,对应操作如下:
mkdir /opt/ceph-deploy
chmod +775 /opt/ceph-deploy
然后运行ceph-deploy初始化集群
ceph-deploy new a1 a2 a3
此处部署的时候您可能会遇到一个Python错误,详见platform.linux_distribution问题。
警告
此处输入的“a1 a2 a3”均为节点的hostname,在执行相关操作前,请确认您能通过集群内部DNS解析出这些hostname或者确认集群里每个节点的/etc/hosts设置中均有相关hostname解析配置,否则可能会导致严重问题。
启动集群
安装Ceph软件包(可选)
如果您此前已经通过apt安装ceph或者您希望采用自己的安装方式,则在已经顺利完成所有模块的安装的前提下,该步骤是可选的。
如果您希望使用ceph-deploy安装它,您可以在Master节点使用如下命令:
ceph-deploy install a1 a2 a3 // 请将该hostname替换成您自己的集群节点的hostname
启动Ceph Monitor
完成Ceph安装后,您需要先启动Ceph Monitor,它负责管理集群的状态和配置信息,因此需要先启动,您可以通过在Master节点执行以下命令启动它。
ceph-deploy mon create-initial // 初始化Monitor
ceph-deploy admin a1 // 此处因为A1是Master节点,所以让A1来当Monitor,选其他的也可以
启动Ceph Manager
Ceph Manager也是一个必须部署的组件,以下命令同样在Master节点执行:
ceph-deploy mgr create a1 // 同Monitor
进行完上述操作后,集群的核心服务就大部分启动完成了,但还需要构建OSD才能对外提供存储服务。
配置OSD卷
初始化磁盘
首先查看各个节点的磁盘:
ceph-deploy disk list a1 a2 a3
此处可能会出现一个错误,解决方法详见ceph-deploy文本显示问题。
在列表里找到您希望让Ceph独占的磁盘,记下它的路径。例如此处星河部署的是/dev/nvme0n1。然后用ceph-deploy将它擦除:
ceph-deploy disk zap a1 /dev/nvme0n1
ceph-deploy disk zap a2 /dev/nvme0n1
ceph-deploy disk zap a3 /dev/nvme0n1
如果擦除磁盘受阻,且之前有部署过一个Ceph集群,解决方法详见残留Block问题。
警告
在Ceph Luminous版本及后续推出的版本中,设置目录作为Ceph OSD已经被放弃,请确认您使用的是一整块磁盘,而非一个小目录。
创建OSD卷
在擦除磁盘后,方可创建OSD卷:
ceph-deploy osd create a1 --data /dev/nvme0n1
ceph-deploy osd create a2 --data /dev/nvme0n1
ceph-deploy osd create a3 --data /dev/nvme0n1
至此,Ceph的核心部件全部部署完成,关于K8s方面的应用详见后文。
停!你不该再继续深入阅读了!
接下来的内容非常危险!请不要随意执行!
重开
如果你发觉你搞砸了一切,除了重装系统,你可以通过ceph-deploy来reset环境。
警告
这个reset是真正意义上的reset,会将你的系统里所有有关于ceph的内容全部抹掉,包括OSD、Monitor、Manager、Keys。
如果你执行了它,你所有在Ceph集群里的数据都将会被抹除,所以如果你闲着没事干,千万不要尝试执行这个命令,输入命令前仔细想想自己今天有没有喝酒,喝酒了就赶紧睡觉,不要碰生产环境哪怕一个字节。
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
删除OSD
ceph osd tree
ceph osd out osd.x
ceph osd crush remove osd.x
ceph osd rm osd.x
抹除其他内容
ceph-deploy purge <NodeName>
2022.11.21补充:
请一并删除data:
ceph-deploy purgedata <NodeName>
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
答应我,千万不要在生产环境执行它,除非你非常清楚你在做什么
没有评论