简介:本文详解Sealos私有化部署全流程,涵盖环境准备、安装配置、集群管理、性能调优及故障排查,提供可落地的技术方案与最佳实践。
在云计算与容器化技术深度融合的今天,企业对于Kubernetes集群的自主可控需求日益迫切。Sealos作为一款轻量级、高可用的Kubernetes发行版,以其零依赖安装、自动化集群管理和极简运维特性,成为私有化部署场景下的优选方案。本文将系统阐述Sealos私有化部署的核心流程,从环境准备到集群优化,提供可落地的技术方案。
Sealos对硬件的要求灵活,但需根据业务规模合理配置:
chronyd),时间偏差≤500ms,防止证书验证失败。Sealos采用静态二进制编译,无需额外依赖,但需确保:
curl、wget、tar、ssh已安装。sysctl调整net.ipv4.ip_forward=1、net.bridge.bridge-nf-call-iptables=1等参数。
# 下载Sealos安装包(以v4.2.0为例)curl -LO https://github.com/labring/sealos/releases/download/v4.2.0/sealos_4.2.0_linux_amd64.tar.gztar -zxvf sealos_4.2.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin# 单节点安装Kubernetes(默认配置)sealos run labring/kubernetes:v1.28.0 \--masters 192.168.1.100 \--nodes 192.168.1.101,192.168.1.102 \--passwd your_ssh_password
关键参数说明:
--masters:指定主节点IP列表(生产环境至少3个)。--nodes:指定工作节点IP列表(可选)。--passwd:SSH密码(推荐使用密钥认证,通过--ssh-key指定)。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.100ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.101
通过--config参数指定YAML配置文件,实现更灵活的部署:
# cluster.yaml示例apiVersion: sealos.io/v1beta1kind: Clustermetadata:name: my-clusterspec:hosts:- ips: [192.168.1.100, 192.168.1.101, 192.168.1.102]roles: [master]- ips: [192.168.1.103, 192.168.1.104]roles: [node]image: labring/kubernetes:v1.28.0ssh:passwd: ""pkey: "/root/.ssh/id_rsa"
执行安装:
sealos apply -f cluster.yaml
# 检查节点状态kubectl get nodes# 预期输出:所有节点状态为Ready# 验证核心组件kubectl get pods -n kube-system | grep -E "coredns|etcd|kube-apiserver"# 确保所有Pod运行正常
扩容节点:
sealos add --masters 192.168.1.105 # 添加主节点sealos add --nodes 192.168.1.106 # 添加工作节点
缩容节点:
# 先通过kubectl drain排空节点kubectl drain 192.168.1.106 --ignore-daemonsets --delete-emptydir-data# 再执行删除sealos delete --nodes 192.168.1.106
Etcd备份:
# 使用sealos内置工具备份sealos etcd snapshot save /data/backup/etcd-snapshot-$(date +%F).db# 恢复时指定备份文件sealos etcd snapshot restore /data/backup/etcd-snapshot-2023-10-01.db
Kubernetes资源备份:
# 使用Velero(需提前安装)velero backup create full-backup --include-cluster-resources
--quota-backend-bytes=8G(默认2G),防止日志过大导致写入阻塞。/etc/kubernetes/manifests/kube-apiserver.yaml中增加:
spec:containers:- command:- kube-apiserver- --default-not-ready-toleration-seconds=30- --default-unreachable-toleration-seconds=30
现象:sealos add命令卡在”Waiting for node to join cluster”。
排查步骤:
ssh root@192.168.1.105 "hostname"。date命令对比所有节点时间。journalctl -u sealos -f。现象:kubectl get nodes报错x509: certificate has expired。
解决方案:
# 备份原证书cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak# 重新生成证书sealos cert renew --masters 192.168.1.100,192.168.1.101,192.168.1.102# 重启kubeletsystemctl restart kubelet
现象:Pod因MountVolume.SetUp failed而Pending。
解决方案:
kubectl get pods -n kube-system | grep csi。kubectl get sc。
# 创建测试目录mkdir /mnt/test# 尝试挂载(以NFS为例)mount -t nfs 192.168.1.200:/data /mnt/test
sealos upgrade,大版本升级需测试环境验证。kube-apiserver的--authorization-mode为RBAC,Node。Sealos私有化部署通过极简的设计理念,显著降低了Kubernetes的运维门槛。本文从环境准备到故障排查,系统梳理了私有化部署的全生命周期管理。实际部署中,建议结合企业具体场景(如AI训练、微服务架构)进一步优化存储与网络配置,实现资源利用率与稳定性的平衡。