Kubernetes Deployment 源码分析(一)

本文深入探讨了Kubernetes Deployment的滚动更新和回滚功能,通过实例展示了如何创建和更新Deployment,以及如何管理ReplicaSet。在滚动更新过程中,Deployment控制器通过调整ReplicaSet的副本数实现平滑过渡。当更新失败时,可以利用回滚功能返回到历史版本。此外,还介绍了Deployment的其他配置选项,如minReadySeconds、paused和strategy参数。
摘要由CSDN通过智能技术生成

概述

Deployment 是最常用的 Kubernetes 原生 Workload 资源之一,我们一开始尝试使用 Kubernetes 的时候大概率就是从运行一个 Deployment 类型的工作负载开始的。今天开始我们计划分成几讲来从 Deployment 的特性介绍、源码分析等方面深度剖析 Deployment 资源和其背后的 Deployment 控制器。

Deployment 的基础特性大家基本都熟悉,所以本文我们不计划赘述 Deployment 的所有功能细节,而是从滚动更新等不算太基础的特性入手,看下 Deployment 支持哪些玩法,为后面分析源码做准备。

Deployment 基础

我们创建一个简单的 Deployment,然后看下一些小细节。

创建 Deployment

以运行 nginx 为例,我们可以通过 Deployment 来拉起一个 3 副本的 nginx 负载:nginx-dp

  • nginx-dp.yaml
 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: nginx-dp
 5  labels:
 6    app: nginx
 7spec:
 8  replicas: 3
 9  selector:
10    matchLabels:
11      app: nginx
12  template:
13    metadata:
14      labels:
15        app: nginx
16    spec:
17      containers:
18      - name: nginx
19        image: nginx:1.14.2
20        ports:
21        - containerPort: 80

通过 kubectl create -f nginx-dp.yaml 我们可以创建这个 Deployment 资源。

1# kubectl create -f nginx-dp.yaml
2deployment.apps/nginx-dp created
3# kubectl get deploy
4NAME       READY   UP-TO-DATE   AVAILABLE   AGE
5nginx-dp   1/3     3            1           3s
6# kubectl get deploy
7NAME       READY   UP-TO-DATE   AVAILABLE   AGE
8nginx-dp   3/3     3            3           10s

等一会,就可以通过 kubectl get deploy 命令看到所有 Pod 都起来了,这里关注下输出字段含义(NAME 和 AGE 就不用说了):

  • UP-TO-DATE:多少副本已经更新到期望状态了
  • AVAILABLE:多少副本已经可以提供服务了
  • READY:可以提供服务的副本数/期望副本数

ReplicaSet

  • 查询 ReplicaSet
1# kubectl get rs --selector=app=nginx
2NAME                  DESIRED   CURRENT   READY   AGE
3nginx-dp-66b6c48dd5   3         3         3       9m54s

前面创建了 Deployment 之后可以看到集群里多了一个 ReplicaSet 资源,也就是说 Deployment 管理的其实是 ReplicaSet 而不是直接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值