k8s基础(3)—Kubernetes-Deployment

一、 Deployment概述 







Kubernetes Deployment
‌是Kubernetes中的一个核心概念,它是一种高级别的控制器,用于管理Pod和ReplicaSet,确保应用程序的高可用性和稳定性。Deployment通过声明式配置来创建和更新Pod和ReplicaSet,从而管理应用程序的生命周期‌12。

主要功能和特点

  1. 副本管理‌:Deployment确保在集群中有指定数量的Pod副本运行。如果Pod副本数量少于期望值,Deployment会自动创建新的Pod;如果副本数量超过期望值,则会删除多余的Pod‌23。
  2. 滚动更新‌:Deployment支持滚动更新策略,逐步替换旧版本的Pod为新版本,保障业务的连续性,避免一次性更新导致的服务中断‌23。
  3. 版本回滚‌:如果应用程序升级后出现问题,可以通过Deployment回滚到之前的版本‌23。
  4. 高可用性‌:当Pod失效时,Deployment会自动创建新的Pod以替换失效的Pod,保证服务的连续运行‌3。

使用场景和示例

Deployment的使用场景包括但不限于:

  • 应用部署‌:将构建好的容器镜像部署到Kubernetes集群中,并提供服务。
  • 应用升级‌:通过更新容器镜像并重新部署Deployment来实现应用的更新。
  • 回滚操作‌:当应用升级出现问题时,可以回滚到之前的稳定版本。

资源清单示例

以下是一个Deployment资源清单的示例:

apiVersion: apps/v1
kind: Deployment
metadata:name: webapp
spec:replicas: 3selector:matchLabels:app: webapptemplate:metadata:labels:app: webappspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80- name: php-fpmimage: php:fpm

这个示例创建了一个名为my-deployment的Deployment,包含3个Pod副本,每个Pod运行my-image:latest镜像,并监听8080端口‌。

二、Deployment的使用

(一)创建以及删除操作

#创建pod节点
kubectl create deployment nginx01 --image=nginx#删除pod,观察Deployment的自愈能力
kubectl delete pod nginx01-xxx#需要删除Deployment需要进行如下操作
kubectl get deploy              #获取到运行的实例名称
kubectl delete deploy nginx01   #删除运行的实例名称

删除

(二)多副本创建

#命令行创建与删除
kubectl create deployment nginx01 --image=nginx --replicas=3#查看创建的副本的状态
kubectl get deploy#使用YAML创建
apiVersion: apps/v1
kind: Deployment
metadata:labels:run: nginx02name: nginx02
spec:replicas: 3selector:matchLabels:app: nginx02template:metadata:labels:app: nginx02spec:containers:- image: nginxname: nginx

1、使用命令行进行创建和删除操作

1.1、查看创建的副本的状态

1.2、deployment删除

2、在dashboard上进行操作

2.1、填写表单进行操作

2.2、使用YAML文件进行操作

3、Deployment和Pod的区别

Pod 需要运行kubectl run命令进行,如果需要部署多分则需要运行多次;而使用Deployment进行部署只需要制定副本数量主节点会自动分配进行部署,而且在机器故障时也能进行自愈。

(三)扩缩容

#扩缩容命令 kubectl scale deploy/nginx02 --replicas=5 #nginx02是已经在运行的deployment的实例 #通过编辑的方式进入到deployment中进行修改 kubectl edit deployment nginx02

1、扩容

将之前的3个pod扩容到5个pod

方法一:直接使用命令行进行操作
#扩缩容命令
kubectl scale deploy/nginx02 --replicas=5  #nginx02是已经在运行的deployment的实例#通过编辑的方式进入到deployment中进行修改
kubectl edit deployment nginx02

方法二:编辑deployment对应的实例文件进行修改
#编辑deployment对应的实例文件进行修改
$ kubectl edit deployment nginx02
对以下内容进行编辑
...
spec:progressDeadlineSeconds: 600replicas: 4                          #修改pod的副本数
...

2、缩容

将之前的5个pod缩容到2个pod

kubectl scale deploy/nginx02 --replicas=2

3、dashboard操作
3.1、扩缩容操作

(四)自愈&故障转移

自愈:指pod遇到故障时k8s会自动选择其他的node节点启动一个新的pod

故障转移:当机器遇到宕机时,大概过了几分钟之后机器k8s会重新分配node上的pod信息。

步骤一:自愈模拟

1、场景:先用deployment创建一个pod;再将pod删除模拟故障。

2、实现预期:被删除后k8s会在另一个节点上重新启动一个pod

1、自愈

(五)滚动更新

滚动更新的原理是先启动更新的pod等更新的pod起来之后再替换掉旧的pod

#将nginx版本更新为1.16.1版本
kubectl set image deployment/nginx02 nginx=nginx:1.16.1 --record#查看版本信息
kubectl rollout status deployment/nginx02

查看到pod更新的状态信息,先进行一个pod的更新操作,更新成功之后才会关掉旧的pod

(六)版本回退

#历史记录
kubectl rollout history deployment/nginx02#查看某个历史详情
kubectl rollout history deployment/nginx02 --revision=2#回滚(回滚到上一个版本)
kubectl rollout undo deployment/nginx02#回滚到指定版本
kubectl rollout undo deployment/nginx02 --to-revision=2

回退到上一次版本

更多:处理Deployment部署之外,k8s还有StatefulSet、DaemonSet、Job等类型为资源,我们都称为工作负载,有状态应用使用StatefulSet部署,无状态应用使用Deployment部署。

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

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

相关文章

JS获取URL中参数值的4种方法

方法1:现代浏览器都支持 URL 和 URLSearchParams 对象,可以很方便地从URL中提取参数 // 假设当前URL为 "https://example.com/?nameJohn&age30" const url new URL(window.location.href); // 或者你可以直接传入一个URL字符串 const n…

ubuntu开启root用户

Ubuntu 启用 root 账户 在 Ubuntu 中,默认情况下 root 账户是被禁用的。为了启用 root 账户,你需要设置 root 用户的密码。以下是如何在 Ubuntu 上启用 root 账户的步骤: 打开终端。 输入以下命令来设置 root 用户的密码: sud…

C#跨窗口传递Halcon图像/参数

Demo目的,图像同步到附属窗口,通过附属窗口各类操作(参数设置,ROI重置等)简化主界面 本文主要演示图像传递 主界面 附属界面 运行效果 主界面代码 using System; using System.Collections.Generic; using System.C…

JavaScript 随机 数用法

在 JavaScript 中,生成随机数通常是使用 Math.random() 方法。这个方法生成一个伪随机浮点数,范围从 0(包括)到 1(不包括)。以下是一些常见的随机数用法和技巧: 1. 生成一个 [0, 1) 范围内的随机浮点数 let randomNum = Math.random(); console.log(randomNum); // 输

32单片机从入门到精通之开发环境——调试工具(七)

在人生的道路上,困难和挫折时常会出现。但是我们不能因此放弃,而是要坚持努力,克服困难,实现自己的梦想。成功不是一蹴而就的,它需要付出大量的努力和坚持不懈的精神。每一次的失败都是一次宝贵的经验,它能…

查询docker overlay2文件夹下的 c7ffc13c49xxx是哪一个容器使用的

问题背景 查询docker overlay2文件夹下的 c7ffc13c49xxx是哪一个容器使用的 [root@lnops overlay2]# du -sh * | grep G 1.7G 30046eca3e838e43d16d9febc63cc8f8bb3d327b4c9839ca791b3ddfa845e12e 435G c7ffc13c49a43f08ef9e234c6ef9fc5a3692deda3c5d42149d0070e9d8124f71 1.…

LeetCode:700.二叉搜索树中的搜索

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:700.二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你…

美食烹饪互动平台

本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) IDEAEclipseVisual Studio Code(VScode)Navica…

单片机从入门到放弃教程001

1. 单片机介绍 单片微型计算机(Single Chip Microcomputer)简称单片机,是典型的嵌入式微处理器(Micro Controller Unit简称MCU),是一种将中央处理器(CPU)、内存、输入输出接口以及其他功能模块集成在单一芯片上的微型计算机。 1…

2024数据湖架构实践案例(附资料)

2024年数据湖架构的一些实践情况: 技术趋势 湖仓架构融合:湖仓架构的采用在2024年持续发展,它结合了数据湖的可扩展性和数据仓库的分析性能,能够处理多种数据类型和复杂的工作流程,为企业提供更全面的数据视图。例如…

Redis——主从复制模式

文章目录 1. 引入2. 主从复制模式2.1 概念2.2 配置2.3 原理2.3.1 建立连接阶段2.3.2 命令传播阶段2.3.3 心跳检测机制2.3.4 部分重同步机制(1) 主节点通过 复制积压缓冲区 记录写命令(2) 主节点通过 复制偏移量 判断从节点是否满足执行部分重同步的条件(3) 执行部分重同步操作 …

Mysql数据实时同步到Es上

同步方案 ① 同步双写 同步双写实一种数据同步策略,它指的是在主数据库(如mysql) 上进行数据修改操作,同时将这些修改同步写入到ES 中,这种策略旨在确保两个数据库之间的数据一致性,并且优化系统的读写性能。 目标 同步双写是…

供需平台信息发布付费查看小程序系统开发方案

供需平台信息发布付费查看小程序系统主要是为了满足个人及企业用户的供需信息发布与匹配需求。 一、目标用户群体 个人用户:寻找兼职工作、二手物品交换、本地服务(如家政、维修)等。 小微企业:推广产品和服务,寻找合…

深入理解计算机系统—虚拟内存(3)

9.9 动态内存分配 虽然可以使用低级的 mmap 和 munmap 函数来创建和删除虚拟内存的区域,但是 C程序员还是会觉得当运行时需要额外虚拟内存时,用 动态内存分配器 更方便,也有更好的可移植性。 动态内存分配器维护着一个进程的虚拟内存区域&…

Swift Concurrency(并发)学习

Swift 的并发模型是基于 异步任务 和 任务调度 的一套现代化的异步编程工具。以下是相关语法规则总结 1. 异步函数(async)与 await async 用于声明一个异步函数,表示函数可能会执行耗时任务,例如网络请求、文件读写等。在调用异步…

html本地字符串处理工具|去重、分割、求交集、求并集

源代码&#xff08;保存到本地文件命名为 xxx.html&#xff0c;用浏览器打开该文件即可使用&#xff09; <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>数据处理</title><style>inpu…

毕业项目推荐:基于yolov8/yolov5的行人检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

MySQL数据库基础 === DDL DML

目录 概述-数据模型 1、关系型数据库&#xff08;RDBMS&#xff09; 2、MySQL数据库 通用语法及分类 通用语法 DDL&#xff08;数据定义语言&#xff09; 数据库操作 表操作 DML&#xff08;数据操作语言&#xff09; 添加数据 更新和删除数据 概述-数据模型 1、关…

企业二要素如何用C#实现

一、什么是企业二要素&#xff1f; 企业二要素&#xff0c;通过输入统一社会信用代码、企业名称或统一社会信用代码、法人名称&#xff0c;验证两者是否匹配一致。 二、企业二要素适用哪些场景&#xff1f; 例如&#xff1a;信用与金融领域 1.信用评级&#xff1a;信用评级…

微信小程序中 “页面” 和 “非页面” 的区别

微信小程序中 “页面” 和 “非页面” 的区别&#xff0c;并用表格进行对比。 核心概念&#xff1a; 页面 (Page)&#xff1a; 页面是微信小程序中用户可以直接交互的视图层&#xff0c;也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…