当前位置: 首页 > article >正文

使用sealos工具部署k8s

为什么使用sealos工具:简单、快、完全兼容 k8s、给100年认证
sealos使用最新版本:
官网:https://www.sealyun.com/
码:https://github.com/labring/sealos
官方介绍什么是sealos
Sealos 是以 kubernetes 为内核的云操作系统发行版, 单机操作系统如同 linux 发行版本可以在上面安装和使用各种单机应用,如 PPT,Word,Excel 等。 云操作系统只需要把这些单机应用替换成各种云应用,如数据库,对象存储,消息队列等,就很容易理解了,这些应用都是分布式高可用的。 Sealos 就是能支撑运行各种分布式应用的云操作系统。有了 Sealos 就拥有了一朵云。
部署环境:
在这里插入图片描述

我们这里使用的是Rocky9.1.
部署前一些检查和设置:
一、设置主机名字,不可以重复。

IP主机名字
192.168.8.100Rocky-9.1-k8s-master1
192.168.8.101Rocky-9.1-k8s-master2
192.168.8.102Rocky-9.1-k8s-master3
192.168.8.103Rocky-9.1-k8s-node1
192.168.8.104Rocky-9.1-k8s-node2

使用 hostnamectl set-hostname命令
在这里插入图片描述
配置主机名与IP地址解析

/etc/hosts

cat > /etc/hosts <<-'EOF'
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.100 k8s-master1
192.168.8.101 k8s-master2
192.168.8.102 k8s-master3
192.168.8.103 k8s-node1
192.168.8.104 k8s-node2
EOF

二、停止防火墙并关闭

systemctl stop firewalld        停止正在运行的firewalld服务
systemctl disable firewalld     禁用firewalld服务

安装一些需要的软件:
安装和配置防火墙软件iptables和IPVS

yum -y install iptables-services ipvsadm ; systemctl start iptables ; systemctl enable iptables ; iptables -F ; service iptables save

解释:
yum -y install iptables-services ipvsadm:这个命令使用yum软件包管理器下载和安装iptables-services和ipvsadm软件包,用于管理防火墙规则和负载平衡。
systemctl start iptables:这个命令启动负责管理防火墙规则的iptables服务。
systemctl enable iptables:这个命令配置iptables服务在启动时自动启动。
iptables -F:这个命令从iptables配置中清除(删除)所有现有的防火墙规则。
service iptables save:这个命令将当前的iptables配置保存到磁盘上,以便在系统重新启动后保留。
在这里插入图片描述
三、禁用SELinux
使用sestatus或getenforce检查SElinux状态
临时关闭selinux:setenforce 0
永久关闭selinux:
修改 /etc/selinux/config 并将 SELINUX=disabled
可以使用下列命令来修改,修改完记得重启

sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

解释:

  • sed:这是一个流编辑器,用于执行文本替换和其他文本处理操作。
  • -i:这个选项表示对原始文件进行“in-place”编辑,也就是直接修改文件内容。
  • ‘s/^SELINUX=enforcing$/SELINUX=disabled/’:这个是正则表达式,用于匹配/etc/selinux/config文件中的SELINUX=enforcing字符串,并将其替换为SELINUX=disabled字符串。
  • /etc/selinux/config:这是要修改的SELinux配置文件的路径和文件名。

四、时间同步:
crontab -e
阿里云提供了7个NTP时间服务器也就是Internet时间同步服务器地址

ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com
编辑同步阿里云的时间服务器

0 */1 * * * ntpdate ntp1.aliyun.com

解释:
这个 crontab 表示的是在每小时的第 0 分钟执行一次 ntpdate ntp1.aliyun.com 命令,即每个小时同步一次阿里云的时间服务器 ntp1.aliyun.com。

其中,0 表示分钟字段,/1 表示每分钟都执行; 表示其他字段,即每小时、每天、每月和每周都执行;ntpdate ntp1.aliyun.com 是要执行的命令。
查看

[root@Rocky-9 ~]# crontab -l
0 */1 * * * ntpdate ntp1.aliyun.com

方法二:
也可以采用同步其中一台服务器,这里我们采用同步Rocky-9.1-k8s-master1这台。
在所有节点上安装时间服务
yum install chrony -y
修改配置文件:vim /etc/chrony.conf
修改如下

server 127.127.1.0 iburst   #将本机作为 NTP 服务器,使用本机的本地时钟作为时间源进行同步。
allow 192.168.8.0/24   #这个配置项表示只允许来自 192.168.8.0/24 网段的主机连接到本机的 NTP 服务。
local stratum 10 #这个配置项表示将本机作为 NTP 服务的层级(stratum),并将其设置为 10

开启chrony服务

systemctl start chronyd
systemctl enable chronyd

其他需要同步节点只修改vim /etc/chrony.conf
Rocky-9.1-k8s-master2、Rocky-9.1-k8s-master3、Rocky-9.1-k8s-node1、Rocky-9.1-k8s-node2

server 192.168.8.100 iburst
[root@Rocky-9 ~]#chronyc -a makestep  #强制同步

五、关闭全部节点的swap交换分区

sed -ri 's/.*swap.*/#&/' /etc/fstab

解释:
这个命令的作用是在 /etc/fstab 文件中注释掉所有包含 swap 字符串的行。

具体来说,sed 是一个文本处理工具,-r 选项表示启用扩展正则表达式,-i 选项表示直接修改文件内容。‘s/.swap./#&/’ 是一个 sed 命令,用于将包含 swap 字符串的行注释掉,其中:

s 表示替换操作;
.swap. 表示匹配包含 swap 字符串的整行,其中 .* 表示匹配任意数量的任意字符;
#& 表示在匹配到的行首添加 # 符号,从而注释掉这一行。
因此,该命令会将 /etc/fstab 文件中所有包含 swap 字符串的行注释掉,从而禁用交换分区。

 swapoff -a  #禁用所有交换分区
 free -m  #查看系统内存使用情况

在这里插入图片描述

六、所有节点进行调整内核参数

cat > kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
EOF

移动文件并执行

cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf

更新 systemd

yum -y upgrade systemd

七、设置日志 rsyslogd 和 systemd journald

mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent

# 压缩历史日志
Compress=yes

SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000

# 最大占用空间 10G
SystemMaxUse=10G

# 单日志文件最大 200M
SystemMaxFileSize=200M

# 日志保存时间 2 周
MaxRetentionSec=2week

# 不将日志转发到 syslog
ForwardToSyslog=no
EOF

重启动journald服务

systemctl restart systemd-journald

八、升级内核:

rpm -Uvh https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum --enablerepo=elrepo-kernel install -y kernel-ml
grub2-mkconfig -o /boot/grub2/grub.cfg

九、所有节点载入ipvs模块

modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

这里有个抗rocky9.1的iptables-services用的是iptables-nft-services
没有/etc/sysconfig/modules/ipvs.modules
因此创建

mkdir -p /etc/sysconfig/modules/
touch /etc/sysconfig/modules/ipvs.modules

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

十、开始安装
下载sealos
wget https://github.com/labring/sealos/releases/download/v4.1.7/sealos_4.1.7_linux_amd64.tar.gz
官方文档

# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget  https://github.com/labring/sealos/releases/download/v4.1.7/sealos_4.1.7_linux_amd64.tar.gz  && \
    tar -zxvf sealos_4.1.7_linux_amd64.tar.gz sealos &&  chmod +x sealos && mv sealos /usr/bin
# 创建一个集群
sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1     --masters 192.168.64.2,192.168.64.22,192.168.64.20     --nodes 192.168.64.21,192.168.64.19     --passwd your-own-ssh-passwd

下载kubernetes-server-linux
sealos_4.1.7目前支持1.24.0的kubernetes因此我们下载1.24.0版本
wget https://dl.k8s.io/v1.24.0/kubernetes-server-linux-amd64.tar.gz

解压缩sealos

tar zxvf sealos_4.1.7_linux_amd64.tar.gz

调整权限并放到 /usr/bin 目录下

chmod +x sealos && mv sealos /usr/bin

开始部署:

    sealos init --passwd 'xxxxxx'  \
	--master 192.168.8.100 --master 192.168.8.101 --master 192.168.8.102 \
	--node 192.168.8.103 --node 192.168.8.104 --user root \
	--version v1.24.0 --pkg-url=/root/kubernetes-server-linux-amd64.tar.gz

就这么1条命令就开始部署了。
完成后kubectl get nodes查看情况

rocky-9.1-k8s-master1   Ready    control-plane,master   40m   v1.24.0
rocky-9.1-k8s-master2   Ready    control-plane,master   39m   v1.24.0
rocky-9.1-k8s-master3   Ready    control-plane,master   39m   v1.24.0
rocky-9.1-k8s-node1     Ready    <none>                 39m   v1.24.0
rocky-9.1-k8s-node2     Ready    <none>                 39m   v1.24.0

节点操作:
增加master或增加node

sealos join --master 192.168.8.105 --master 192.168.8.106 
sealos join --node 192.168.8.105 --node 192.168.8.106

删除master或删除node

sealos clean --master192.168.8.105 --master 192.168.8.106
sealos clean --node 192.168.8.105 --node 192.168.8.106

清理集群

sealos clean --all -f

十一、安装web界面kuboard v3

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

执行指令

kubectl get pods -n kuboard

等待 kuboard 名称空间中所有的 Pod 就绪
完成后访问 Kuboard
在浏览器中打开链接 http://your-node-ip-address:30080
输入初始用户名和密码,并登录
用户名: admin
密码: Kuboard123
执行 Kuboard v3 的卸载

kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

清理遗留数据
在 master 节点以及带有 k8s.kuboard.cn/role=etcd 标签的节点上执行

rm -rf /usr/share/kuboard

在这里插入图片描述


http://www.kler.cn/a/8258.html

相关文章:

  • flutter下拉刷新上拉加载的简单实现方式三
  • java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程
  • Microsoft 365 Exchange如何设置可信发件IP白名单
  • C#发票识别、发票查验接口集成、电子发票(航空运输电子行程单)
  • 【C++】一种针对代码的连续条件检查方案,累计布尔结果
  • 【Webpack实用指南】如何拆分CSS资源(2)
  • ToBeWritten之固件威胁建模
  • 代码随想录打卡第51天|309.最佳买卖股票时机含冷冻期;714.买卖股票的最佳时机含手续费
  • P1016 [NOIP1999 提高组] 旅行家的预算
  • vue:生成二维码 qrcode、vue-qr(二维码中间可带logo)
  • java:classLoader.loadClass() 和 Class.forName()
  • JavaScript -- 函数
  • Midjourney —— AI绘图工具能取代设计师吗?
  • HttpRunner3.x 源码解析(4)-工具类loader.py
  • 数据结构——二分查找算法
  • 架构重构的技巧
  • 十年程序老狗手写分布式服务架构:原理、设计与实战
  • 行为型模式-模板方法
  • 类的相关知识(二)const
  • 光度立体法检测原理讲解
  • 驾校预约课程管理系统设计与实现
  • 对象序列化流
  • 前端实现html转pdf
  • html+css实现的登录界面
  • 【计算机视觉·OpenCV】使用Haar+Cascade实现人脸检测
  • ESP32设备驱动-MLX90615红外测温仪驱动