【Kubernetes】Deployment 的创建和使用(实战)

news2025/1/25 9:21:43

Deployment 的创建和使用

创建 deployment-demo.yaml 文件,并在其中输入以下内容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-demo
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
  • .metadata.name:创建名为 deployment-demo 的 Deployment。
  • .spec.replicas:指示 Deployment 创建具有 3 3 3 个副本的 Pod。
  • .spec.selector:定义 Deployment 如何查找要管理的 Pod。在这种情况下,只需在 Pod 模板中定义对应的标签,则 Kubernetes 会进行自动匹配。
  • .spec.template:定义 Pod 的相关属性(🚀 埋一个彩蛋,文末会提到)。
  • .spec.template.metadata.labels:给 Pod 添加标签 Label。
  • .spec.template.spec:使用 Nginx 1.7.9 版本的镜像创建一个名为 nginx 的容器,并暴露容器的端口。

运行以下命令创建 Deployment。

kubectl apply -f deployment-demo.yaml

查看创建的 Deployment 和 ReplicaSet。

kubectl get deployments,replicaset,pod
kubectl get deploy,rs,pod

输出的信息如下图所示:

在这里插入图片描述

查看每个 Pod 自动生成的标签。

kubectl get pods --show-labels

在这里插入图片描述

修改 YAML 文件来实现配置信息的更新。以下 YAML 文件将 Nginx 的版本升级到 1.9.1 并将 Pod 的副本数改成了 4

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-demo
  labels:
    app: nginx
spec:
  replicas: 4
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.9.1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80

🚀 也可以使用命令行的方式来实现更新,例如:kubectl set image deploy deployment-demo nginx=nginx:1.9.1

运行以下命令重新应用 Deployment。

kubectl apply -f deployment-demo.yaml

在这里插入图片描述

获取 Deployment 的信息。

kubectl describe deployments deployment-demo

输出的信息如下:

在这里插入图片描述

执行以下命令将 Nginx 的版本更新为 1.7.9

kubectl --record deployment.apps/deployment-demo \
set image deployment.apps/deployment-demo nginx=nginx:1.7.9

🚀 为了能够追溯修改历史记录,这里使用了 --record 参数。

获取 Deployment 的信息。

kubectl describe deployments deployment-demo

输出的部分信息如下。可以看出,Nginx 的版本又回到了 1.7.9

在这里插入图片描述

我们看一下此时 ReplicaSet 的情况。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

执行以下命令追溯修改的历史。

kubectl rollout history deployment deployment-demo

输出的信息如下:

在这里插入图片描述

执行以下命令将 Nginx 回滚到 2 版本。

kubectl rollout undo deployment deployment-demo --to-revision=2

重新获取 Deployment 的信息。

kubectl describe deployments deployment-demo

输出的信息如下。可以看到,Nginx 又回滚到 1.9.1 版本。

在这里插入图片描述

我们看一下此时 ReplicaSet 的情况。

在这里插入图片描述
在这里插入图片描述

以下命令将对 Deployment 进行缩放。

kubectl scale deployment deployment-demo --replicas=7

在这里插入图片描述

我们看一下此时 ReplicaSet 的情况。

在这里插入图片描述
在这里插入图片描述

我们编辑 deployment-demo.yaml,将参数 replicas 改为 5

在这里插入图片描述

我们编辑 deployment-demo.yaml,将 Nginx 的版本更新为 1.7.9

在这里插入图片描述

我们编辑 deployment-demo.yaml,将 Nginx 的版本更新为 1.25.5

在这里插入图片描述
在这里插入图片描述

🚀 根据上述实验可知,只有修改了 pod template 中的内容(即 .spec.template 定义的内容),pod-template-hash 的值才会变化,才会生成一个新的 ReplicaSet 对象。

在这里插入图片描述

我们对 Deployment 进行的每一次更新操作,都会生成一个新的 ReplicaSet 对象,是不是有些多余,甚至浪费资源?所以,Kubernetes 项目还提供了一个指令,使得我们对 Deployment 的多次更新操作,最后只生成一个 ReplicaSet 对象。具体的做法是,在更新 Deployment 前,你要先执行一条 kubectl rollout pause 指令。它的用法如下所示:

kubectl rollout pause deployment deployment-demo

这个命令的作用,是让这个 Deployment 进入了一个 “暂停” 状态。由于此时 Deployment 正处于 “暂停” 状态,所以我们对 Deployment 的所有修改,都不会触发新的 “滚动更新”,也不会创建新的 ReplicaSet。而等到我们对 Deployment 修改操作都完成之后,只需要再执行一条 kubectl rollout resume 指令,就可以把它恢复回来,如下所示:

kubectl rollout resume deployment deployment-demo

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

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

相关文章

Go语言加Vue3零基础入门全栈班15 gin+gorm+vue3用户管理系统实战录播课 2024年08月04日 课程笔记

预览 登录页面: 首页: 用户列表: 新增用户: 删除用户: 暗黑模式: 概述 如果您没有Golang的基础,应该学习如下前置课程。 01 Golang零基础入门课_20240726_149元02 Golang面向对象…

3.11.样式迁移

样式迁移 ​ 使用卷积神经网络,自动的将一个图像中的风格应用在另一图像之上,即样式迁移(style transfer) ​ 为了完成这一过程,我们需要两张输入图像:一张是内容图像,一张是风格图像,随后使用神经网络修…

【Nuxt】内置组件和全局样式使用

内置组件 Nuxt3框架也提供一些内置的组件,常用的如下: SEO组件:Html、Body、Head、Title、Meta、Style、Link、NoScript、BaseNuxtWelcome:欢迎页面组件,该组件是nuxt/ui的部分NuxtLayout:是Nuxt自带的页面布局组件NuxtPage:是N…

《Windows API每日一练》24.1 WinSock简介

本节将逐一介绍WinSock的主要特性和组件,套接字、WinSock动态库的使用。 本节必须掌握的知识点: Windows Socket接口简介 Windows Socket接口的使用 第178练:网络时间校验 24.1.1 Windows Socket接口简介 ■以下是WinSock的主要特性和组件…

Nginx代理(反向代理详解)

概述 正向代理: 正向代理通常用于客户端需要访问外部网络资源,但出于安全或策略考虑,客户端无法直接访问这些资源。正向代理服务器位于客户端和目标服务器之间,客户端通过代理服务器发送请求,代理服务器再将请求转发…

云原生应用程序简介

云原生应用程序简介 提示 该内容摘自电子书《为 Azure 构建云原生 .NET 应用程序》,可在**.NET Docs**上获取,也可以免费下载 PDF 并离线阅读。 另一天,在办公室研究“下一件大事”。 你的手机响了。这是友好的招聘人员打来的,他每…

备考2024年美国数学竞赛AMC10:吃透1250道历年真题和知识点(持续)

最近有家长问好真题网,有什么含金量比较高的初中生数学竞赛吗?美国数学竞赛AMC10是个不错的选择。根据近年的时间安排,距离2024年AMC10美国数学竞赛开赛预计还有2个多月的时间,实践证明,做真题,吃透真题和背…

[Python学习日记-2] Python的介绍与安装

[Python学习日记-2] Python的介绍与安装 Python的介绍和发展趋势 Python环境安装 开发你的第一个Python程序 Python的介绍和发展趋势 一、Python发展史 Python是一种高级编程语言,由Guido van Rossum(龟叔,荷兰人)于1989年圣诞…

Cursor搭配cmake实现C++程序的编译、运行和调试

Cursor搭配cmake实现C程序的编译、运行和调试 Cursor是一个开源的AI编程编辑器,开源地址https://github.com/getcursor/cursor ,它其实是一个集成了Chat-GPT的VS Code。 关于VS Code和VS的对比可以参考这篇文章VS Code 和 Visual Studio 哪个更好&…

ASPCMS漏洞之文件上传漏洞

ASPCMS是由上⾕⽹络开发的全新内核的开源企业建站系统,能够胜任企业多种建站需求,并且 ⽀持模版⾃定义、⽀持扩展插件等等,能够在短时间内完成 企业建站。 步骤一:访问靶场 访问后台页面——登录后台——填写用户密码&#xff0…

混合密度网络Mixture Density Networks(MDN)

目录 简介1 介绍2 实现3 几个MDN的应用:参考 简介 平方和或交叉熵误差函数的最小化导致网络输出近似目标数据的条件平均值,以输入向量为条件。对于分类问题,只要选择合适的目标编码方案,这些平均值表示类隶属度的后验概率&#x…

记录一次单例模式乱用带来的危害。

项目场景: 我们在接受到短信网关下发的回执之后,需要将回执内容也下发给我们的下游服务。为了防止下游响应超时,我们需要将超时的信息存放到Redis中然后进行补发操作。 问题描述 在使用Redis进行数据存储的时候,报NPE问题。 原因…

Leetcode第136场双周赛题解(c++)

题外话 也是好久没有更新力扣比赛的题解了,前段时间也是比较忙(说的好像现在不忙一样哈哈),像我等菜鸟,一般都是保二进三四不写的,笑死。 题目一.求出胜利玩家的数目 给你一个整数 n ,表示在…

【C++ STL】vector

文章目录 vector1. vector的接口1.1 默认成员函数1.2 容量操作1.3 访问操作1.4 修改操作1.5 vector与常见的数据结构的对比 2. vector的模拟实现2.1 类的定义2.2 默认成员函数迭代器的分类 2.3 容量接口memcpy 浅拷贝问题内存增长机制reserve和resize的区别 2.4 修改接口迭代器…

ScreenAgent:基于LVLM的计算机控制智能体

ScreenAgent : A Vision Language Model-driven Computer Control Agent 论文链接: https://arxiv.org/abs/2402.07945https://arxiv.org/abs/2402.07945IJCAI 2024 1.概述 大型语言模型(LLM),诸如ChatGPT与GPT-4,在自然语言处理领域(涵盖生成、理解及对话等任务)展现出…

springBoot 3.X整合camunda

camunDa camunDa 是2013年从Activiti5 中分离出来的一个新的工作流引擎。Camunda 官方提供了 Camunda Platform、Camunda Modeler,其中 Camunda Platform 以 Camunda engine 为基础为用户提供可视化界面,Camunda Modeler 是流程文件建模平台&#xff0c…

python 的 tuple(元组) 是不是冗余设计?

有人问,python 的 tuple(元组) 是不是冗余设计?因为它和list(列表)很像。 先抛观点,tuple不是冗余设计,它最大的特点是不可变,在Python程序设计中非常重要。 tuple与li…

药店管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,药品分类管理,药品信息管理,留言板管理,订单管理,系统管理 微信端账号功能包括:系统首页,药品信息&#xf…

VBA中类的解读及应用第十四讲:限制复选选择,程序运行过程及效果

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

【Vue3】组件通信之$parent

【Vue3】组件通信之$parent 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的…