1. 为什么选择sealos部署Kubernetes集群第一次接触Kubernetes部署时我被各种复杂的组件和配置搞得晕头转向。直到发现了sealos这个神器才发现原来部署生产级Kubernetes集群可以如此简单。sealos最大的优势在于它把Kubernetes部署过程中所有繁琐的步骤都封装成了简单的命令行操作让新手也能快速搭建起高可用的集群环境。与传统部署方式相比sealos有几个明显的优势首先是全离线部署能力这在企业内网环境中特别实用其次是高可用架构开箱即用不需要额外配置负载均衡最重要的是极简操作一条命令就能完成从系统初始化到集群部署的全过程。我在多个生产环境中实测下来从零开始到集群就绪最快只需要5分钟。2. 部署前的准备工作2.1 服务器环境要求在开始部署前我们需要准备至少三台服务器作为Master节点。根据我的经验企业级环境建议配置如下操作系统CentOS 7.6/Ubuntu 18.04实测CentOS 7.9最稳定硬件配置Master节点至少2核4GNode节点建议4核8G起网络环境所有节点需要在同一局域网内互相能通过SSH访问存储空间系统盘至少50GB/var分区建议单独挂载特别提醒所有节点需要保持时间同步否则会导致证书验证失败。我一般使用chrony进行时间同步yum install -y chrony systemctl enable chronyd systemctl start chronyd chronyc sources2.2 系统初始化配置部署前需要对所有节点进行统一的系统配置。这些配置关系到集群的稳定性和性能关闭防火墙和SELinuxsystemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config关闭swap分区swapoff -a sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab内核参数调优 创建/etc/sysctl.d/k8s.conf文件加入以下内容net.bridge.bridge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1 net.ipv4.ip_forward1 fs.file-max1000000 fs.inotify.max_user_instances8192 fs.inotify.max_user_watches1048576执行sysctl -p /etc/sysctl.d/k8s.conf使配置生效3. 使用sealos部署高可用集群3.1 安装sealos工具在所有Master节点上安装sealos命令行工具wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz tar -zxvf sealos_4.1.4_linux_amd64.tar.gz sealos chmod x sealos mv sealos /usr/bin/3.2 准备离线安装包sealos支持从本地或远程URL加载Kubernetes离线安装包。对于企业环境建议提前下载好离线包wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/kube1.25.0.tar.gz注意不同版本的Kubernetes需要对应的离线包下载前请确认版本兼容性3.3 执行集群部署准备好所有节点后在任意Master节点执行部署命令sealos run labring/kubernetes:v1.25.0 labring/calico:v3.24.1 \ --masters 192.168.1.101,192.168.1.102,192.168.1.103 \ --nodes 192.168.1.104,192.168.1.105 \ -p yourpassword这条命令会完成以下操作自动在所有节点安装Docker和Kubernetes组件初始化高可用控制平面部署Calico网络插件将Worker节点加入集群4. 企业级配置与优化4.1 高可用架构验证部署完成后我们需要验证集群的高可用性kubectl get nodes kubectl -n kube-system get pods测试Master节点故障转移随机停止一个Master节点的kube-apiserver服务观察其他节点是否自动接管服务检查集群操作是否正常4.2 网络性能调优企业级环境通常对网络性能有更高要求。如果使用Calico网络插件可以通过以下配置优化性能启用IPIP跨子网通信apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: default-ipv4-ippool spec: ipipMode: CrossSubnet natOutgoing: true cidr: 192.168.0.0/16调整BGP配置提升网络吞吐量calicoctl patch node k8s-node1 -p {spec:{bgp:{asNumber: 64512}}}4.3 存储方案集成生产环境通常需要对接企业存储系统。以NFS为例配置方法如下在所有节点安装NFS客户端yum install -y nfs-utils创建StorageClassapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage provisioner: example.com/nfs parameters: server: nfs-server.example.com path: /data/nfs5. 常见问题排查在实际部署过程中可能会遇到各种问题。以下是我总结的几个常见问题及解决方法5.1 节点无法加入集群现象执行sealos join命令后节点状态显示NotReady排查步骤检查节点间网络连通性确认时间同步服务正常工作查看kubelet日志journalctl -u kubelet -f解决方案systemctl restart kubelet kubeadm reset -f sealos join --node x.x.x.x5.2 Pod网络不通现象跨节点Pod无法互相访问排查步骤检查Calico Pod是否正常运行验证IPIP隧道是否建立ip tunnel show检查路由表是否正确解决方案calicoctl node status systemctl restart calico-node5.3 证书过期问题现象集群运行一段时间后出现证书错误预防措施部署前确保系统时间准确定期检查证书有效期kubeadm certs check-expiration解决方案kubeadm certs renew all systemctl restart kubelet6. 集群运维管理6.1 节点扩容与缩容随着业务发展可能需要动态调整集群规模。使用sealos可以轻松实现添加新节点sealos join --nodes 192.168.1.106,192.168.1.107移除节点sealos clean --nodes 192.168.1.106 kubectl drain 192.168.1.106 --delete-emptydir-data --force --ignore-daemonsets kubectl delete node 192.168.1.1066.2 集群升级sealos支持无缝升级Kubernetes版本下载新版本离线包执行升级命令sealos upgrade --pkg-url kube1.26.0.tar.gz --version v1.26.06.3 监控与日志企业级环境需要完善的监控体系。推荐部署Prometheus-Operatorsealos run labring/prometheus-operator:v0.55.1配置告警规则apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: node-alert spec: groups: - name: node rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 5m labels: severity: warning annotations: summary: High CPU usage on {{ $labels.instance }}7. 安全加固建议生产环境必须重视集群安全。以下是我在实际项目中总结的安全实践RBAC权限控制apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [] resources: [pods] verbs: [get, watch, list]网络策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny spec: podSelector: {} policyTypes: - Ingress - Egress审计日志apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata resources: - group: resources: [secrets]镜像安全扫描sealos run labring/trivy:v0.35.08. 性能优化技巧经过多个项目的实践我总结出以下性能优化经验kubelet参数调优--max-pods100 --kube-api-qps50 --kube-api-burst100etcd性能优化--quota-backend-bytes8589934592 --auto-compaction-retention24h调度器配置apiVersion: kubescheduler.config.k8s.io/v1beta2 kind: KubeSchedulerConfiguration profiles: - schedulerName: default-scheduler pluginConfig: - name: NodeResourcesFit args: scoringStrategy: type: LeastAllocated容器运行时优化{ storage-driver: overlay2, log-opts: { max-size: 100m, max-file: 3 } }9. 备份与恢复生产环境必须建立完善的备份机制。推荐使用velero进行集群备份安装velerosealos run labring/velero:v1.9.2创建备份velero backup create cluster-backup --include-namespacesdefault设置定时备份velero schedule create daily-backup --scheduleevery 24h恢复集群velero restore create --from-backup cluster-backup10. 最佳实践总结经过多个生产环境的验证我总结了以下最佳实践使用独立的etcd集群提升稳定性为不同业务划分独立的namespace设置合理的Resource Quota防止资源耗尽定期进行故障演练确保高可用建立完善的监控告警系统最后提醒一点虽然sealos极大简化了部署流程但生产环境上线前一定要进行充分的测试和验证。建议先在测试环境完整演练所有运维操作确保团队熟悉整个集群的生命周期管理。
sealos五分钟实战:从零构建企业级k8s高可用集群
发布时间:2026/6/28 21:47:00
1. 为什么选择sealos部署Kubernetes集群第一次接触Kubernetes部署时我被各种复杂的组件和配置搞得晕头转向。直到发现了sealos这个神器才发现原来部署生产级Kubernetes集群可以如此简单。sealos最大的优势在于它把Kubernetes部署过程中所有繁琐的步骤都封装成了简单的命令行操作让新手也能快速搭建起高可用的集群环境。与传统部署方式相比sealos有几个明显的优势首先是全离线部署能力这在企业内网环境中特别实用其次是高可用架构开箱即用不需要额外配置负载均衡最重要的是极简操作一条命令就能完成从系统初始化到集群部署的全过程。我在多个生产环境中实测下来从零开始到集群就绪最快只需要5分钟。2. 部署前的准备工作2.1 服务器环境要求在开始部署前我们需要准备至少三台服务器作为Master节点。根据我的经验企业级环境建议配置如下操作系统CentOS 7.6/Ubuntu 18.04实测CentOS 7.9最稳定硬件配置Master节点至少2核4GNode节点建议4核8G起网络环境所有节点需要在同一局域网内互相能通过SSH访问存储空间系统盘至少50GB/var分区建议单独挂载特别提醒所有节点需要保持时间同步否则会导致证书验证失败。我一般使用chrony进行时间同步yum install -y chrony systemctl enable chronyd systemctl start chronyd chronyc sources2.2 系统初始化配置部署前需要对所有节点进行统一的系统配置。这些配置关系到集群的稳定性和性能关闭防火墙和SELinuxsystemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config关闭swap分区swapoff -a sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab内核参数调优 创建/etc/sysctl.d/k8s.conf文件加入以下内容net.bridge.bridge-nf-call-iptables1 net.bridge.bridge-nf-call-ip6tables1 net.ipv4.ip_forward1 fs.file-max1000000 fs.inotify.max_user_instances8192 fs.inotify.max_user_watches1048576执行sysctl -p /etc/sysctl.d/k8s.conf使配置生效3. 使用sealos部署高可用集群3.1 安装sealos工具在所有Master节点上安装sealos命令行工具wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz tar -zxvf sealos_4.1.4_linux_amd64.tar.gz sealos chmod x sealos mv sealos /usr/bin/3.2 准备离线安装包sealos支持从本地或远程URL加载Kubernetes离线安装包。对于企业环境建议提前下载好离线包wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/kube1.25.0.tar.gz注意不同版本的Kubernetes需要对应的离线包下载前请确认版本兼容性3.3 执行集群部署准备好所有节点后在任意Master节点执行部署命令sealos run labring/kubernetes:v1.25.0 labring/calico:v3.24.1 \ --masters 192.168.1.101,192.168.1.102,192.168.1.103 \ --nodes 192.168.1.104,192.168.1.105 \ -p yourpassword这条命令会完成以下操作自动在所有节点安装Docker和Kubernetes组件初始化高可用控制平面部署Calico网络插件将Worker节点加入集群4. 企业级配置与优化4.1 高可用架构验证部署完成后我们需要验证集群的高可用性kubectl get nodes kubectl -n kube-system get pods测试Master节点故障转移随机停止一个Master节点的kube-apiserver服务观察其他节点是否自动接管服务检查集群操作是否正常4.2 网络性能调优企业级环境通常对网络性能有更高要求。如果使用Calico网络插件可以通过以下配置优化性能启用IPIP跨子网通信apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: default-ipv4-ippool spec: ipipMode: CrossSubnet natOutgoing: true cidr: 192.168.0.0/16调整BGP配置提升网络吞吐量calicoctl patch node k8s-node1 -p {spec:{bgp:{asNumber: 64512}}}4.3 存储方案集成生产环境通常需要对接企业存储系统。以NFS为例配置方法如下在所有节点安装NFS客户端yum install -y nfs-utils创建StorageClassapiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nfs-storage provisioner: example.com/nfs parameters: server: nfs-server.example.com path: /data/nfs5. 常见问题排查在实际部署过程中可能会遇到各种问题。以下是我总结的几个常见问题及解决方法5.1 节点无法加入集群现象执行sealos join命令后节点状态显示NotReady排查步骤检查节点间网络连通性确认时间同步服务正常工作查看kubelet日志journalctl -u kubelet -f解决方案systemctl restart kubelet kubeadm reset -f sealos join --node x.x.x.x5.2 Pod网络不通现象跨节点Pod无法互相访问排查步骤检查Calico Pod是否正常运行验证IPIP隧道是否建立ip tunnel show检查路由表是否正确解决方案calicoctl node status systemctl restart calico-node5.3 证书过期问题现象集群运行一段时间后出现证书错误预防措施部署前确保系统时间准确定期检查证书有效期kubeadm certs check-expiration解决方案kubeadm certs renew all systemctl restart kubelet6. 集群运维管理6.1 节点扩容与缩容随着业务发展可能需要动态调整集群规模。使用sealos可以轻松实现添加新节点sealos join --nodes 192.168.1.106,192.168.1.107移除节点sealos clean --nodes 192.168.1.106 kubectl drain 192.168.1.106 --delete-emptydir-data --force --ignore-daemonsets kubectl delete node 192.168.1.1066.2 集群升级sealos支持无缝升级Kubernetes版本下载新版本离线包执行升级命令sealos upgrade --pkg-url kube1.26.0.tar.gz --version v1.26.06.3 监控与日志企业级环境需要完善的监控体系。推荐部署Prometheus-Operatorsealos run labring/prometheus-operator:v0.55.1配置告警规则apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: node-alert spec: groups: - name: node rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 5m labels: severity: warning annotations: summary: High CPU usage on {{ $labels.instance }}7. 安全加固建议生产环境必须重视集群安全。以下是我在实际项目中总结的安全实践RBAC权限控制apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [] resources: [pods] verbs: [get, watch, list]网络策略apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny spec: podSelector: {} policyTypes: - Ingress - Egress审计日志apiVersion: audit.k8s.io/v1 kind: Policy rules: - level: Metadata resources: - group: resources: [secrets]镜像安全扫描sealos run labring/trivy:v0.35.08. 性能优化技巧经过多个项目的实践我总结出以下性能优化经验kubelet参数调优--max-pods100 --kube-api-qps50 --kube-api-burst100etcd性能优化--quota-backend-bytes8589934592 --auto-compaction-retention24h调度器配置apiVersion: kubescheduler.config.k8s.io/v1beta2 kind: KubeSchedulerConfiguration profiles: - schedulerName: default-scheduler pluginConfig: - name: NodeResourcesFit args: scoringStrategy: type: LeastAllocated容器运行时优化{ storage-driver: overlay2, log-opts: { max-size: 100m, max-file: 3 } }9. 备份与恢复生产环境必须建立完善的备份机制。推荐使用velero进行集群备份安装velerosealos run labring/velero:v1.9.2创建备份velero backup create cluster-backup --include-namespacesdefault设置定时备份velero schedule create daily-backup --scheduleevery 24h恢复集群velero restore create --from-backup cluster-backup10. 最佳实践总结经过多个生产环境的验证我总结了以下最佳实践使用独立的etcd集群提升稳定性为不同业务划分独立的namespace设置合理的Resource Quota防止资源耗尽定期进行故障演练确保高可用建立完善的监控告警系统最后提醒一点虽然sealos极大简化了部署流程但生产环境上线前一定要进行充分的测试和验证。建议先在测试环境完整演练所有运维操作确保团队熟悉整个集群的生命周期管理。