100台服务器怎么管理
·
采用自动化+标准化+监控告警的铁三角策略。具体是:使用Kubernetes进行容器编排实现自动化,通过IaC(基础设施即代码)保证标准化,搭建完善的监控告警体系确保可靠性。
1. 容器编排层
部署一个拓扑类似以下结果
├── Master节点 (3-5台)
│ ├── API Server
│ ├── Scheduler
│ ├── Controller Manager
│ └── etcd集群
├── Worker节点 (90-95台)
│ ├── Kubelet
│ └── 业务容器
└── 基础设施节点 (3-5台)
├── 监控系统
├── 日志收集
└── 镜像仓库
2.基础设施即代码
# Terraform配置示例(创建统一规格的服务器)
resource "aws_instance" "k8s_node" {
count = 100
ami = "ami-0c55b159cbfafe1f0"
instance_type = "c5.xlarge"
tags = {
Name = "k8s-node-${count.index}"
Role = count.index < 5 ? "master" : "worker"
Env = "production"
ManagedBy = "Terraform"
}
user_data = filebase64("install-k8s.sh") # 自动化安装脚本
}
-
操作系统:统一使用 Ubuntu 20.04 LTS 或 RHEL 8
-
配置管理:Ansible/Puppet 确保所有节点配置一致
-
镜像规范:所有应用必须容器化,使用公司私有镜像仓库
3. 监控告警体系
监控架构:
├── 资源监控
│ ├── Node Exporter (节点资源)
│ ├── cAdvisor (容器资源)
│ └── kube-state-metrics (K8s对象状态)
├── 应用监控
│ ├── 业务指标
│ ├── 链路追踪(Jaeger)
│ └── 日志聚合(ELK/Loki)
├── 可视化
│ └── Grafana (统一仪表板)
└── 告警
└── AlertManager (分级告警)
# Prometheus告警规则示例
groups:
- name: node_alerts
rules:
- alert: NodeDown
expr: up{job="node"} == 0
for: 5m
labels:
severity: critical
annotations:
summary: "节点 {{ $labels.instance }} 宕机"
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 10m
labels:
severity: warning
4. 持续部署流水线
开发提交代码 → CI测试 → 构建镜像 → 安全扫描 → 推送到镜像仓库 → CD部署到测试环境 → 自动化测试 → 人工验收 → 滚动更新到生产
gitops实现
# ArgoCD配置示例
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp-production
spec:
project: default
source:
repoURL: https://gitlab.com/mycompany/k8s-manifests
targetRevision: HEAD
path: production/myapp
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
总之,以下要点是核心:
-
自动化是核心:手工操作无法管理百台规模
-
标准化是基础:配置漂移是运维噩梦
-
可观测性是保障:看不到的问题无法解决
-
流程化是效率:好的流程比好的工具更重要
更多推荐


所有评论(0)