1. 为什么选择Sealos部署Kubernetes集群
在Ubuntu 24.04上部署Kubernetes集群的传统方式需要手动安装容器运行时、kubeadm、kubelet等组件,配置过程繁琐且容易出错。Sealos作为一款开源的Kubernetes集群部署工具,通过封装这些复杂步骤,实现了"一条命令完成集群部署"的能力。
我最近在测试环境中使用Sealos部署了多个Kubernetes集群,相比传统方式,它带来了三个显著优势:
- 部署时间从原来的30分钟缩短到5分钟以内
- 内置了高可用方案,避免了单点故障风险
- 支持集群的版本升级和扩缩容操作
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与前置条件
2.1 硬件资源规划
对于生产环境,建议至少准备以下规格的服务器:
- 控制平面节点:4核CPU/8GB内存/100GB存储 x 3台
- 工作节点:根据业务需求动态扩展
测试环境可以使用更低配置:
bash复制# 最低测试配置(不推荐生产使用)
控制节点:2核/4GB/50GB x 1
工作节点:2核/4GB/50GB x 2
2.2 系统环境配置
在所有节点上执行以下基础配置:
bash复制# 关闭swap
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 设置主机名解析
sudo tee -a /etc/hosts <<EOF
192.168.1.10 master1
192.168.1.11 node1
192.168.1.12 node2
EOF
# 加载内核模块
sudo tee /etc/modules-load.d/k8s.conf <<EOF
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
sudo modprobe -- br_netfilter ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack
3. Sealos安装与集群部署
3.1 安装Sealos最新版
在主控制节点执行:
bash复制curl -sfL https://raw.githubusercontent.com/labring/sealos/main/scripts/install.sh | sh -s v4.3.0
# 验证安装
sealos version
3.2 下载Kubernetes镜像
选择需要部署的Kubernetes版本(这里以v1.28.0为例):
bash复制sealos pull labring/kubernetes:v1.28.0
sealos pull labring/helm:v3.12.0
sealos pull labring/calico:v3.25.0
3.3 创建集群配置文件
新建cluster.yaml配置文件:
yaml复制apiVersion: apps.sealos.io/v1beta1
kind: Cluster
metadata:
name: my-cluster
spec:
image:
- labring/kubernetes:v1.28.0
- labring/helm:v3.12.0
- labring/calico:v3.25.0
hosts:
- ips:
- 192.168.1.10:22
roles:
- master
env:
- key: "APISERVER_ADVERTISE_ADDRESS"
value: "192.168.1.10"
- ips:
- 192.168.1.11:22
- 192.168.1.12:22
roles:
- node
ssh:
user: root
passwd: "your_secure_password"
pk: "/root/.ssh/id_rsa"
3.4 执行集群部署
运行部署命令:
bash复制sealos apply -f cluster.yaml
部署过程大约需要3-5分钟,完成后会输出如下信息:
code复制Cluster my-cluster created successfully!
You can access it via:
kubectl get nodes
4. 集群验证与基础配置
4.1 验证集群状态
bash复制kubectl get nodes -o wide
kubectl get pods -A
4.2 配置kubectl自动补全
bash复制echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
4.3 安装常用插件
通过Sealos安装Ingress Controller:
bash复制sealos run labring/ingress-nginx:1.8.1
安装监控套件:
bash复制sealos run labring/prometheus-operator:0.59.0
5. 生产环境优化建议
5.1 网络性能调优
修改Calico配置提升网络性能:
bash复制kubectl patch ippool default-ipv4-ippool -p '{"spec":{"ipipMode":"Never","vxlanMode":"Always"}}' --type=merge
5.2 节点资源预留
创建kubelet配置文件:
yaml复制apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
evictionHard:
memory.available: "500Mi"
nodefs.available: "10%"
systemReserved:
cpu: "500m"
memory: "1Gi"
5.3 证书自动续期
启用Kubernetes证书自动续期:
bash复制sealos run labring/kube-renew-cert:v0.0.1
6. 常见问题排查
6.1 节点NotReady状态处理
检查步骤:
- 确认kubelet服务状态:
systemctl status kubelet - 检查容器运行时:
crictl ps - 查看节点详细状态:
kubectl describe node <node-name>
6.2 Pod网络不通问题
诊断方法:
bash复制# 在问题节点上执行
ping <其他节点IP>
curl -I <服务ClusterIP>:<端口>
# 检查Calico日志
kubectl logs -n kube-system -l k8s-app=calico-node
6.3 镜像拉取失败
解决方案:
- 检查镜像仓库配置:
kubectl get secrets -n <namespace> - 手动预拉镜像:
sealos pull <image-name> - 配置私有仓库认证:
bash复制sealos login registry.example.com -u username -p password
7. 集群维护操作指南
7.1 节点扩容
添加新节点到cluster.yaml后执行:
bash复制sealos apply -f cluster.yaml
7.2 集群升级
升级到Kubernetes v1.28.1:
bash复制sealos pull labring/kubernetes:v1.28.1
sealos upgrade --cluster my-cluster --image labring/kubernetes:v1.28.1
7.3 备份与恢复
使用Velero进行集群备份:
bash复制sealos run labring/velero:v1.11.0
创建备份:
bash复制velero backup create cluster-backup --include-namespaces=default --snapshot-volumes
