掘金 后端 ( ) • 2024-05-16 18:10

KubeSphere 最佳实战:Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南

2024 年云原生运维实战文档 99 篇原创计划 第 021 篇KubeSphere 最佳实战「2024」系列 第 002 篇

你好,欢迎来到运维有术

今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南

KubeSphere 最佳实战「2024」 系列文档实战环境选择的操作系统为 openEuler 22.03 LTS SP3。本文将详细介绍 openEuler 22.03 LTS SP3 系统安装完成后的初始化配置。

实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)

主机名 IP CPU 内存 系统盘 数据盘 用途 ksp-control-1 192.168.9.111 8 16 40 100 KubeSphere/k8s-control-plane ksp-control-2 192.168.9.112 8 16 40 100 KubeSphere/k8s-control-plane ksp-control-3 192.168.9.113 8 16 40 100 KubeSphere/k8s-control-plane 合计 3 24 48 120 300

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3 x86_64

1. 前置条件

在 openEuler 官网下载 openEuler 22.03 LTS SP3 安装镜像。并采用最小化的方式,安装 openEuler。

https://mirror.sjtu.edu.cn/openeuler/openEuler-22.03-LTS-SP3/ISO/x86_64/openEuler-22.03-LTS-SP3-x86_64-dvd.iso
  • 系统安装完后,编辑网卡配置文件,正确配置网络

可参考的标准配置如下:

DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.9.x
NETMASK=255.255.255.0
GATEWAY=192.168.9.254
ONBOOT=yes

2. 操作系统基础配置

2.1 配置主机名

hostnamectl hostname ksp-control-1

2.2 配置 DNS

DNS 我一般使用 114.114.114.114,请根据实际情况配置。

echo "nameserver 114.114.114.114" > /etc/resolv.conf

2.3 配置服务器时区

  • 配置服务器时区为 Asia/Shanghai
timedatectl set-timezone Asia/Shanghai

2.4 配置时间同步

  • 安装 chrony 作为时间同步软件
yum install chrony 
  • 编辑配置文件 /etc/chrony.conf,修改 ntp 服务器配置
vi /etc/chrony.conf
​
# 删除所有的 pool 配置
pool pool.ntp.org iburst
​
# 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
pool cn.pool.ntp.org iburst
​
# 上面的手工操作,也可以使用 sed 自动替换
sed -i 's/^pool pool.*/pool cn.pool.ntp.org iburst/g' /etc/chrony.conf
  • 重启并设置 chrony 服务开机自启动
systemctl enable chronyd --now
  • 验证 chrony 同步状态
# 执行查看命令
chronyc sourcestats -v

正确执行后,输出结果如下 :

$ chronyc sourcestats -v
                             .- Number of sample points in measurement set.
                            /    .- Number of residual runs with same sign.
                           |    /    .- Length of measurement set (time).
                           |   |    /      .- Est. clock freq error (ppm).
                           |   |   |      /           .- Est. error in freq.
                           |   |   |     |           /         .- Est. offset.
                           |   |   |     |          |          |   On the -.
                           |   |   |     |          |          |   samples. \
                           |   |   |     |          |          |             |
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
111.230.189.174            18  11   977     -0.693      6.795  -1201us  2207us
electrode.felixc.at        18  10   917     +2.884      8.258    -31ms  2532us
tick.ntp.infomaniak.ch     14   7   720     +2.538     23.906  +6176us  4711us
time.cloudflare.com        18   7   913     +0.633      9.026  -2543us  3142us

2.5 关闭系统防火墙

systemctl stop firewalld && systemctl disable firewalld

2.6 禁用 SELinux

openEuler 22.03 SP3 最小化安装的系统默认启用了 SELinux,为了减少麻烦,我们禁用节点的 SELinux。

# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
​
# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0

2.7 安装系统软件包

  • 安装系统基本工具包
# 安装 tar 包,不装的话后面会报错。openEuler 也是个奇葩,迭代这么多版本了,默认居然还不安装 tar
yum install tar
  • 安装 Kubernetes 系统依赖包

在所有 Kubernetes 集群节点,执行下面的命令,安装 Kubernetes 需要的系统依赖包。

# 安装 Kubernetes 系统依赖包
yum install curl socat conntrack ebtables ipset ipvsadm

3. 磁盘配置

每台服务器新增一块数据盘 /dev/sdb,用于 ContainerdKubernetes Pod 的持久化存储。

为了满足用户在上线后数据盘容量不足时,可以实现动态扩容的需求。本文采用了 LVM 的方式配置磁盘(实际上,本人维护的生产环境,几乎不用 LVM)。

3.1 使用 LVM 配置磁盘

  • 创建 PV
 pvcreate /dev/sdb
  • 创建 VG
vgcreate data /dev/sdb
  • 创建 LV
# 使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata

3.2 格式化磁盘

mkfs.xfs /dev/mapper/data-lvdata

3.3 磁盘挂载

  • 手工挂载
mkdir /data
mount /dev/mapper/data-lvdata /data/
  • 开机自动挂载
tail -1 /etc/mtab >> /etc/fstab

3.4 创建数据目录

  • 创建 OpenEBS 本地数据根目录
mkdir -p /data/openebs/local
  • 创建 Containerd 数据目录
mkdir -p /data/containerd
  • 创建 Containerd 数据目录软连接
ln -s /data/containerd /var/lib/containerd

说明: KubeKey 到 v3.1.1 版为止,一直不支持在部署的时候更改 Containerd 的数据目录,只能用这种目录软链接的方式,变相增加存储空间(也可以提前手工安装 Containerd)。

4. 自动化 Shell 脚本

文章中所有操作步骤,已全部编排为自动化脚本,因篇幅限制,不在此文档中展示。

知识星球 运维有术 会员请到专属代码仓库下载(价值内容,仅星球会员专享)。

以上,就是我今天分享的全部内容。下一期分享的内容还没想好,敬请期待开盲盒

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

Get 本文实战视频(请注意,文档视频异步发行,请先关注)

欢迎加入 「知识星球|运维有术」 ,获取更多的 KubeSphere、Kubernetes、云原生运维、自动化运维、AI 大模型等实战技能。未来运维生涯始终有我坐在你的副驾

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载