centos7.9 + sealos部署k8s v1.28 + kubesphere v3.4

centos7.9是3.1内核,需要先升级内核才能部署k8s,内核版本必须 >= 5.4。

centos7.9最多只能支持sealos 4.3,支持不了sealos 5.1,sealos最多只能部署 K8s v1.28 + KubeSphere v3.4,k8s 1.28以上不支持。

 

【下载离线 RPM 包安装(在线源彻底不通时)】

centeos7安装6.9内核,逐条执行下面这 3 条wget令 (5.4与6.9内核安装期中一个即可)

#国内高速Coreix镜像,6.9.x主线
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-6.9.7-1.el7.elrepo.x86_64.rpm
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-devel-6.9.7-1.el7.elrepo.x86_64.rpm
wget --no-check-certificate https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-headers-6.9.7-1.el7.elrepo.x86_64.rpm
# 2. 下载完直接安装,先删除旧headers
rpm -e --nodeps kernel-headers
yum localinstall -y *.rpm
# 3. 安装完设置默认启动 + 重启
#设置序号0为默认内核
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
# 查看内核 
uname -a

 

查看默认内核

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

 

全节点统一初始化操作(所有机器复制执行)

基础系统优化

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 永久关闭Swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 加载内核网桥模块
modprobe overlay
modprobe br_netfilter
echo '1' > /proc/sys/net/ipv4/ip_forward
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

# 安装依赖、时间同步
yum install -y wget curl ntpdate net-tools vim bash-completion
echo "*/30 * * * * ntpdate time1.aliyun.com" >> /var/spool/cron/root
systemctl restart crond

#设置新内核为默认启动项
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启生效
reboot

 

所有节点配置hosts(修改为你的节点IP和主机名)

cat >> /etc/hosts <<EOF
172.29.132.65 k8s-master-01
172.29.132.66 k8s-worker-01
172.29.132.67 k8s-worker-02
EOF

 

安装兼容 CentOS7.9 的 Sealos v4.3

仅第一个master节点执行(一主两从)

mkdir -p /srv/sealos
cd /srv/sealos
# 下载v4.3.0二进制
curl -L -o sealos_4.3.0_linux_amd64.tar.gz https://gh-proxy.org/https://github.com/labring/sealos/releases/download/v4.3.0/sealos_4.3.0_linux_amd64.tar.gz
# 解压
tar zxvf sealos_4.3.0_linux_amd64.tar.gz sealos
# 赋予权限并放到全局命令
chmod +x sealos
cp sealos /usr/bin/
# 验证版本
sealos version
# 输出 version: v4.3.0 正常

 

Sealos 一键部署 一主两从 K8s 集群(仅Master 节点执行)

sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.14 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.0 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 \
--masters 172.29.132.65 \
--nodes 172.29.132.66,172.29.132.67 \
--user root -p "yihan@123"

注意:逗号后面不能有空格

参数说明

  • --masters:master 节点 IP,多主逗号分隔
  • --nodes:worker 节点 IP,多个逗号分隔
  • -p:所有节点统一 root 密码;免密 ssh 可删除此参数

sealos一键部署三主两从 k8s集群(仅master节点执行)

sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.14 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.0 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 \
--masters 172.29.132.65 \
--nodes 172.29.132.66,172.29.132.67 \
--user root -p "你服务器的root密码"

 

等待 10~20 分钟部署完成,验证集群

# 配置kubectl自动补全
echo "source <(kubectl completion bash)" >> /etc/profile
source /etc/profile

# 查看节点状态,全部Ready才算成功
kubectl get nodes

# 查看集群控制平面组件
kubectl get cs

# 查看所有系统Pod,全部Running
kubectl get pods -n kube-system

 

查看集群当前节点列表

# 查看节点是否加入集群
sealos list
kubectl get nodes

kubectl get pods -A

 

Sealos 部署 KubeSphere v3.4

sealos run registry.cn-shanghai.aliyuncs.com/labring/kubesphere:v3.4.1

 

打开另一个SSL终端,实时查看 KS 安装日志(必须看到 Install successful)

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o name) -f
#出现 Install successful 代表安装完毕

 

获取默认管理员密码

# 账号:admin
kubectl get secret -n kubesphere-system ks-admin -o jsonpath='{.data.adminPassword}' | base64 -d

 

访问 KubeSphere 控制台

访问地址:http://任意节点IP:30880 

首次登录强制修改 admin 密码。

 

御载集集群

# 清空集群
sealos reset
# 清理残留
rm -rf /var/lib/containerd /etc/kubernetes /root/.kube

 

强制御载集群

sealos reset -p "你的root密码" --force

 

【Sealos 离线部署(无外网环境)】

1. 有网机器提前拉取全部镜像

sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.14
sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.0
sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1
sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubesphere:v3.4.1
# 打包离线包
sealos save -o k8s-ks.tar registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.28.14 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.0 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 registry.cn-shanghai.aliyuncs.com/labring/kubesphere:v3.4.1

 

2.上传 tar 包到内网 Master 节点,加载镜像

sealos load -i k8s-ks.tar
# 再执行sealos run部署集群与kubesphere

 

常用运维命令

#新增单个 worker 节点
sealos add nodes --nodes 192.168.102 --user root -p "123456"

#新装置多个 worker 节点
sealos add nodes \
--nodes 192.168.1.102,192.168.1.103,192.168.1.104 \
--user root -p "服务器root密码"

#一次性添加多台 master(逗号分隔 IP,无空格)
sealos add \
--masters 192.168.1.101,192.168.1.102 \
--user root \
-p "你的服务器统一root密码"


# 同时新增 master+worker(混合扩容场景)
sealos add \
--masters 192.168.1.101,192.168.1.102 \
--nodes 192.168.1.201 \
--user root -p "密码"


#查看 sealos 集群信息
sealos list
#删除节点
sealos delete --nodes 192.168.1.101 --force
#一次删除多个节点
sealos delete --nodes 192.168.1.101,192.168.1.102 --force

 

删除控制平面 master 节点(高可用集群专用)

重要:etcd 要求 master 数量必须为奇数,删除后剩余 master 不能为偶数,否则集群崩溃

# 删除单个master
sealos delete --masters 192.168.1.102

# 删除多个master
sealos delete --masters 192.168.1.102,192.168.1.103

 

平滑过渡的删除工作工点(推荐,避免业务丢失)

# 先设置节点不可调度
kubectl cordon 192.168.1.101
# 驱逐所有Pod
kubectl drain 192.168.1.101 --ignore-daemonsets --delete-emptydir-data
#删除节点
sealos delete --nodes 192.168.1.101

 

 

posted @ 2026-06-20 23:10  民工黑猫  阅读(15)  评论(0)    收藏  举报