跳到主要内容
版本:v3&v6

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/k3sTCP 2379-2381Etcd server client API
kubernetes/k3sTCP 10250-10252、10256Kubelet API\kube-scheduler\kube-controller-manager
kubernetes/k3sTCP 10010Containerd
kubernetes/k3sTCP 5000Docker Registry(镜像仓)
kubernetes/k3sTCP/UDP 30000-32767service-node-port范围(可选)
kubernetes/k3s/Flannel VXLANUDP 8472Flannel VXLAN
kubernetes/k3sTCP 6443-6444/8443K3s supervisor Kubernetes API Server
kubernetes/k3sTCP 9100kube-rbac-proxy
ONES业务端口TCP 30011ONES node-port 默认监听端口(可选)
ONES业务端口TCP 80、443ONES ingress-nginx 默认监听端口(可选)
ONES工具端口TCP 5001Jira迁移工具web服务(可选)
ONES工具端口TCP 5601日志查询 kibanna默认端口(可选)
ONES工具端口TCP 31380监控面板 Grafana默认端口(可选)
ONES工具端口TCP 30012ONES运维工具箱端口(可选)
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读写效率降低,中间件及其它服务(MySQLETCDKafka索引中间件、服务运行)的处理效率都会遇到影响,会导致服务处理过程变长,甚至服务宕掉不可用。

9.1.4 存储建议
  • 1、本地物理磁盘,需要完全独立隔离(每台负载节点上的磁盘非来自共享磁盘阵列,而是独立的磁盘独立的IO) 再有条件环境下 建议增设多块数据盘,对于有状态业务服务进行IO隔离,提升业务性能

    使用高性能存储,如 SATA SSDPCIe SSD 通过 RAIDLVM 提高 IO 性能、带宽 (默认)

  • 2、对象存储 OSS/S3 数据流吞吐性能几乎可以随集群规模线性增长,具有非常高的上限,ONES已成功对接各大云厂商, 支持标准S3协议接入,可提供接入测试(推荐)

  • 3、NAS存储 在大量操作请求并发情况下,缓存/网络协议处理易形成阻塞,导致服务不可用,仅建议存储静态附件类资源,需进行用量评估 (不推荐)

9.1.5 单节点 多块数据盘 IO隔离简示图

disk

最佳实践如图所示:

​ 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