全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-21 6 分钟 ✍️ juanwangdev

容器密度与资源规划

单机容器密度影响资源利用率和故障隔离,下面介绍规划方法。

密度计算

资源评估

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 绑定、资源独立
  • 监控资源使用率,动态调整密度
  • 密度过高增加宿主机故障影响范围,需平衡利用率与安全
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 网络延迟优化
下一篇 → 容器逃逸攻击向量
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码