Kubernetes那点事儿——控制器Deployment

news2024/11/18 21:42:40

K8s应用程序生命周期管理——控制器Deployment

  • 一、部署应用程序流程
  • 二、Deployment控制器
    • 1、应用升级、弹性伸缩、回滚、删除
    • 2、滚动升级、回滚机制
    • 3、定义Deployment


前言说到K8s程序的生命周期管理我们不得不提到k8s的控制器。其中Deployment是最为常用的controllers,其他控制器还有DaemonSet、StatefulSet、Cronjob等。本篇我们以deployment为例来展开研究,其他控制器我们会逐一研究。


一、部署应用程序流程

在这里插入图片描述

  1. 制作镜像

    可以参考以前的文章 Dockerfile编写

  2. 使用Deployment控制器部署镜像

kubectl create deployment nginx --image=nginx
kubectl get deploy,pods
  1. 使用Service暴露服务 Nodeport
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get svc,ep

在这里插入图片描述

二、Deployment控制器

Deployment是最为常用的controllers(也称为workload)

controllers作用:

  • 管理Pod对象
  • 使用标签与Pod关联
  • 负责Pod维护,如滚动更新、伸缩、副本管理、维护Pod状态等

Deployment功能:

  • 管理Pod及ReplicaSet
  • 具有上线部署、副本设定、滚动升级、回滚等功能
  • 提供声明式更新,例如只更新一个新的Image

ReplicaSet(副本集)功能:

  • 协助Deployment做事
  • Pod副本数量管理,不断对比当前Pod数量与期望Pod数量
  • Deployment每次发布都会创建一个RS作为记录,用于实现回滚

1、应用升级、弹性伸缩、回滚、删除

应用升级

record将升级命令记录到历史命令方便回滚

kubectl set image deployment/web nginx=nginx:1.16 --record

查看升级状态

kubectl rollout status deployment/web 

查看RS记录

kubectl get rs

弹性伸缩(手动扩容)

kubectl scale deployment web --replicas=10

回滚

kubectl rollout history deployment/web
kubectl rollout undo deployment/web # 回滚上一个版本
kubectl rollout undo deployment/web --to-revision=2 # 回滚指定版本

删除

kubectl delete deploy/web
kubectl delete svc/web

这里我们以修改image tag为例,演示一下rollout
在这里插入图片描述

2、滚动升级、回滚机制

滚动更新

每次只升级一个或多个服务,升级完成加入生产环境,不断执行这个过程,直到集群中的全部旧版升级新版本。

优点:用户无感知

缺点:部署周期长

1个Deployment更新会涉及2个Replicaset,Replicaset会控制Pod副本数量,还会创建RS记录

在这里插入图片描述

3、定义Deployment

在这里插入图片描述
这是一个典型Deployment的yaml文件,分为两部分:控制器和被控制资源。控制器说白了就是定义的Deployment的属性信息,如name、replicas、seletor等,被控制资源就是本身容器的一些属性,跟我们单独run一个docker类似,指定port、volume等。两者通过labels与matchLabels字段联系在一起,实现Deployment对Pod的管理、控制。

YAML 是一种简洁的非标记语言,语法格式:

  • 缩进表示层级关系
  • 不支持制表符“tab”缩进,使用空格缩进
  • 通常开头缩进 2 个空格
  • 字符后缩进 1 个空格,如冒号、逗号等
  • “—” 表示YAML格式,一个文件的开始
  • “#”注释

对于K8s的维护人员来说,对于各种yaml我们可以看得懂就可以,不一定非要会徒手写yaml。当我们记不住yaml字段的时候

1、从K8s官网查询,每个资源官网都有实例可以参考

在这里插入图片描述

2、不方便访问互联网的时候可以使用create、get命令来获取yaml

kubectl create deployment nginx --image=nginx:1.20 -o yaml --dry-run=client > my-deploy.yaml # 使用create创建deployment并获取yaml文件

kubectl get deployment nginx -o yaml > my-deploy.yaml # 从现有deployment生成yaml

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Liga妙谈 | 如何快速甄别、高效响应用户反馈?

敏捷开发说要「拥抱变化」,在充满不确定的环境中,唯一不变的正是变化。面对源源不断的市场反馈和需求变更,敏捷团队应该如何平衡「高效迭代」与「响应用户」的关系,既快又好地完成研发任务,交付业务价值? …

FFmpeg 滤镜详解

FFmpeg Filter 1. 概念介绍 在多媒体处理中,术语滤镜(filter)指的是修改未编码的原始音视频数据帧的一种软件工具。 2. 基本原理 ● 在编码前,ffmpeg可以对raw(真实/原)音频和视频使用libavfilter库中的滤镜进行处理。(非压缩…

骨感传导蓝牙耳机怎么样、骨感传导蓝牙耳机有什么特点

在正文开始前,先跟大家说明一下,骨感传导其实就是我们常说的骨传导,两者是相同的意思,只是表达的文字不太一样。我们可以理解为骨感传导耳机骨传导耳机,那既然是这样,骨传导耳机又是利用什么原理传播声音的…

CentOS搭建web服务器,并内网穿透实现公网访问

在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有tomcat容器、Apache等,这边使用Apache来建搭建。 Apache2 是一种流行…

一节摹课丨做会动的电子贺卡,当懂浪漫的成年人

你正在阅读摹客全新内容栏目【一节摹课】。 本栏目会通过一些有趣的、实用的、好看的、新潮的实操案例,分享摹客“设计12”产品矩阵 —— 「1个协作平台2款设计工具」的具体操作妙计! 带大家一步一步地解锁摹客协作、摹客RP、摹客DT中的大小功能。 一…

非正式全面解析 NebulaGraph 中 Session 管理

NebulaGraph 论坛最近有些讨论帖,各种姿势来问 NebulaGraph Session 管理相关的事情,我寻思这也不是一个法子,还是来写一篇文章来讲述下 NebulaGraph 中的 Session 管理。由于本文设定为非正式的 Session 讲解,所以本文主要分为理…

智能车|直流电机、编码器与驱动器---编码器

智能车|直流电机、编码器与驱动器---编码器编码器编码器简介编码器的工作原理四倍频采集编码器采集程序实现编码器 编码器简介 编码器是一种将角位移或者直线位移转换成一连串电数字脉冲的一种传感器。 可以通过编码器测量电机转动的位移或者速度信息。 编码器按照工作原理…

FTP多目录和多用户配置(用户隔离/虚拟目录)

FTP多目录和多用户配置(用户隔离/虚拟目录) 假设有四个部门分别是user1、user2、user3、admin。要求四个部门都有各自有独立的访问目录,且admin部门可以访问其他部门的文件但不能对其进行修改。 1、创建ftp文件→再创建LocalUser(…

【图像处理OpenCV(C++版)】——3.1几何变换之仿射变换

前言: 😊😊😊欢迎来到本博客😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快…

CSS 颜色

文章目录CSS 颜色关键字 & 十六进制 & RGBopacity 透明度RGBA 颜色CSS3 渐变线性渐变径向渐变CSS 颜色 关键字 & 十六进制 & RGB W3C十六色 opacity 透明度 语法 opacity: 数值;说明 在CSS3中,我们可以使用opacity属性来定义元素的透明度。 o…

excel排序求和:如何统计前几名数据合计 下篇

上次咱们说到一个公式SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H2))这部分如果写成ROW(1:H2)就会报错: 原因也告诉大家了,就是ROW函数的参数只能使用单元格或单元格区域。 因此解决的办…

Java IO流 - 字节流的使用详细介绍

文章目录IO流的基本介绍字节流的使用文件字节输入流创建字节输入流每次读取一个字节每次读取一个数组一次读取全部字节文件字节输出流创建字节输出流写入文件输出流文件拷贝练习IO流的基本介绍 IO流的概述: I 表示intput,是数据从硬盘文件读入到内存的过程&#xf…

频谱分析仪关键性能指标

频谱分析仪关键性能指标 频谱分析仪作为分析仪表,其基本性能要求包含: 1. 频率方面指标: 测量频率范围:反映频谱仪测量信号范围能力; 频率分辨率:反映频谱仪分辨两个频率间隔信号的能力。 2. 幅方面度指标&#x…

银河麒麟(aarch64)安装Qt,报错main.cpp:8:5: error: unknown type name ‘MainWindow‘...

环境: 版本:银河麒麟桌面操作系统V10(SP1) 内核:Linux 5.4.18-35-generic CPU:Phytium,D2000/8 终端输入 uname -m 查看 架构 aarch64 在商店安装Qt, 安装完成后 工具-选项-kits构…

SAP ABAP——SAP简介(五)【ABAP的前世今生和未来】

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

kali安装cobaltstrike详细教程

下载cobaltstrike-linux版本,此下载链接提供4.3,4.4,4.5三个版本https://download.csdn.net/download/weixin_59679023/87354658 xshell上传至kali,解压 unzip cobaltstrike 进入cobaltstrike目录,ls查看如下 ls 给cs的服务端teamserver和客户端start.sh执行权限 chmod …

【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)

08Shading 2着色(着色频率、图形管线、纹理映射)前置知识1.Specular Term 高光2.Ambient Term 环境光照项3.最终的成像公式2.着色频率1.Flat shading2.Gouraud shading3.Phong shading4.那么如何计算逐顶点法线?5.如何定义逐像素的法线&#…

微信小程序之后台交互--首页

目录一、后台准备1、application.yml2、generatorConfig.xml3、WxHomeController4、MinoaApplication.java二、小程序首页动态数据加载及优化1、config/app.js2、util.js3、index.wxml4、index.js5、page.wxs一、后台准备 1、application.yml spring:datasource:#type连接池类…

冰冰学习笔记:管道与共享内存

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

直播榜单正式上线,超店有数让你数秒内找到热卖直播间和高转化带货达人

众所周知,国内抖音直播带货正处于火爆的状态,大部分电商商家都在抖音通过直播带货实现流量变现。那么TikTok作为国内抖音复制到海外的短视频App,是全球最火爆的App之一,被视为品牌出海的新风口。它的直播变现模式也和抖音大同小异…