容器编排概念

容器编排概念

什么是容器编排

容器编排(Container Orchestration)是自动化管理容器生命周期、部署、扩缩容和网络通信的过程。当容器数量达到几十上百个时,手工管理变得不可行,编排工具应运而生。

核心概念

1. 服务(Service)

Service 是编排中的基本抽象,描述了一组相同配置的容器:

# Swarm
docker service create --name web --replicas 5 nginx

# K8s
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
  - port: 80

2. 调度(Scheduling)

调度器决定容器应该运行在哪台机器上:

调度策略:
- 资源感知(CPU/内存)
- 亲和性(一起运行或分开运行)
- 约束(只能在特定标签的节点上运行)
- 打散(均匀分布在各个节点)

3. 声明式状态(Declarative State)

声明你想要的状态,编排工具负责达到和维护:

# 声明:我要运行 3 个 nginx 实例
replicas: 3

# 编排器自动:
# 1. 如果少于 3 个:启动新的
# 2. 如果多于 3 个:停止多余的
# 3. 如果节点挂了:在另一个节点重新启动

4. 服务发现(Service Discovery)

容器自动注册到服务发现系统,其他服务可以通过服务名访问:

App 请求 http://user-service  →  DNS 解析 →  10.0.1.5:8080
                               →  Round Robin →  10.0.1.6:8080

5. 负载均衡(Load Balancing)

将流量均匀分布到多个容器实例:

用户请求
    
    
  [Load Balancer]
    ├──→ web:1 (10.0.1.5)
    ├──→ web:2 (10.0.1.6)
    └──→ web:3 (10.0.1.7)

6. 自动扩缩容(Auto Scaling)

根据指标自动调整容器数量:

# K8s HPA 示例
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

7. 健康检查(Health Check)

编排器定期检查容器是否健康:

# Docker 健康检查
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD curl -f http://localhost/health || exit 1

# K8s 探针
livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 3
  periodSeconds: 3

编排的核心流程

1. 用户定义期望状态YAML/JSON
2. 编排器读取配置
3. 调度器选择合适的节点
4. 在节点上启动容器
5. 注册到服务发现
6. 配置负载均衡
7. 持续监控健康状态
8. 自动恢复故障实例

常用的编排工具

工具 特点 适用场景
Docker Swarm 内置、简单 中小规模、Docker 体系
Kubernetes 功能丰富、生态大 大规模、复杂需求
Nomad 轻量、支持非容器 混合工作负载
Apache Mesos 大规模资源管理 大数据+容器混部

面试要点

  1. 容器编排的核心是声明式管理——你定义”想要什么”,编排器负责”达到并维持”
  2. 服务发现 + 负载均衡是微服务通信的基础
  3. 健康检查和自动恢复保证了高可用
  4. 自动扩缩容根据实际负载调整资源
  5. 从单机 Docker → Compose → Swarm/K8s 是容器化的发展路径

面试官常问:你如何理解声明式编排?和命令式编排有什么区别?

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容