简介:本文详细阐述Sealos私有化部署的全流程,涵盖环境准备、集群搭建、核心组件配置、安全加固及运维优化,提供可落地的技术方案与故障排查指南。
在云计算与容器化技术深度融合的今天,企业对于Kubernetes(K8s)集群的需求已从“能用”转向“可控”。Sealos作为一款轻量级、高可用的K8s发行版,其私有化部署方案解决了三大核心痛点:
典型案例显示,某金融企业通过Sealos私有化部署,将核心交易系统响应时间从120ms压缩至45ms,同时年运维成本节省超200万元。
| 节点类型 | 最低配置 | 推荐配置 |
|---|---|---|
| Master节点 | 4核8G 100GB | 8核16G 200GB SSD |
| Worker节点 | 2核4G 50GB | 4核8G 100GB NVMe SSD |
| 存储节点 | - | 独立存储服务器(8核32G+) |
关键建议:
# CentOS/RHEL系统预处理脚本sudo yum install -y conntrack ipset ebtables socatsudo modprobe br_netfilterecho 'net.bridge.bridge-nf-call-iptables=1' | sudo tee -a /etc/sysctl.confsudo sysctl -p
注意事项:
setenforce 0)timedatectl set-timezone Asia/Shanghai)
# 下载最新版Sealos(以4.0为例)curl -fsSL https://get.sealos.io | sh# 启动单机集群(包含K8s核心组件)sealos run labring/kubernetes:v1.25.0 \--masters 192.168.1.100 \--nodes 192.168.1.[101:103] \--passwd yourpassword \--version v1.25.0
参数说明:
--masters:指定Master节点IP(支持多Master高可用)--nodes:Worker节点IP范围(支持CIDR表示法)--passwd:SSH登录密码(建议后续改用密钥认证)采用3Master+NWorker架构,配合本地存储(LVM/iSCSI)与外部负载均衡器(HAProxy/Nginx)。关键配置示例:
# keepalived配置片段vrrp_script chk_apiserver {script "curl -s --connect-timeout 3 --max-time 5 http://127.0.0.1:6443/"interval 2weight -5fall 2rise 1}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.1.200/24}track_script {chk_apiserver}}
对于有状态应用,建议采用以下方案之一:
本地存储方案:
# 配置LVM存储类apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:name: local-pathprovisioner: kubernetes.io/no-provisionervolumeBindingMode: WaitForFirstConsumer
分布式存储集成:
# 使用Ceph作为后端存储sealos apply -f https://raw.githubusercontent.com/labring/sealos/main/contrib/ceph/ceph-cluster.yaml
| 插件类型 | 适用场景 | 性能指标 |
|---|---|---|
| Calico | 跨主机网络,安全策略严格 | 延迟<2ms,吞吐量10Gbps |
| Cilium | 云原生环境,eBPF加速 | 延迟<1ms,吞吐量15Gbps |
| Flannel | 简单环境,快速部署 | 延迟3-5ms,吞吐量5Gbps |
配置示例(Calico):
# calico-config.yamlapiVersion: operator.tigera.io/v1kind: Installationmetadata:name: defaultspec:calicoNetwork:ipPools:- cidr: 10.244.0.0/16encapsulation: VXLANnatOutgoing: Enabled
推荐Prometheus+Grafana监控栈,关键配置步骤:
部署Prometheus Operator:
sealos apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml
自定义监控规则:
# custom-rules.yamlapiVersion: monitoring.coreos.com/v1kind: PrometheusRulemetadata:name: sealos-rulesspec:groups:- name: sealos.rulesrules:- alert: HighCPUUsageexpr: sum(rate(container_cpu_usage_seconds_total{namespace!=""}[5m])) by (namespace) > 0.8for: 10mlabels:severity: warningannotations:summary: "High CPU usage in {{ $labels.namespace }}"
# 创建自定义RoleapiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata:namespace: devname: pod-readerrules:- apiGroups: [""]resources: ["pods"]verbs: ["get", "list"]# 绑定Role到ServiceAccountapiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata:name: read-podsnamespace: devsubjects:- kind: ServiceAccountname: defaultnamespace: devroleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io
# audit-policy.yamlapiVersion: audit.k8s.io/v1kind: Policyrules:- level: RequestResponseresources:- group: ""resources: ["secrets"]verbs: ["create", "update", "delete"]
| 组件 | 关键参数 | 推荐值 |
|---|---|---|
| kubelet | —kube-reserved | cpu=1,memory=2Gi |
| apiserver | —default-not-ready-toleration-seconds | 300 |
| etcd | —quota-backend-bytes | 8589934592 (8GB) |
场景1:Node状态NotReady
# 检查kubelet日志journalctl -u kubelet -n 100 --no-pager# 常见原因:# 1. 证书过期:sealos cert renew --nodes <node-ip># 2. 磁盘空间不足:df -h /var/lib/kubelet# 3. 网络连通性问题:ping <api-server-ip>
场景2:Pod调度失败
# 查看事件详情kubectl describe pod <pod-name> -n <namespace># 解决方案:# 1. 检查节点资源:kubectl describe nodes# 2. 验证StorageClass:kubectl get sc# 3. 检查Taint/Toleration配置
# 1. 备份etcd数据sealos etcd snapshot save /data/backup/etcd-snapshot-$(date +%F).db# 2. 升级控制平面sealos upgrade --image labring/kubernetes:v1.26.0 --masters <master-ips># 3. 升级Worker节点kubectl drain <node-name> --ignore-daemonsetssealos upgrade --image labring/kubernetes:v1.26.0 --nodes <node-ips>kubectl uncordon <node-name>
# 添加新Worker节点sealos join --masters <master-ips> --nodes <new-node-ip> --passwd <password># 验证节点状态kubectl get nodes -o wide
Sealos私有化部署通过高度可定制的架构设计,为企业提供了兼顾性能、安全与成本的K8s解决方案。实际部署中需重点关注:
未来发展方向包括:
通过本文提供的完整指南,企业可快速构建满足自身需求的Sealos私有化集群,在数字化转型中占据先机。