8-1、Deployment运行应用的机制

本文详细介绍了在Kubernetes中,如何通过Deployment来管理应用的生命周期,包括Deployment如何创建ReplicaSet,以及ReplicaSet如何确保Pod的数量和状态。
Kubernetes 通过各种 Controller 来管理 Pod 的生命周期。为了满足不同业务场景,Kubernetes 开发了 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 、 CronJob 等多种 Controller。
                                                 

  1. 用户通过  kubectl  创建 Deployment。
  2. Deployment 创建 ReplicaSet。
  3. ReplicaSet 创建 Pod
root@master:~# kubectl get deployments
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
podding-deployment   2/2     2            2           23h
root@master:~# kubectl get deployment podding-deployment # 等价于kubectl get deployments/podding-deployment
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
podding-deployment   2/2     2            2           23h

root@master:~# kubectl describe deployment podding-deployment # 查看deployments的详细信息
Name:                   podding-deployment
Namespace:              default
CreationTim
`kubectl edit deployment` 是 Kubernetes 命令行工具 `kubectl` 提供的一个功能,用于直接编辑现有的 Deployment 资源对象的配置。DeploymentKubernetes 中一种常用的控制器,用于管理无状态应用的 Pod 和 ReplicaSet,确保指定数量的 Pod 副本始终运行[^1]。 ### 用途 该命令的主要用途是**修改 Deployment 的配置**,例如: - 更新容器镜像版本 - 调整副本数量 - 修改环境变量、资源限制或调度策略 - 添加或删除容器、卷等配置项 当执行 `kubectl edit deployment <deployment-name>` 时,Kubernetes 会将当 Deployment 的资源配置以 YAML 格式加载到默认文本编辑器中(如 Vim、Nano 或系统设置的 EDITOR),用户可以对其进行修改并保存,系统会自动将其更新到集群中。 ### 使用方式 #### 基本语法: ```bash kubectl edit deployment <deployment-name> ``` 例如,编辑名为 `v1-1` 的 Deployment: ```bash kubectl edit deployment v1-1 ``` 也可以指定命名空间: ```bash kubectl edit deployment v1-1 -n <namespace> ``` #### 输出示例(YAML 编辑界面片段): ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: v1-1 spec: replicas: 2 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp-container image: myapp:v1 ports: - containerPort: 80 ``` 在编辑器中更改 `image` 字段为 `myapp:v2` 后保存退出,Kubernetes 将触发滚动更新(Rolling Update),逐步替换旧版本的 Pod。 ### 操作机制分析 1. **获取当配置**:`kubectl` 从 API Server 获取 Deployment 的最新配置。 2. **打开编辑器**:使用默认编辑器加载其 YAML 表示形式。 3. **提交变更**:保存后,`kubectl` 将新配置提交回 API Server。 4. **触发更新**:如果变更影响 Pod 模板(`.spec.template`),Deployment 控制器将启动滚动更新流程。 ### 注意事项 - 如果在编辑过程中发生错误,保存失败或格式错误,Kubernetes 会提示配置无效,不会覆盖原有配置。 - 可通过设置环境变量 `KUBE_EDITOR` 指定自定义编辑器,例如: ```bash export KUBE_EDITOR="nano" ``` - 若需查看变更而不实际提交,可使用 `kubectl diff` 命令进行模拟: ```bash kubectl diff deployment v1-1 ``` ### 相关命令 | 命令 | 描述 | |------|------| | `kubectl get deployments` | 查看所有 Deployment | | `kubectl describe deployment v1-1` | 查看特定 Deployment 的详细信息 | | `kubectl rollout status deployment/v1-1` | 查看滚动更新状态 | | `kubectl set image deployment/v1-1 myapp-container=myapp:v2` | 不进入编辑器,直接更新镜像 | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值