使用 Sealos 快速部署 Kubernetes 集群实战教程

93 阅读4分钟

使用 Sealos 快速部署 Kubernetes 集群实战教程

在本文中,我们将详细介绍如何使用 Sealos 在 Linux 主机上快速部署一个 Kubernetes 集群。本教程涵盖从环境准备、主机配置、免密设置,到集群安装、扩容、问题排查的完整流程。


🧩 一、准备 Sealos 二进制文件

首先,从 Sealos 官方仓库 下载对应版本的 sealos 二进制文件,并将其放置到系统路径中:

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

确认安装成功:

sealos version

💡 说明:
Sealos 是一个基于“镜像即集群”理念的云操作系统,可一键安装 Kubernetes 集群,支持双栈(IPv4 + IPv6)部署。
但目前不支持纯 IPv6 单栈部署
如果仅启用了 IPv6 网络,Sealos 初始化阶段会因无法访问部分组件或镜像而失败。
建议使用 IPv4/IPv6 双栈环境。 如果想要部署仅IPv6单栈集群,需要用二进制脚本的方式部署,有那种用ansible脚本安装集群的


🔐 二、生成主机 SSH 秘钥

集群节点之间需要通过 SSH 免密通信,首先在每台节点上生成 SSH 秘钥:

ssh-keygen -t rsa -b 2048

如果需要删除旧秘钥,可以执行:

rm -f ~/.ssh/id_rsa ~/.ssh/id_rsa.pub

🧾 三、配置 /etc/hosts

Sealos 在部署时需要解析 Harbor 的域名地址,因此务必在所有节点的 /etc/hosts 中正确配置。

编辑文件:

vim /etc/hosts

添加如下内容(示例):

harbor IP地址  harbor域名

⚠️ 注意:
如果配置错误,可能导致 Sealos 执行失败。
初次执行 sealos apply 时,系统可能会自动写入相关配置。


📄 四、生成 Clusterfile

使用 sealos gen 命令生成集群配置文件:

sealos gen harbor域名地址:端口/paas_public/kube-system/kubernetes-sealos:v1.24.2 \
--masters 10.1.21.175 --nodes 10.1.21.176 \
--env criData=/paas/containerd,registryDomain=harbor域名地址,registryUsername=admin,registryPassword=Nlpaas123 \
--pk /root/.ssh/id_rsa --user=root --cluster ip6test > /root/cluster-file/Clusterfile

🔁 五、配置主机免密登录

两台节点之间需要建立互信关系。

在每台节点上生成公钥

ssh-keygen -t rsa -b 4096

互传公钥

10.1.21.175 上执行:

ssh-copy-id 10.1.21.176
ssh 10.1.21.176

10.1.21.176 上执行:

ssh-copy-id 10.1.21.175
ssh 10.1.21.175

确保相互之间可以免密登录。


🧹 六、清理旧环境

在重新部署或遇到问题需要重置集群时,可以先彻底清理环境:

sudo rm -rf /etc/containerd/* \
/var/lib/sealos/data/* \
/root/registry /var/lib/registry /etc/registry* \
/etc/sysctl.d/k8s.conf /etc/systemd/system/kubelet.service*

停止并禁用相关服务:

systemctl stop kubelet kube-apiserver kube-controller-manager kube-proxy kube-scheduler
systemctl disable kubelet kube-apiserver kube-controller-manager kube-proxy kube-scheduler

清理容器运行时(containerd):

systemctl stop containerd
sudo rm -f /usr/bin/containerd*
sudo rm -rf /etc/containerd /var/lib/containerd /var/log/containerd
sudo rm -f /etc/systemd/system/containerd.service

清理完成后可执行:

sealos reset --masters 10.1.21.175 --nodes 10.1.21.176 --cluster ip6test --force

⚙️ 七、生成新的 Clusterfile

sealos gen harbor域名地址:端口/paas_public/kube-system/kubernetes:v1.24.2 \
harbor域名地址:端口/paas_public/kube-system/helm:v3.10.3 \
harbor域名地址:端口/paas_public/kube-system/calico:v3.25.0 \
--masters 10.1.21.175 --nodes 10.1.21.176 \
--env criData=/paas/containerd,registryDomain=harbor域名地址,registryUsername=admin,registryPassword=Nlpaas123,registryPort1:80,registryPort1:端口 \
--pk /root/.ssh/id_rsa --user=root --cluster ip6test  > /root/cluster-file/ip6test/Clusterfile

删除 Clusterfile 前两行(如无用)

查看并编辑文件:

vim /root/cluster-file/ip6test/Clusterfile

🚀 八、部署 Kubernetes 集群

进入目录:

cd /root/cluster-file/ip6test

执行安装:

sealos apply -f Clusterfile --debug

如果失败或长时间无响应,可重置后重试:

sealos reset --masters 10.1.21.175 --nodes 10.1.21.176 --cluster ip6test
sealos apply -f Clusterfile --debug

🔧 九、集群扩容与缩容

扩容节点

sealos add --nodes 10.1.21.177 --cluster='ip6test'

若扩容失败,可重新执行一次。

删除节点

sealos delete --nodes 10.1.21.177 --cluster='ip6test'

🩺 十、常见问题排查

节点状态为 NotReady

检查 Calico 或 Tigera Operator 是否运行正常:

kubectl -n tigera-operator get pods
kubectl -n tigera-operator logs <pod-name>

如果 Calico 没有部署成功,请重新执行 sealos apply 或检查网络配置。

异常处理

修改后apiserver起不来,kubect get pod 报如下错误

The connection to the server 10.1.8.26:6443 was refused - did you specify the right host or port?

查看日志,下面这个journalctl命令对排查问题非常重要,可以搜索它的用法:

journalctl -u kubelet | grep kube-apiserver

✅ 总结

通过本文,我们完成了使用 Sealos 从零部署 Kubernetes 集群的全流程,包括:

  • 准备环境与 SSH 免密
  • 生成 Clusterfile
  • 执行集群部署
  • 节点扩容与清理
  • 常见问题处理

Sealos 通过“镜像即集群”的理念,让 Kubernetes 部署更快、更标准化,非常适合企业私有云环境中快速构建多节点集群。

具体安装可以参考sealos官方网站:sealos.run/docs/k8s/qu…