容器密度与资源规划
单机容器密度影响资源利用率和故障隔离,下面介绍规划方法。
密度计算
资源评估
YAML
宿主机资源:
- CPU: 16 核
- 内存: 64GB
- 磁盘: 500GB
容器需求:
- CPU: 0.5 核
- 内存: 2GB
- 磁盘: 10GB
理论密度:
- CPU: 16 / 0.5 = 32
- 内存: 64 / 2 = 32
- 磁盘: 500 / 10 = 50
- 实际密度: min(32, 32, 50) = 32
预留资源
YAML
实际部署建议预留 20%:
- 可用 CPU: 16 × 0.8 = 12.8 核
- 可用内存: 64 × 0.8 = 51.2GB
- 可用磁盘: 500 × 0.8 = 400GB
实际密度: min(12.8/0.5, 51.2/2, 400/10) = 25
容器分类
关键容器
YAML
# 数据库(低密度)
deploy:
resources:
limits:
cpus: '4'
memory: 8G
reservations:
cpus: '2'
memory: 4G
非关键容器
Bash
# Worker(高密度)
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
replicas: 10
爆炸半径控制
网络隔离
Bash
# 关键服务独立网络
networks:
critical:
driver: bridge
normal:
driver: bridge
资源隔离
text
# 关键容器独占 CPU
docker run -d --cpuset-cpus="0-3" critical-app
# 普通容器共享
docker run -d normal-app
监控与告警
text
# 监控资源使用
docker stats
# CPU 使用率
cpu_usage=$(docker stats --no-stream --format "{{.CPUPerc}}" | awk '{sum+=$1} END {print sum/NR}')
# 内存使用率
mem_usage=$(docker stats --no-stream --format "{{.MemPerc}}" | awk '{sum+=$1} END {print sum/NR}')
扩容策略
text
水平扩容:
- 密度过高 → 增加宿主机
- 密度过低 → 减少宿主机
垂直扩容:
- 单容器资源不足 → 增加限制
- 单容器资源过剩 → 减少限制
要点总结
- 密度计算取 CPU、内存、磁盘最小值,预留 20% 资源
- 关键容器(数据库)低密度部署,非关键容器(Worker)高密度
- 爆炸半径控制:网络隔离、CPU 绑定、资源独立
- 监控资源使用率,动态调整密度
- 密度过高增加宿主机故障影响范围,需平衡利用率与安全
📝 发现内容有误?点击此处直接编辑