K8S学习之基础十四:k8s中Deployment控制器概述

Deployment控制器概述:

Deployment控制器是k8s中最常用的资源对象,为Replicaset和Pod创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态,通过定义一个Deployment控制器会创建一个新的ReplicaSet控制器,通过ReplicaSet创建Pod。删除Deployment控制器,也会删除Deployment控制器下对应的Replicaset控制器和Pod资源。

使用Deployment控制器而不是直接使用ReplicaSet,是因为Deployment对象拥有很多ReplicaSet没有的特性,比如滚动升级、金丝雀发布、蓝绿部署和回滚等。

声明式定义是指直接修改资源清单yaml文件,然后通过 kubectl apply -f *.yaml的方式,就可以更改资源

Deployment是建立在rs之上的一个控制器,可以管理多个rs,每次更新镜像版本,都会生成一个新的rs,把旧的rs替换掉,多个rs同时存在,但是只有一个rs运行

rs v1控制三个pod,删除一个pod,在rs v2上重新建立一个,依次类推,直到全部都是由rs v2控制,如果rs v2有问题,还可以回滚,Deployment是建构在rs之上的,多个rs组成一个Deployment,但是只有一个rs处于活跃状态.

Deployment工作原理:如何管理rs和pod

通过Deployment对象,可以轻松做到以下事情:

  1. 创建ReplicaSet和Pod
  2. 滚动升级和回滚应用
  3. 平滑扩容和缩容
  4. 暂停和继续Deployment

更新策略中的rollingupdate计算:

maxSurge(默认25%):最大允许个数(直接用)或百分比(往上加), 如 5+5*25%计算为 7

maxUnavailable(默认25%):最小允许个数(直接用)或百分比(往下减), 如 5-5*25% 计算为 4

Deployment的yaml文件:

复制代码
vi deploy-demo.yaml
kind: Deployment
metadata:
  name: myapp-v1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
      version: v1
  template:
    metadata:
      labels:
        app: myapp
        version: v1
    spec:
      containers:
      - name: myapp
        image: 172.16.80.140/myapp/myapp:v1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

三者的名字也有关系:deploy-->replicas-->pod

访问pod返回v1版本

相关推荐
橙橙笔记7 小时前
QT的学习第四部分
linux·qt·学习·音视频
叼烟扛炮7 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
在猴站学算法8 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
旖旎夜光8 小时前
【C++ 基础入门】C++ 继承(上):概念、切片、隐藏、默认成员函数与友元
c++·笔记·学习
Godspeed Zhao8 小时前
从零开始学AI24——无监督学习之K均值
学习·机器学习
叼烟扛炮8 小时前
[LangChain] 学习笔记(05):提示词模板(Prompt)与少样本注入(Few-Shot)实战
linux·人工智能·笔记·学习·langchain·prompt
La Pulga21 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石1 天前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK1 天前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道1 天前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor