Centos/RedHat
操作系统环境修复配置指南
本文介绍再Centos/RedHat 发行版Linux操作系统下环境修复环境配置指南、关于网络延时、CPU、内存、磁盘IO(临时方案)等环境检查不通过,不提供修复方案,请更换设备、升级硬件、重装系统。
本文目录
类别 | 内容 |
---|---|
适用操作系统版本 | 1.适用测试操作系统版本 |
操作系统环境修复配置指南 | 2. 内核参数修复 3.selinux状态修复 4.服务器时间修复 5.服务器时区修复 6.umask修复 7.⽹络修复 8.防火墙/防护软件检查修复 9.数据磁盘IO存储说明及配置说明 |
1适用测试操作系统版本
Redhat
Centos-7-x86 7.3
-Redhat
Centos-7-x86 7.9
2内核参数修复
2.1内核参数调整
2.1.1 检查方法/命令
[root@ones ~]# sysctl -a #执⾏命令完成后回显必须包含
# 以下参数,且值也必须保持⼀致
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-arptables = 1
2.1.2 修复步骤
如果回显结果包含参数,且值⼀致可跳过此操作
vi /etc/sysctl.conf
,在⽂件末尾增加以下内容,保存退出
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-arptables = 1
执⾏以下命令使变动⽴即⽣效
[root@ones ~]# /sbin/sysctl -p
执⾏ sysctl -a
命令再次检查修改是否成功
[root@ones ~]# sysctl -a
3 selinux
状态修复
3.1 selinux
命令不存在
按照脚本报错
+------------------------------+---------------------------------------------------------------------------------+---------+----------------------------------------------------------+
| CHECK ITEM | VALUE | RESULT | REASON |
+------------------------------+---------------------------------------------------------------------------------+---------+----------------------------------------------------------+
.... |
| SELinux | [error occurred] | no pass | error detail on logs above. |
.... |
+------------------------------+---------------------------------------------------------------------------------+---------+----------------------------------------------------------+
修复方法
apt install selinux-utils
3.2 selinux
状态修复
检查⽅法/命令
sestatus -v # 执⾏命令完成后回显必须包含以下参数,且值也必须保持⼀致
SELinux status: disabled
3.2 修复步骤
如果回显结果包含参数且值⼀致可跳过此操作
vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,如下
[root@ones ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selectedprocesses are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
重启操作系统
[root@ones ~]#reboot
执⾏ sestatus -v 命令再次检查修改是否成功
sestatus -v
4 服务器时间修复
4.1 检查⽅法/命令
[root@ones ~]#date
Mon Jan 22 11:28:30 CST 2024 #时间必须与北京时间⼀致,或与当地时区保持一致
4.2 修复步骤
# 1、修复时间方法一(离线环境且无时间服务器)
[root@ones ~]#date -s "20240122 11:16:00" #yyyymmdd
hh:mm:ss,按照格式要求填写当前时间
# 2、修复时间方法二(通过外网/内网NTP时间服务器同步时间) 需要安装ntpdate
[root@ones ~]#ntpdate ntp.aliyun.com(时间服务器/可以使用内网时间服务器)
# 3、修复时间方法三(通过外网/内网NTP时间服务器守护自动同步时间,当时间出现偏移会自动同步,适用一部分服务器主板晶振时钟异常使用)
[root@ones ~]#yum -y install chrony # 部分发行部已经安装
[root@ones ~]#vi /etc/chrony.conf
# 找到server <NTP服务器> minpoll 4 maxpoll 10 iburst的信息后,按i键编辑文件,在您暂时不需要的NTP服务器句首前添加符号#进行隐藏
# 新添加一行NTP服务器信息,格式为:server <需要添加的NTP服务器> minpoll 4 maxpoll 10 iburst。完成编辑后按Esc键并输入:wq保存退出。
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
# 依次执行以下命令,启动chronyd服务并设置开机自启动。
[root@ones ~]#systemctl start chronyd.service
[root@ones ~]#systemctl enable chronyd.service
[root@ones ~]#chronyc -n sources -v # 执行以下命令,查看时间同步服务器列表。
执⾏以下命令再次检查修改是否成功
[root@ones ~]#date
5 服务器时区修复
# 查看时区,确认是否修改
[root@ones ~]#timedatectl status
# 执行以下命令,查看时区列表。
[root@ones ~]#ls /usr/share/zoneinfo/<时区文件夹名称>
# 执行以下命令,可以在时区列表中查看到Hong_Kong Shanghai时区。
[root@ones ~]#ls /usr/share/zoneinfo/Asia
# 以修改Asiz Shanghai时区为例
[root@ones ~]#ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 更新硬件时钟(RTC)
[root@ones ~]#hwclock -w
# 查看时区
[root@ones ~]#timedatectl status
6 umask修复
6.1 检查⽅法/命令
[root@ones ~]# umask
0022
6.2 修复步骤
编辑/etc/bashrc、/etc/profile⽂件,修改umask
[root@ones ~]# vi /etc/bashrc
[root@ones ~]# vi /etc/profile
###两个⽂件的内容是⼀样的
##搜索umask,找到如下代码,不算第⼀位的特殊权限
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then umask 002 / /表示uid⼤于等于199的默认umask值,表示普通⽤户else
umask 022 / /表示uid⼩于199的默认umask值,表示root
fi
###修改后需要重新读取⼀下/etc/bashrc或/etc/profile
[root@ones ~]# source /etc/profile
[root@ones ~]# source /etc/bashrc
7 ⽹络修复
7.1 固定ip修复
7.1.1 检查是否为固定ip
[root@ones ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 |grep BOOTPROTO
BOOTPROTO="static" # 静态固定IP地址,无需调整
7.1.2 配置固定ip⽅法
请参照《检查是否网关/固定IP/固定DNS》修改当前环境的固定ip
7.2 dns
修复
7.2.1 检查⽅法/命令
[root@ones ~]# cat /etc/resolv.conf #⾄少⼀条nameserver记录
nameserver 223.5.5.5
nameserver 114.114.114.114
7.2.2 修复步骤
建议添加客户dns服务器,如果客户没有dns服务器,必须添加"nameserver 127.0.0.1"
vi /etc/resolv.conf # 编辑⽂件,增加dns服务器
nameserver 223.5.5.5 #223.5.5.5需要按照实际情况进⾏替换
检查dns服务器是否正常
[root@ones ~]# ping -c 3 223.5.5.5 [root@ones ~]# ping -c 3 ones.cn # 尝试解析域名,需要按照实际情况进⾏替换
##### 7.2.3 永久修改DNS
```bash
vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 编辑网络配置文件,以eth0为例
DNS1=114.114.114.114 #需要按照实际情况进⾏替换
# 保存后重启网络服务
service network restart
7.3 端⼝占⽤修复
7.3.1 检查⽅法/命令
以下列表中的端⼝建议全部释放,避免部署产生端口占用造成端口冲突
7.3.2 端口列表
端口号分类 | 端口号 | 功能 |
---|---|---|
kubernetes/k3s | TCP 2379-2381 | Etcd server client API |
kubernetes/k3s | TCP 10250-10252、10256 | Kubelet API\kube-scheduler\kube-controller-manager |
kubernetes/k3s | TCP 10010 | Containerd |
kubernetes/k3s | TCP 5000 | Docker Registry(镜像仓) |
kubernetes/k3s | TCP/UDP 30000-32767 | service-node-port范围(可选) |
kubernetes/k3s/Flannel VXLAN | UDP 8472 | Flannel VXLAN |
kubernetes/k3s | TCP 6443-6444/8443 | K3s supervisor Kubernetes API Server |
kubernetes/k3s | TCP 9100 | kube-rbac-proxy |
ONES业务端口 | TCP 30011 | ONES node-port 默认监听端口(可选) |
ONES业务端口 | TCP 80、443 | ONES ingress-nginx 默认监听端口(可选) |
ONES工具端口 | TCP 5001 | Jira迁移工具web服务(可选) |
ONES工具端口 | TCP 5601 | 日志查询 kibanna默认端口(可选) |
ONES工具端口 | TCP 31380 | 监控面板 Grafana默认端口(可选) |
ONES工具端口 | TCP 30012 | ONES运维工具箱端口(可选) |
7.3.3 端⼝释放步骤
端⼝释放前需要与客户确认是否可以kill进程。如果有进程⾃动拉起监听,需要先停⽌⾃动拉起服务,避免释放放反复重启
# 尝试通过kill 命令强制停止进程,请再合理场景下使用,确认冲突端口是否可以中断,如有守护服务:systemd supervisord需要通过守护服务停止
[root@ONES ~]#kill -9 3122 #3122进程id,与检查⽅法对应的端⼝(3122/docker-proxy)
[root@ONES ~]#netstat -antpl |grep -w 8081 #正常情况应该是没有回显
7.4 网络/网关修复
7.4.1 检查是否网关/固定IP/固定DNS
ifcfg-eth0⽹卡名称需要按照实际情况进⾏替换,再
k3s/k8s
部署架构下,建议固定服务器IP地址,避免出现IP漂移造成服务不可用。
[root@ones ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static # 此为固定静态IP,保持即可
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
IPADDR=10.16.0.145 # IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=10.16.0.254 # 网关
UUID=a405d355-c4f0-4820-8240-4c7bebc289a9
DEVICE=eth0
ONBOOT=yes
DNS1=114.114.114.114 # DNS配置
# GATEWAY="10.16.0.254" #⽹关地址根据实际情况进⾏替换
# 配置保存,重启网络
[root@ones ~]# service network restart
Restarting network (via systemctl): [ OK ]
7.5 主机名/主机名冲突修复
7.5.1 多节点部署时需要检查各节点主机名/修改主机名
# 各节点hostname不能相同
[root@ONES ~]#hostname # 查询hostname 再各节点执行
# 修改主机名 <NEW HOSTNAME> 实际替换
[root@ONES ~]#hostnamectl set-hostname <NEW HOSTNAME>
8 防火墙/防护软件检查修复
部分厂商防火墙/软防Agent等软件对于部署以及业务运行会造成影响,建议先停止防火墙程序,部署业务运行成功后再开启,进行Bypass相关白名单处理
端口需要bypass 取消拦截放行,参考 [7.3.2 端口列表](# 7.3.2 端口列表)
### 部分厂商排查
ds_agent # 查下 agent 关键字 ps aux | grep -i agent ,必须关掉
qaxsafed # 奇安信,查下 qax 看看有没有其他的 ps aux | grep -i qax
secdog # 也查下 dog 和 sec
sangfor_watchdog # 这个不影响,但是有它基本是深信服的虚拟化环境,会和flannel的8472端口冲突,见https://p.wpseco.cn/wiki/doc/626a0269352c70b82e6ac9fa
YDservice
Symantec
start360su_safed # 推荐 ps aux | grep safe 先查下,再查 360 字样
gov_defence_service
gov_defence_guard # ps aux | grep defence
wsssr_defence_daemon # 奇安信服务器安全加固系统,和下面是一起的。目前遇到过影响 socat 运行和容器进程访问另一个机器上的mysql端口
wsssr_defence_service
wsssr_defence_agent #影响pod网络
ics_agent
/opt/nubosh/vmsec-host/intedrity/bin/icsintedrity # docker -p 的都无法访问
/opt/nubosh/vmsec-host/file/bin/icsfilesec
edr_sec_plan # ps aux | grep edr ,深信服的 edr ,这个会下发 iptables 规则,配置错了会影响 node 之间,以及 pod 和 pod 之间通信
titanagent # 青藤云安全软件
# dynarose的安全软件,影响 docker 和 pod 的容器通信
ps -aux | grep -E 'blocklogc|collectclient|fwclient|identity|nodeclient|subconnc|subdomainc|sddog|sdc[c]'
# 卡巴斯基,影响容器通信 systemctl disable --now kesl
ps aux | grep -E 'kaspersky|klnagent'
# 深信达,SDC 沙盒,没调整好配置会导致容器网络有问题
CnSinDa/SDC/Common/64/SDCAgent
CnSinDa/SDC/Secret/64/Secret
9 数据磁盘IO存储说明及配置说明
9.1 建议增设多块数据盘背景说明
9.1.1 磁盘要求说明
关于服务器磁盘本身,本地存储的性能未经过系统评估,因此无法预知此种部署模式的性能指标,建议使用SSD高速磁盘
/HDD高转速
/高性能云盘
/OSS S3对象存储
详情与最终实施部署方案沟通为准,在部分用户磁盘场景,对于提供的磁盘块本身有进行Raid阵列
、逻辑分布式条带存储
、共享存储
再投产前,需提前说明确认 以免影响IO磁盘 多副本写入
注意:服务器非通过同一宿主机服务器分配的虚拟机资源 以免造成当该宿主机宕机, 分配的虚拟机资源或高可用本身不攻自破。
9.1.2 单点故障
对于单节点部署场景,使用本地存储时,本地存储缺乏数据副本,存储路径只能挂载其中一个服务器节点的本地磁盘下,因此存在单点故障的风险。如服务器出现故障,如数据磁盘造成损坏 造成业务不可用,通常在部署最佳实践中,我们建议在单节点中配置 数据备份服务
,对于数据备份服务:通常数据备份数据再有限的环境中选择落盘到本地磁盘中 因此建议增加额外一块数据盘存储备份数据,以免再应用数据盘硬件等因素发生磁盘损坏(对于存储硬件发生问题引发的风险,我司作为应用软件提供商无法提供维护手段,提供有限协助支持),通过备份数据盘中的数据,完成业务恢复。
9.1.3 性能瓶颈
若 /data 目录所在的文件系统底层均来自同一硬盘设备(或同一硬盘不同分区构建的设备),则使用 /data 目录所在文件系统的 Pods 将存在 IO 竞争,进而影响 ONES组件的稳定性以及 QoS。
对于单节点部署场景,建议使用两块以上数据盘,随着用户量使用规模较高,在服务承载一定并发量时,消耗除了内存以外对服务服务器磁盘IO读写的效率依赖也很大,且IO的读写均受限于本地磁盘的性能,若IO读写效率降低,中间件及其它服务(MySQL
、ETCD
、Kafka
、索引中间件
、服务运行)的处理效率都会遇到影响,会导致服务处理过程变长,甚至服务宕掉不可用。
9.1.4 存储建议
1、本地物理磁盘,需要完全独立隔离(每台负载节点上的磁盘非来自共享磁盘阵列,而是独立的磁盘独立的IO) 再有条件环境下 建议增设多块数据盘,对于有状态业务服务进行IO隔离,提升业务性能
使用高性能存储,如
SATA SSD
、PCIe SSD
通过RAID
或LVM
提高 IO 性能、带宽 (默认)2、对象存储
OSS/S3
数据流吞吐性能几乎可以随集群规模线性增长,具有非常高的上限,ONES已成功对接各大云厂商, 支持标准S3协议接入,可提供接入测试(推荐)3、
NAS
存储 在大量操作请求并发情况下,缓存/网络协议处理易形成阻塞,导致服务不可用,仅建议存储静态附件类资源,需进行用量评估 (不推荐)
9.1.5 单节点 多块数据盘 IO隔离简示图
最佳实践如图所示:
1、防止
K3S
Server Agent 和工作负载干扰集群数据存储,建议将关键存储进行IO分离,以免抢占IO,影响control plane响应延时,造成无法维持系统状态。(优化IO/防止系统盘剩余空间不足) 2、为避免中间件及业务组件,避免 IO 竞争读写负载较高导致处理效率较慢,业务并发降低,严重将导致业务不可用,建议将对高IO中间件 业务单独设立数据盘 N+1磁盘。
3、为避免单点服务器磁盘硬件故障,导致数据盘数据丢失,默认缺省服务器数据备份服务数据落盘再数据盘之中,建议增设数据备份盘,提高容错能力
最佳实践建议:将数据备份上传
OSS/S3
外部对象存储中,或独立备份服务器部署对象存储服务。
9.2 检查关闭swap交换分区
# 检查交换分区是否启动
[root@ones ~]# free -g
total used free shared buff/cache available
Mem: 31 2 24 0 4 28
Swap: 0 0 0 # 代表未开启
[root@ones ~]#swapon --show # 无回显则表示未启用
### 关闭已开启交换分区
[root@ones ~]#swapoff -a # 关闭所有交换分区
[root@ones ~]#vi /etc/fstab # 永久关闭交换分区
#/dev/mapper/centos-swap swap swap defaults 0 0
# 将其注释掉或删除,保存文件并退出。
# 重新启动服务器以应用更改。
[root@ones ~]#reboot
9.3 单机单数据盘磁盘初始化挂载配置
单数据盘分区挂载 例:一块数据盘:
vdb
默认ONES数据目录挂载点:/data/ones
请根据实际情况作调整。
# 一、磁盘分区
###查询已经挂载分区,检查磁盘挂载是否成功
[root@ones ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 320K 16G 1% /dev/shm
tmpfs 16G 725M 15G 5% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/centos-root 99G 39G 61G 40% /
/dev/vda1 1014M 150M 865M 15% /boot
/dev/vdb1 1024G 150M 1023G 1% /data/ones # 例
###针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 1TB # 磁盘1T
# 二、磁盘格式化并挂载
###若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
###创建挂载点
[root@ones ~]#mkdir -p /data/ones
###通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
###检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3h8py9 /data/ones xfs defaults 0 0 # 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
###挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘 建议将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd
9.4 单机多块数据磁盘IO分离配置
适用于单节点:
K3S Deploy
例:两块数据盘:vdb
vdc
默认ONES数据目录挂载点:/data/ones
请根据实际情况作调整。
# 一、磁盘分区
###针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb
###针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb
# 二、磁盘格式化并挂载
###若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1
###通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
###创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql
###检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
###挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘 建议将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd
9.5 多节点多块数据磁盘IO分离配置
适用于多节点:
K3S/K8S Deploy
OpenEBS分布式存储方案
+localStorage存储
以每台Node
节点 三块数据存储盘为例:vdb
vdc
vdd
# 针对每个Node节点操作处理磁盘如下:(需要保留一块裸盘提供OpenEBS使用)
# 一、磁盘分区
###针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb
###针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb
###数据盘 vdd 无需处理,提供裸盘 openEBS方案(注意)
# 一块未被使用的磁盘,提供给OpenEBS管理和使用,最终数据将以zfs文件系统格式进行存储。OpenEBS为业务提供 非结构化数据的存储,比如: 附件、wiki页面数据等
# 二、磁盘格式化并挂载
###若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1
###通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
###创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql
###检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# 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
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
###挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘 建议将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd