使用 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…