【06】Kubernets:资源清单(控制器 - Deployment)
写在前面的话
上一节主要简单的提了一下控制器都有哪些常用的,并且简单的功能是啥,最后一并提了 ReplicaSet 控制器。
但是 ReplicaSet 一般不需要我们直接配置,多以从本节开始,开始学习 K8S 默认的控制器 Deployment。
Deployment 资源清单
和 rs 一样,deployment 我们也可以简写成 deploy,先简单的看下其资源清单的结构,如下表:
deployment | ||||
---|---|---|---|---|
apiVersion | apps/v1 | |||
kind | Deployment | |||
metadata | 和其他 metadata 一样,包括 name / labels 等 | |||
spec | ||||
minReadySeconds | 最小准备时间 | |||
paused | 暂停 | |||
replicas | 副本数量 | |||
revisionHistoryLimit | 历史版本保存数量,默认 10 | |||
rollbackTo | ||||
revision | 回滚到指定版本 | |||
selector | ||||
matchExpressions | 标签选择器 | |||
matchLabels | 标签选择器(一般用这个) | |||
strategy | ||||
rollingUpdate | ||||
maxSurge | 能被同一时间升级允许的最大 Pod 数,可以是数字或百分比 | |||
maxUnavailable | 同一时间不允许升级数,可以是数字或者百分比 | |||
type | 选择方式,可以是 RollingUpdate(默认)或者 Recreate | |||
template | ||||
metadata | Pod 的 metadata | |||
spec | Pod 的 spec |
Deployment 示例
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: deploy-demo
- namespace: default
- spec:
- replicas: 2
- selector:
- matchLabels:
- app: erp
- release: stable
- template:
- metadata:
- name: deploy-container
- namespace: default
- labels:
- app: erp
- release: stable
- spec:
- containers:
- - name: myapp
- image: ikubernetes/myapp:v1
- imagePullPolicy: IfNotPresent
- ports:
- - name: http
- containerPort: 80
- - name: https
- containerPort: 443
运行:我们这里将不再使用 create 根据配置文件创建,而是使用 apply 创建:
- # 创建
- kubectl apply -f deploy-demo.yaml
- # 查看
- kubectl get deploy
kubectl get rs- kubectl get pods
结果如图:
我们说过 Deployment 属于 ReplicaSet 的更上层,所以我们创建 Deploy 之后是可以查看到 ReplicaSet 的,而且根据命名的特点我们也可以发现:
Deploy --> ReplicaSet --> Pod 命令属于一级一级的增加。其中 rs 名字后面的随机数其实际是模板名称的 hash 值。
此时我们可以做个升级测试,修改 yaml 中的镜像版本由 v1 改为 v2:
- kubectl apply -f deploy-demo.yaml
再度应用配置查看:
- kubectl get pods -l app=erp -w
通过该方法我们可以看到整个过程,完成后查看 rs:
- kubectl get rs -o wide
结果如图:
可以看到原来 v1 版本的 rs 在运行变成了 0,而 v2 版本的变成了 2,但是 v1 版本的 rs 并未删除。
这是由于我们保存历史版本的原因,也就是:
- kubectl rollout history deployment deploy-demo
结果如图:
使用打补丁的方式直接修改 Pod 数量:
- kubectl patch deployment deploy-demo -p '{"spec":{"replicas":3}}'
结果如图:
同样,我们可以使用另外的方法更新,比如更新镜像版本:
- kubectl set image deployment deploy-demo myapp=ikubernetes/myapp:v3
结果如图:
在更新过程中,我们可以使用 pause 暂停实现金丝雀发布:
- kubectl rollout pause deployment deploy-demo
那么他会根据更新策略进行一次更新后暂停,等待下次 resume 后完全更新:
- kubectl rollout resume deployment deploy-demo
这里就不做过多演示了。
同样,回滚历史版本:
- kubectl rollout undo deployment deploy-demo --to-revision=2
结果如图:
小结
其实对于 Deployment,我们需要记忆的并不多,因为之前的 Pod 和 RS 中已经将底层的知识记了一遍,我们在这里只是相当于在他的外面继续套了一层套子。
【06】Kubernets:资源清单(控制器 - Deployment)的更多相关文章
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- kubernetes资源清单之Deployment
Deployment为Pod和ReplicaSets提供声明性更新 示例 --- apiVersion: apps/v1 kind: Deployment metadata: name: de ...
- 【07】Kubernets:资源清单(控制器 - DaemonSet)
写在前面的话 前面讲解了 Pod / ReplicaSet / Deployment 的资源清单,我们这里谈一下 DaemonSet 的资源清单. 之前说过,DaemonSet 控制器能够保证资源在每 ...
- 【05】Kubernets:资源清单(控制器 - ReplicaSet)
写在前面的话 从上一章节开始,我们一直在学习关于自主式 Pod 的资源清单编写, 但是自主式 Pod 存在着一个问题,就是和我们直接 docker run 运行 docker 容器一样.如果我们想以集 ...
- 6、kubernetes资源清单之Pod控制器190714
一.Pod控制器的类别 ReplicationController:早期唯一的控制器,已废弃 ReplicaSet:控制Pod满足用户期望副本:标签选择器选择由自己管理的Pod副本:Pod资源模板完成 ...
- 【04】Kubernets:资源清单(pod)
写在前面的话 前面我们提到过,纯手敲 K8S 名称管理 K8S 服务只是作为我们了解 K8S 的一种方案,而我们最终管理 K8S 的方法还是通过接下来的资源清单的方式进行管理. 所以从本章节开始,将会 ...
- 1.k8s概述、安装、名词解释、资源清单
一.k8s概述 1.简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernete ...
- k8s学习笔记之四:资源清单定义入门
第一章.k8s中的资源 1.什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 2.在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet D ...
- Kubernetes 学习5 kubernetes资源清单定义入门
一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...
随机推荐
- elasticsearch ik分词
elasticsearch 默认并不支持中文分词,默认将每个中文字切分为一个词,这明显不符合我们的业务要求.这里就需要用到ik分词插件. 本文主要囊括了以下几部分,ik插件安装.ik用法介绍.自定义词 ...
- 用python登录12306 并保存cookie
一篇拿来记录的文章,是看其他博主写的,想在这记一下 import sys import time import requests from PIL import Image import json i ...
- Pyqt5开发一款小工具(翻译小助手)
翻译小助手 开发需求 首先五月份的时候,正在学习爬虫的中级阶段,这时候肯定要接触到js逆向工程,于是上网找了一个项目来练练手,这时碰巧有如何进行对百度翻译的API破解思路,仿造网上的思路,我摸索着完成 ...
- 编译安装PHP以及需要的基本扩展库(php7.4)
安装配置选项1: ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-curl --with-freety ...
- TCP四次握手断开连接(十一)
建立连接非常重要,它是数据正确传输的前提:断开连接同样重要,它让计算机释放不再使用的资源.如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪 ...
- InfoQ一波文章:AdaSearch/JAX/TF_Serving/leon.bottou.org/Neural_ODE/NeurIPS_2018最佳论文
和 Nested Partition 有相通之处? 伯克利提出 AdaSearch:一种用于自适应搜索的逐步消除方法 在机器学习领域的诸多任务当中,我们通常希望能够立足预先给定的固定数据集找出问题的答 ...
- 数据结构——链栈(link stack)
/* linkStack.c */ /* 链栈 */ #include <stdio.h> #include <stdlib.h> #include <stdbool.h ...
- appium--元素等待和屏幕截图
元素等待 设置元素等待可以更加灵活的指定等待元素的时间,从而增强脚本的健壮性,提高执行效率 强制等待 from time import sleep sleep(5) 隐式等待 隐式等待是针对全部元素设 ...
- 复杂模拟 | 1014 模拟K个同时到来的人在N个窗口,每个窗口只能站M个人的银行排队
这题我以为还是之前银行排队的思路,但是做着做着就做不下去了了.看了答案我才理解到底是什么个思路. 是这样的:不同于之前排队的题,这里的K个人是同时到来的.所以首先应该让K个人的前N*M(也就是黄线内的 ...
- Linux性能优化实战学习笔记:第七讲
一.进程的状态 1.命令查看 top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28961 root 20 0 43816 3148 ...