当前位置: 首页 > news >正文

【kubernetes】--controller(deployment)

文章目录

    • 场景
    • 基本概念
    • 核心组件关系
    • 主要特性
      • 1. 滚动更新(Rolling Update)
      • 2. 回滚(Rollback)
      • 3. 版本历史
      • 4. 扩缩容
    • 典型 YAML 示例
    • 常用命令

场景

Deployment 非常适合管理无状态应用,如:

  • Web 服务器
  • API 服务
  • 前端应用
  • 其他可以水平扩展的服务

对于有状态应用,建议使用 StatefulSet 控制器

基本概念

Deployment 控制器主要实现了以下功能:

  • 声明式更新:只需描述期望状态,Deployment 会自动将实际状态调整为期望状态
  • 滚动更新:支持零停机部署,逐步用新版本替换旧版本
  • 回滚:可以轻松回退到之前的版本
  • 扩缩容:可以方便地增加或减少 Pod 副本数量

简化了应用的部署和更新过程

核心组件关系

Deployment → ReplicaSet → Pod

一个 Deployment 管理一个或多个 ReplicaSet,每个 ReplicaSet 又管理一组相同配置的 Pod。

主要特性

1. 滚动更新(Rolling Update)

默认更新策略,特点:

  • 逐步创建新 Pod 并删除旧 Pod
  • 保证应用在更新期间始终可用
  • 可以配置更新速度(maxUnavailable, maxSurge)

先创建新pod,然后删除旧pod

kubectl set image deployment web nginx=nginx:xxx

2. 回滚(Rollback)

如果更新后出现问题:

# 还原到上一个版本
kubectl rollout undo deployment <deployment-name>

3. 版本历史

查看更新历史:

kubectl rollout history deployment <deployment-name>

4. 扩缩容

手动调整副本数:

kubectl scale deployment <deployment-name> --replicas=5

或通过修改 YAML 文件中的 replicas 字段。

典型 YAML 示例

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80

常用命令

  • 创建 Deployment:

    kubectl apply -f deployment.yaml
    
  • 查看 Deployment 状态:

    kubectl get deployments
    
  • 查看滚动更新状态:

    kubectl rollout status deployment <deployment-name>
    
  • 暂停/恢复更新:

    kubectl rollout pause deployment <deployment-name>
    kubectl rollout resume deployment <deployment-name>
    

相关文章:

  • 做网站备完备案需要干什么/青岛网站优化
  • 做简单网站的框架/百度推广app怎么收费
  • 洛谷 P10379 [GESP202403 七级] 俄罗斯方块-普及/提高-
  • 使用Vue重新构建应用程序
  • UP COIN:从 Meme 共识走向公链与 RWA 的多元生态引擎
  • 浅析std::atomic<T>::compare_exchange_weak和std::atomic<T>::compare_exchange_strong
  • Docker 与 Containerd 交互机制简单剖析
  • Apache SeaTunnel Spark引擎执行流程源码分析
  • 刀客doc:阿里巴巴集团品牌部划归集团公关管理
  • 数组题解——​轮转数组【LeetCode】
  • [HTML]iframe显示pdf,隐藏左侧分页
  • 线程池 JMM 内存模型
  • 【题解-Acwing】1022. 宠物小精灵之收服
  • docker镜像中集成act工具
  • 非对称加密实战:Python实现数字签名
  • 【AI论文】扩展大型语言模型(LLM)智能体在测试时的计算量
  • Java+Vue开发的SRM招标采购管理系统,实现招标采购全流程数字化、规范化高效管理
  • MySQL与Excel比较
  • 协议转换赋能光伏制造:DeviceNET转PROFINET网关的通信质检实践
  • 2d-gaussian-splatting:论文分析、全流程环境配置与数据集测试【2025最新版!!!】
  • AntDesignPro动态路由配置全攻略
  • AES算法的Verilog流水线实现(带测试)