ubantu 24,使用sealos v4.3.7 安装 k8s v1.26.15 + kubesphere v3.4.0
ubantu 24。
集群规划(3 节点),使用sealos v4.3.7 部署 k8s + kubesphere v3.4.0
master节点01,主机名:k8s-master-01,ip:172.29.128.1
工作节点01:主机名:k8s-worker-01,ip:172.29.132.68
工作节点02:主机名:k8s-worker-02,ip:172.29.132.69
| 机器名 | 内网 ip |
| k8s-master-01 | 172.29.128.1 |
| k8s-worker-01 | 172.29.132.68 |
| k8s-worker-02 | 172.29.132.69 |
一、环境前置约束
- 全部节点关闭防火墙 / 放行全内网、关闭 swap、主机名互不重复
- 所有节点
/etc/hosts同步配置域名解析 - k8s v1.26.15 使用 containerd 容器运行时,不兼容 docker 旧逻辑
- KubeSphere v3.4.1 适配 K8s 1.24~1.27,推荐集群版本
v1.26.15
二,御载以前安装的containerd等。
1. 停止并删除服务
#停止服务,御载软件包 systemctl stop containerd systemctl disable containerd apt remove -y containerd.io containerd apt autoremove -y apt autoclean rm -f /usr/bin/containerd rm -f /usr/bin/ctr rm -rf /etc/containerd /var/lib/containerd /run/containerd /var/lib/cri /var/lib/nerdctl rm -rf /var/lib/sealos /etc/kubernetes /var/lib/kubelet /var/lib/etcd
三、所有节点统一前置初始化脚本(所有机器执行)
1. 修改主机名
# master节点执行
hostnamectl set-hostname k8s-master-01
# worker01执行
hostnamectl set-hostname k8s-worker-01
# worker02执行
hostnamectl set-hostname k8s-worker-02
2. 配置 hosts 解析(所有节点统一写入 /etc/hosts)
cat >> /etc/hosts << EOF
172.29.128.1 k8s-master-01
172.29.132.68 k8s-worker-01
172.29.132.69 k8s-worker-02
EOF
/etc/hosts 完整内容:
127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.29.128.1 k8s-master-01 172.29.132.68 k8s-worker-01 172.29.132.69 k8s-worker-02
3. 系统内核 & 资源优化
# 关闭swap永久生效 swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 开启root密码登录 sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i 's/#PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl restart ssh systemctl enable ssh # 关闭ufw防火墙 systemctl stop ufw systemctl disable ufw cat >> /etc/sysctl.conf << EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sysctl -p #把下面两行的值改为1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 # 加载网桥模块 modprobe overlay modprobe br_netfilter #系统开机自动加载里面写的内核模块。 echo "overlay" >> /etc/modules-load.d/k8s.conf echo "br_netfilter" >> /etc/modules-load.d/k8s.conf
4. 补齐网络依赖,解决 calico的ipset与宿主机内核版本不兼容的问题。
modprobe ipip tunnel4 ip_tunnel xt_conntrack xt_mark xt_set iptable_filter cat >> /etc/sysctl.d/99-calico-tunnel.conf <<EOF net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 EOF sysctl -p /etc/sysctl.d/99-calico-tunnel.conf iptables -F;iptables -t nat -F;iptables -X;ipvsadm -C ip link del tunl0 2>/dev/null;ip link del cni0 2>/dev/null rm -rf /etc/cni/net.d/*
5. 安装基础依赖
apt update && apt upgrade -y
apt update && apt install -y curl wget openssl ca-certificates gnupg lsb-release openssh-server sshpass tar unzip ipset ipvsadm conntrack socat lvm2
6. 时间同步
apt install chrony -y
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai
7. 免密互通(仅 master 执行,打通所有节点 ssh)
# master节点生成密钥
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519
# 分发公钥
sshpass ssh-copy-id root@172.29.128.1
sshpass ssh-copy-id root@172.29.132.68
sshpass ssh-copy-id root@172.29.132.69
# 验证免密连通
ssh root@172.29.128.1 hostname
ssh root@172.29.132.68 hostname
ssh root@172.29.132.69 hostname
8. 批量校验所有节点 SSH 连通性(最关键前置检查)
nodes=(172.29.128.1 172.29.132.68 172.29.132.69)
for ip in ${nodes[@]};
do
echo "=== 测试 $ip SSH ==="
sshpass -p "你的root密码" ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@$ip "hostname; echo 连接正常"
done
无报错代表账号密码、网络、ssh 服务全部正常。
四、Master 节点安装 Sealos v4.3.7
试过用二进制方式安装不了,改换下载离线包到本机,然后人本机copy到远程服务器。
下载地址:https://github.com/labring/sealos/releases/download/v4.3.7/sealos_4.3.7_linux_amd64.tar.gz
在本机打开 powershell 窗口,用scp命令拷贝到远程服务器,然后在服务器上执行安装:
#上传到服务器
scp D:/softs/k8s/sealos_4.3.7_linux_amd64.tar.gz root@121.40.63.235:/data/sealos-4 cd /data/sealos-4 # 解压 tar -zxvf sealos_4.3.7_linux_amd64.tar.gz # 赋予执行权限并全局放置 chmod +x sealos mv sealos /usr/local/bin/ # 验证版本 sealos version
五、拉镜像
1,查看已经下载的镜像
sealos images
2,删除指定镜像
sealos rmi -f 镜像名:标签
3.用sealos拉取五个镜像
1,拉取镜像
#从阿里云上海仓库拉取 sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:v3.14.0 sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4 sealos pull registry.cn-shanghai.aliyuncs.com/labring/openebs:v3.4.0 #从渡渡鸟拉取 sealos pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/labring/kubesphere:v3.4.0 sealos pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/kubesphere/ks-installer:v3.4.1
查看本地拉下来的镜像
sealos images

2,查看有哪些版本的镜像:
打开网站:https://explore.ggcr.dev
输入镜像完整地址:
registry.cn-shanghai.aliyuncs.com/labring/calico
3. 查看集群状态
kubectl get nodes

4. 查看pod状态
kubectl get pod -A

所有pod全部为Running,并且全部READY才算安装成功。
六,安装k8s + kubespere (仅在第一个master节点执行)
1. 仅安装k8s v1.26.15
sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4 \
--masters 172.29.128.1 \
--nodes 172.29.132.68,172.29.132.69 \
--user root \
--passwd 你的root密码
一次性安装k8s + kubesphere
sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4 \
registry.cn-shanghai.aliyuncs.com/labring/openebs:v3.4.0 \
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/labring/kubesphere:v3.4.0 \
--masters 172.29.128.1 \
--nodes 172.29.132.68,172.29.132.69 \
--user root \
--passwd yihan@123
避坑指南:
ubantu 24.4f用sealos安装 k8s,一定要用calico v3.27.0及以上的版,不然calico相关的pod拉不起来,因为calico自带的ipset内核比宿主机ipset内核版本低,ipset内核不兼容。
2. 单独安装 kubesphere v3.4.0
分两步:
第一步:安装本地存储
sealos run registry.cn-shanghai.aliyuncs.com/labring/openebs:v3.4.0
等待部署完成,执行下面命令手动标记为默认存储类(关键!openebs 安装后不会自动设 default)
kubectl patch storageclass openebs-localpv -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
注意:如果存储默认是default,就不用执行上面这一句了。
校验:kubectl get sc 看到名称带 (default) 再执行下一步

第二步:安装 kubesphere
sealos run swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/labring/kubesphere:v3.4.0
说明:
如果没安装openabs就直接执行安装kubesphere,会安装失败,那么就把ks-installer-xxxx 镜像删除,它就会自动重新安装kubesphere

kubectl delete pod ks-installer-758d459599-5nv9t -n kubesphere-system
实时查看安装日志
kubectl logs -n kubesphere-system ks-installer-758d459599-5nv9t -f

如果开放了外网端口,可以直接访问 http://公网ip:30880
帐号:admin
密码:P@88w0rd

七,卸载整个集群
1. 一键重置集群(主节点执行,自动清理所有 master+node)
sealos reset --force
2. 手动清理残留文件(reset 执行后补充,所有节点执行)
# 停止k8s服务
systemctl stop kubelet containerd
systemctl disable kubelet containerd
# 删除集群数据
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd /var/lib/containerd /var/lib/sealos /root/.kube /etc/containerd;rm -f /etc/sysctl.d/k8s.conf
3. 单独删除集群某个节点(不销毁整个集群)
# 删除worker节点,逗号分隔多IP
sealos delete --nodes 172.29.128.2,172.29.128.3 --force
# 删除master控制节点(高可用慎用,etcd必须奇数)
sealos delete --masters 172.29.128.1 --force

浙公网安备 33010602011771号