K8s Deployment核心功能与实战技巧,901-012_高级系统架构设计师-考试范围-标准化&知识产权&数学模型汇总。
K8s Deployment 副本控制器详解
Deployment 是 Kubernetes 中用于管理无状态应用的核心控制器,负责声明式地定义 Pod 模板并确保指定数量的副本(Replicas)持续运行。以下是关键特性和使用方法:
Deployment 核心功能
滚动更新与回滚
通过 spec.strategy 字段定义更新策略(RollingUpdate/Recreate),默认采用滚动更新逐步替换旧 Pod,确保服务不中断。使用 kubectl rollout history 可查看版本历史并回滚到指定版本。
副本数维护
通过 spec.replicas 指定期望的 Pod 数量,Deployment 的控制器(Controller)会通过 ReplicaSet 自动创建或删除 Pod 以满足预期状态。
健康检查与自愈
结合 Readiness Probe 和 Liveness Probe 实现 Pod 健康状态监控,故障时自动重启或替换 Pod。
典型 YAML 配置示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19.1
ports:
- containerPort: 80
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
常用操作命令
部署管理
kubectl apply -f deployment.yaml # 创建/更新 Deployment
kubectl get deployments # 查看 Deployment 状态
kubectl describe deployment <name> # 查看详情
版本控制
kubectl rollout status deployment/nginx-deployment # 查看更新状态
kubectl rollout undo deployment/nginx-deployment --to-revision=2 # 回滚到版本2
扩缩容
kubectl scale deployment nginx-deployment --replicas=5 # 手动扩缩容
高级特性
暂停与恢复更新
使用 kubectl rollout pause/resume 可暂停更新过程,适用于多次修改后统一发布。
资源配额与节点调度
通过 resources 字段限制 CPU/内存,配合 affinity 或 nodeSelector 控制 Pod 调度位置。
HPA 自动扩缩容
结合 HorizontalPodAutoscaler 根据 CPU/内存等指标动态调整副本数。
与原生的 ReplicaSet 对比
Deployment 在 ReplicaSet 基础上增加了更新策略、版本历史记录等高级功能,实际生产中推荐使用 Deployment 而非直接操作 ReplicaSet。
通过以上功能,Deployment 成为 Kubernetes 中管理无状态服务的标准方案,兼顾了灵活性与可靠性。
更多推荐
所有评论(0)