k8s快速入门教程-----4 工作负载控制器之deployment

K8S(Kubernetes)简介和官方安装部署保姆级详细教程 Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。 阅读详情

上一篇:3 kubernetes架构
kubernetes通过各种controller来管理pod的生命周期,根据不同的业务场景,开发了deployment、Replicaset(副本控制器)、daemonset、statefulset、job等多种controller, deployment其实也是一种工作负载资源。
工作负载控制器(Workload Controllers)是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。
常用工作负载控制器有:
• Deployment : 无状态应用部署
• StatefulSet : 有状态应用部署
• DaemonSet : 确保所有Node运行同一个Pod
• Job : 一次性任务
• Cronjob : 定时任务
控制器的作用:
1、管理pod对象
2、使用标签与pod绑定
3、控制器实现了Pod的运维,例如滚动更新、伸缩、副本管理、维护Pod状态等。

4.1 Deployment 配置文件简介

之前我们是通过命令行创建资源的,K8S更趋向于用yaml文件来创建资源,我们生产环境,大部分操作都是用yaml文件来创建资源的。
了解YAML语法格式:

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

既然要用YAML配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式了,其他Controller (比如DaemonSet) 非常类似。
以nginx deployment为例,配置文件如图5-12所示。

apiVersion: apps/v1   # ①
kind: Deployment      # ② 
metadata:       # ③
  name: nginx0801
spec:       #④
  replicas: 1  #⑤
  selector:
    matchLabels:
      app: nginx0801
  template:    #⑥
    metadata:  #⑦
      labels:
        app: nginx0801
    spec:    #⑧
      containers:
      - image: nginx
        name: nginx

①apiVersion 是当前配置格式的版本。
②kind是要创建的资源类型,这里是Deployment。
③metadata是该资源的元数据,name是必需的元数据项。
④spec部分是该Deployment的规格说明。
⑤replicas 指明副本数量,默认为1。
⑥template 定义Pod的模板,这是配置文件的重要部分。
⑦metadata定义Pod的元数据,至少要定义一个label。label 的key和value可以任
意指定。
⑧spec 描述Pod的规格,此部分定义Pod中每一一个 容器的属性,name 和image是必需的。

4.2 Deployment典型使用场景

deployment的典型使用场景有以下几个。

  • 创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建。
  • 检查Deployment的状态来看部署动作是否完成(Pod副本数量是否达到预期的值)。
  • 更新Deployment以创建新的Pod(比如镜像升级)。
  • 如果当前Deployment不稳定,则回滚到一个早先的Deployment版本。
  • 暂停Deployment以便于一次性修改多个PodTemplateSpec的配置项,之后再恢复Deployment,进行新的发布。
  • 扩展Deployment以应对高负载。
  • 查看Deployment的状态,以此作为发布是否成功的指标。
  • 清理不再需要的旧版本ReplicaSets。

此nginx.yml是一个最简单的Deployment 配置文件,后面我们学习Kubernetes 各项功能时会逐步丰富这个文件。执行kubectl apply -f nginx0801.yml, 如图所示。

# kubectl get deploy
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
nginx0819   10/15   15           10          32m

对上述输出中涉及的数量解释如下。
READY: 准备就绪的pod数量/Pod副本数量的期望值
UP-TO-DATE:最新版本的Pod的副本数量,用于指示在滚动升级的过程中,有多少个Pod副本已经成功升级。
AVAILABLE:当前集群中可用的Pod副本数量,即集群中当前存活的Pod数量。
AGE: deployment生命时间
其实,通过kubectl创建Deployment,Deployment创建ReplicaSet, ReplicaSet再创建pod。

# kubectl get rs
NAME                   DESIRED   CURRENT   READY   AGE
nginx0819-586b875586   15        15        10      32m

DESIRED:Pod副本数量的期望值
CURRENT:当前Replica的值。
READY: 准备就绪的pod数量。

4.3 伸缩

伸缩是指在线增加或减少Pod的副本数。
Deployment nginx-deployment初始是两个副本,如图所示。

# kubectl apply -f nginx0819.yaml   
deployment.apps/nginx0819 created
# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP             NODE             NOMINATED NODE   READINESS GATES
nginx0819-586b875586-77822   1/1     Running   0          62s   10.255.30.43   k8s21-worker01   <none>           <none>
nginx0819-586b875586-82z49   1/1     Running   0          62s   10.255.30.6    k8s21-worker01   <none>           <none>

k8s21-worker01上跑了两个副本。现在修改nginx.yml文件,将副本改成5个,
如图所示。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx0819
spec:
  replicas: 5     #修改副本5
  selector:
    matchLabels:
      app: nginx0819
  template:
    metadata:
      labels:
        app: nginx0819
    spec:
      containers:
      - image: nginx
        name: nginx

再次执行kubeclt apply -f nginx0819.yaml

# kubectl get pod 
NAME                         READY   STATUS    RESTARTS   AGE
nginx0819-586b875586-77822   1/1     Running   0          4d21h
nginx0819-586b875586-82z49   1/1     Running   0          4d21h
nginx0819-586b875586-8t78j   1/1     Running   0          4d21h
nginx0819-586b875586-qlxzg   1/1     Running   0          4d21h
nginx0819-586b875586-tjv9b   1/1     Running   0          4d21h

另外,可以通过命令行模式修改副本数:

kubectl scale deployment httpd0826 --replicas=5

replicas为副本数。

4.4 CKA考题研究

Task
将deployment 从loadbalancer 扩展至 5 pods
解题:

#以下考试不需要操作
kubectl create deployment loadbalancer --image=nginx --replicas=1
#以下考试操作
kubectl config use-context k8s
kubectl scale deployment loadbalancer --replicas=5

下一篇:5 Service

Kubernetes Deployment 详解 Kubernetes Deployment 是一种用于管理无状态应用的工作负载资源,通过声明式方式控制 Pod 和 ReplicaSet。它支持滚动更新、回滚、扩缩容等核心功能,确保应用持续可用。Deployment 控制器会创建并管理 ReplicaSet,而 ReplicaSet 则维护指定数量的 Pod 副本。典型操作包括通过 YAML 定义应用、使用 kubectl 进行部署更新(如镜像版本变更)、查看状态及执行回滚。滚动更新策略通过 maxSurge 和 maxUnavailable 参数 阅读详情

相关推荐

k8s工作负载-Deployment的参数与灰度发布

本文介绍了Kubernetes Deployment配置及其灰度发布功能。主要内容包括:1)Deployment参数详解,如revisionHistoryLimit控制历史版本保留数量、minReadySeconds调节更新速度、paused暂停部署等;2)金丝雀发布实现方式,通过暂停更新流程实现新旧版本并存,逐步验证新版本稳定性;3)实际操作示例展示如何使用kubectl命令进行版本更新、暂停/继续部署及删除Deployment。

sanyii313131的博客 414

kubernetes Deployment 详解 更新/回滚/缩放/暂停/恢复部署操作

Deployments 更新/回滚官方 一、创建 Deployment对象 1、创建Deployment Pod vim nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx templa

qq_37377136的博客 1万+

【技能---ubuntu20.04更换国内镜像源】

安装好ubuntu20.04后,在下载软件等安装包的时候,速度特别的慢,为此就想着更换一下镜像源,以此来增加下载的速度!!!下面是换源的具体流程!!!提示:以下是本篇文章正文内容,下面案例可供参考以上到这里就更换完软件源了,如有不足之处,请大家斧正!!!

fyc300的博客 1万+

Kubernetes deployment 常用操作命

K8S deployment 常用命令 创建 kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record 将kubectl的 --record 的 flag 设置为 true可以在 annotation 中记录当前命令创建或者升级了该资源。这在未来会很有用,例如,查看在每个 Depl...

xiliangMa的博客 3435

UVM和System verilog笔记总结(四)

virtual sequence 即虚seq,用于管理多个实sequence的执行顺序。 下面有三个sequence,此时需要virtual sequence去管理这三个的顺序。 virtual sequence和virtual sequencer需要成对写,使用例化实的sequence和sequencer控制: 此时在virtual sequence里面启动,而不是之前在test.sv里面用default或start函数启动。具体方法如下:先例化 再启动,用 `uvm_do_on 实sequence

weixin_42655118的博客 642

PLC控制气缸与电磁阀:从原理到实战编程详解

在工业自动化领域,很多工程师都能编写PLC程序控制电机启停,但当涉及到气缸和电磁阀的精确控制时,却常常遇到动作不协调、响应延迟甚至设备损坏的问题。这背后的关键不在于PLC编程本身,而在于对气动元件特性和控制逻辑的深入理解。 本文将从实际工程问题出发,深入解析气缸与电磁阀的工作原理、PLC控制逻辑设计、常见故障排查方法,并通过完整的梯形图实例,帮助读者掌握气动系统自动化编程的核心要点。无论你是刚接触PLC的初学者,还是希望提升气动控制技能的工程师,都能从中获得实用的技术指导。 1. 气缸与电磁阀在自动化控制中

weixin_42522374的博客 340

k8s工作负载控制器之deployment介绍与使用

工作负载控制器 工作负载控制器(Workload Controllers)是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。 常用工作负载控制器有: • Deployment : 无状态应用部署 • StatefulSet : 有状态应用部署 • DaemonSet : 确保所有Node运行同一个Pod • Job : 一次性任务 • Cronjob : 定时任务 控制器的作用: 1、管理pod对象 2、使用标签与pod绑定 •3、控制器实现了Pod的运维,例如...

huahua1999的博客 4347

ICT调试技巧:从基础到实战的全面指南

本文提供了一份全面的ICT调试技巧指南,涵盖从基础认知到实战应用的全过程。详细解析了ICT设备硬件结构、程序文件构成,并重点讲解了调试界面的核心参数与高效快捷键。通过跳线、电阻、电容及二极管等常见元器件的实战调试案例,分享了参数设置要点与典型问题解决方案,帮助工程师快速掌握ICT调试核心技能,提升测试效率与准确性。

weixin_29202213的博客 342

K8S-kubectl scale(静态)扩缩容pod,K8S-kubectl autoscale(动态)扩缩容pod,K8S的HorizontalPodAutoscaler(HPA)机制自动扩容缩容

1、静态调整pod方式 1.1 通过kubectl scale 命令扩缩pod 1.2 使用yml文件扩缩容pod 2、HPA自动扩容 2.1 通过kubectl autoscale命令自动扩缩容pod(不推荐) 2.2 通过yml文件自动扩缩容pod(推荐配置)

DLWH_HWLD的博客 1万+

ASP.NET Core 6 Web API在IIS上的部署与调试

通过以上步骤和配置,你应该能够成功部署并调试你的ASP.NET Core 6 Web API在IIS上。记住,权限和配置是关键,确保你的环境和应用程序代码都正确设置。希望这篇博客对你部署和解决IIS上的问题有所帮助。

m0_74337424的博客 522

微信小程序 - 解决web-view嵌套H5网页白屏问题,将h5网页嵌套在webview页面出现无法加载一片空白,详解微信小程序<web-view>页面跳转出现白屏情况(无论本地还是线上H5都能解决)

微信小程序解决web-view打开网页在手机上出现白屏的问题,小程序web-view嵌套H5项目白屏问题分析及解决,使用web-view组件加载H5网页链接后白屏情况,小程序嵌套的h5网页中跳转页面时也有可能出现白屏问题,嵌套webview页面时,出现白屏,WebView 加载不出网页,微信小程序<web-view>页面跳转出现白屏解决方法,解决WebView白屏空白,H5内嵌第三方小程序打开白屏,微信小程序嵌入h5页面加载空白,微信小程序web-view跳转h5白屏,解决微信小程序web-view打开网页

🏆 前端领域优质创作者 1万+

关于 Kubernetes中deployment的一些笔记

情不知所起,一往而深;可惜大多由深转浅,相忘江湖,我也如是 ——烽火戏诸侯《雪中悍刀行》

山河已无恙 2913

手把手教你学Simulink——AC-DC整流器场景:基于传统晶闸管控制整流拓扑的建模:带反电动势负载的单相可控整流器输出特性仿真

在工业电力电子应用中,单相可控整流器常用于将交流电源转换为可调直流电压。当该整流器连接到具有**反电动势(Back EMF)**的负载时(如直流电机、电池充电系统等),其输出特性和工作原理与纯电阻性负载有所不同。本文将带你使用搭建一个带反电动势负载的单相全控桥式整流器模型,并通过仿真分析其输出电压、电流波形以及触发角对输出特性的影响。本文详细介绍了如何使用Simulink搭建一个带反电动势负载的单相全控桥式晶闸管整流器模型,并进行了输出特性的仿真分析。

MHD0815的博客 234

【云原生】kubernetes工作负载之控制器(Deployment 、DaemonSet 、Job)

在Kubernetes中,Pod是最小的管理单元,是一组紧密关联的容器组合。但是,单独的Pod并不能保障总是可用,比如我们创建一个nginx的Pod,因为某些原因,该Pod被意外删除,我们希望其能够自动新建一个同属性的Pod。很遗憾,单纯的Pod并不能满足需求。为此,Kubernetes实现了一系列控制器来管理Pod,使Pod的期望状态和实际状态保持一致工作负载控制器(Workload Controllers)是K8s的一个抽象概念,用于更高级层次对象,部署和管理Pod。

康师傅没有眼泪 2125

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Kubernetes工作负载

"Kubernetes工作负载" "Kubernetes Workloads"

qichengzong的博客 773

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

K8S - ReplicaSet 与 Deployment 深度解析与实战

K8S - ReplicaSet 与 Deployment 深度解析与实战

weixin_46619605的博客 2377

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【kubernetes】探索k8s集群的pod控制器详解(Deployment、StatefulSet、DaemonSet、Job、CronJob)

探索k8s集群的pod控制器详解(Deployment、StatefulSet、DaemonSet、Job、CronJob)

zzzxxx520369的博客 2098

Kubernetes(K8s)详解

Kubernetes(K8S)是一个开源的容器编排引擎,用于自动化部署、扩缩和管理容器化应用。其核心架构包括Master Node(含API Server、Scheduler、Controller Manager等组件)和Worker Node(含Kubelet、Kube-Proxy等)。K8S提供核心特性如服务发现、存储编排、自我修复等,支持通过kubectl命令行工具进行资源管理。Namespace用于隔离资源,Pod是最小部署单元,而Deployment则管理Pod的多副本和自愈能力。通过YAML文件

Java资料站 2011

K8s学习笔记(十) Deployment 副本控制器

Deployment 是 Kubernetes 中推荐的 Pod 管理方式,它通过 ReplicaSet 实现副本数量的自动维持(副本控制),同时提供声明式更新、版本回滚等高级功能,确保服务的高可用性和可维护性。相比直接使用 ReplicaSet 或 RC,Deployment 更适合生产环境中需要频繁更新和稳定运行的业务场景。

m0_66372733的博客 1003

Kubernetes 系列【9】Workloads(工作负载)

K8s 把所有业务应用统一命名为工作负载(Workload),不管是前端网站、后端接口、数据库、定时任务、日志采集程序,只要跑在集群里,都属于工作负载。

记录知识、锤炼自我 372

【Kubernetes】K8s 实践之旅

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明式配置和自动化,它拥有庞大且快速发展的生态系统,Kubernetes 服务、支持和工具随处可见。

Data · Model · Agent · Repeat 762

[K8S] k8s快速入门(1)

Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或 用户组。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务 相关的多个应用容器。: 指定可选的参数。在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个。网络:每一个Pod都会被指派一个唯一的Ip地址,在Pod中的每一个容器共享网络命名空间,包括Ip地址。存储:Pod能够被指定共享存储卷的集合,在Pod中所有的容器能够访问共享存储卷,允许这些容器共享。

程序员进阶之路 1241

浅谈K8S的容器管理

原本的学习知识可能偏重于IaaS平台的内容,比如说OpenStack或者说VMware这样的技术,会接触到更多虚机层面的东西。因为IaaS解决的东西是怎样将物理的算力和存储网络资源,转化成可以直接被上游操作系统调用的虚拟资源,相当于从物理主机转化为虚拟主机。 但由于近期工作接触PaaS平台的内容越来越多,在容器化的基础上引入了更为丰富的容器管理机制,所以自然也就绕不开当前的主流选择Kubernetes(下文简称K8S)。PaaS平台上,开发者仅需要关注上层运行的数据,以主流的容器引擎docker为例,开发

qq_35466511的博客 5647

Kubernetes(K8s)笔记Day04:控制器(ReplicaSet 与Deployment),滚动更新及回滚,滚动更新策略,Pod 的 DNS 策略

控制器是 Kubernetes 中用于管理 Pod 的中间层,能够监测 Pod 运行状况,当 Pod 发生故障时可以自动恢复 Pod。功能说明故障恢复Pod 发生故障时,控制器会尝试重启 Pod 或里面的容器自动补全Pod 副本数量低于期望值时,自动创建新的 Pod 副本自动终止Pod 副本数量多余期望值时,自动终止多余的 Pod 资源重新编排如果一直重启有问题,控制器会基于某种策略进行重新布派或重新编排确保每一个 Pod 资源始终处于我们所定义或者我们所期望的目标状态。

weixin_46136019的博客 408

k8s_DaemonSet和Deployment区别

k8s_DaemonSet和Deployment区别

纵歌的博客 1280
上一篇: k8s快速入门教程-----5 Service
下一篇: ansible安装及快速应用
cloud_engineer
博客等级 码龄5年 9390粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值