1. 为什么选择单节点Sealos部署测试环境
在云原生技术快速普及的今天,Kubernetes已成为测试环境部署的事实标准。但传统Kubeadm部署方式需要手动配置网络插件、存储方案和监控系统,整个过程繁琐耗时。Sealos作为一款开源的Kubernetes发行版,通过"应用镜像"的概念将Kubernetes核心组件与常用插件打包整合,实现了真正的一键式部署。
单节点部署模式特别适合以下场景:
- 开发人员本地调试环境搭建
- 功能验证的临时测试环境
- CI/CD流水线中的集成测试环境
- 教学演示环境的快速构建
相比多节点集群,单节点部署具有明显优势:
- 资源消耗低:仅需2核4G的虚拟机即可运行
- 部署速度快:完整部署可在5分钟内完成
- 维护成本低:无需处理节点间网络通信问题
重要提示:生产环境请务必使用多节点部署方案,单节点部署仅建议用于测试目的
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与前置检查
2.1 硬件资源要求
最低配置要求:
- CPU:2核(x86_64架构)
- 内存:4GB
- 磁盘:40GB(推荐SSD)
- 网络:能访问公网
推荐配置:
- CPU:4核
- 内存:8GB
- 磁盘:100GB SSD
2.2 操作系统准备
支持的操作系统:
- CentOS 7.6+
- Ubuntu 18.04+
- Debian 10+
系统初始化步骤:
bash复制# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 设置时间同步
yum install -y ntpdate || apt-get install -y ntpdate
ntpdate time.windows.com
2.3 内核参数优化
创建/etc/sysctl.d/k8s.conf文件:
conf复制net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
加载配置:
bash复制sysctl --system
3. Sealos单节点部署实战
3.1 安装Sealos客户端
下载最新版Sealos(当前最新版本为v4.1.3):
bash复制wget https://github.com/labring/sealos/releases/download/v4.1.3/sealos_4.1.3_linux_amd64.tar.gz
tar -zxvf sealos_4.1.3_linux_amd64.tar.gz sealos
chmod +x sealos && mv sealos /usr/bin
验证安装:
bash复制sealos version
3.2 准备Kubernetes镜像
拉取Kubernetes应用镜像(以v1.25.0为例):
bash复制sealos pull labring/kubernetes:v1.25.0
查看已下载镜像:
bash复制sealos images
3.3 执行单节点部署
部署命令:
bash复制sealos run labring/kubernetes:v1.25.0 \
--single
部署过程会自动完成:
- 容器运行时安装(默认containerd)
- Kubernetes核心组件部署
- 网络插件安装(默认calico)
- 本地存储配置
3.4 验证部署结果
检查节点状态:
bash复制kubectl get nodes
检查Pod状态:
bash复制kubectl get pods -A
预期输出应显示所有核心组件运行正常,类似:
code复制NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-5f6546844f-25qhk 1/1 Running 0 2m
kube-system calico-node-abcde 1/1 Running 0 2m
kube-system coredns-565d847f94-2jkw7 1/1 Running 0 3m
kube-system kube-apiserver-node1 1/1 Running 0 3m
kube-system kube-controller-manager-node1 1/1 Running 0 3m
kube-system kube-proxy-xyzab 1/1 Running 0 3m
kube-system kube-scheduler-node1 1/1 Running 0 3m
4. 测试环境常用组件部署
4.1 安装Dashboard可视化界面
部署最新版Dashboard:
bash复制sealos run labring/kubernetes-dashboard:v2.7.0
创建管理员账号:
bash复制cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
获取访问令牌:
bash复制kubectl -n kubernetes-dashboard create token admin-user
访问Dashboard:
bash复制kubectl port-forward svc/kubernetes-dashboard -n kubernetes-dashboard 8443:443
浏览器访问 https://localhost:8443 使用获取的token登录
4.2 部署Metrics Server监控组件
bash复制sealos run labring/metrics-server:v0.6.3
验证监控数据:
bash复制kubectl top nodes
kubectl top pods -A
4.3 安装Ingress控制器(以Nginx为例)
bash复制sealos run labring/ingress-nginx:v1.5.1
验证安装:
bash复制kubectl get pods -n ingress-nginx
5. 常见问题与解决方案
5.1 镜像拉取失败问题
现象:部署时出现ImagePullBackOff错误
解决方案:
- 检查网络连接:
bash复制ping registry.cn-shanghai.aliyuncs.com
- 手动拉取镜像:
bash复制sealos pull --override labring/kubernetes:v1.25.0
- 清理缓存后重试:
bash复制sealos reset
sealos run labring/kubernetes:v1.25.0 --single
5.2 端口冲突问题
现象:部署时提示端口被占用
解决方案:
- 检查端口占用情况:
bash复制ss -tulnp | grep -E '6443|10250|2379'
- 停止冲突服务或修改Sealos配置:
bash复制sealos run labring/kubernetes:v1.25.0 --single --port 6443:16443
5.3 资源不足问题
现象:Pod频繁重启或处于Pending状态
解决方案:
- 检查资源使用情况:
bash复制kubectl describe nodes | grep -A 10 Allocatable
- 调整组件资源请求:
bash复制kubectl edit deployment -n kube-system coredns
将requests.cpu从100m改为50m
5.4 存储配置问题
现象:PVC一直处于Pending状态
解决方案:
- 安装本地存储插件:
bash复制sealos run labring/openebs:v3.3.0
- 创建StorageClass:
bash复制kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml
6. 测试环境维护技巧
6.1 快速重置环境
当测试环境出现不可恢复的问题时,可以完全重置:
bash复制sealos reset --force
sealos run labring/kubernetes:v1.25.0 --single
6.2 资源清理策略
定期清理无用资源:
bash复制# 删除所有Evicted状态的Pod
kubectl get pods -A | grep Evicted | awk '{print $1,$2}' | xargs -L1 kubectl delete pod -n
# 清理超过1天的Completed状态Pod
kubectl get pods -A --field-selector=status.phase==Succeeded -o jsonpath='{.items[?(@.status.startTime<"'$(date -d'1 day ago' -Ins --utc | sed 's/+0000/Z/')'")].metadata.name}' | xargs -r kubectl delete pod -n
6.3 备份关键配置
备份Kubernetes资源:
bash复制kubectl get all -A -o yaml > all-resources.yaml
kubectl get secret -A -o yaml > all-secrets.yaml
备份ETCD数据:
bash复制docker exec -it etcd etcdctl snapshot save /var/lib/etcd/snapshot.db
