飞天使-k8s知识点20-kubernetes实操5-pod更新与暂停-statefulset

文章目录

        • 资源调度 Deployment:扩缩容
        • 资源调度 Deployment:更新的暂停与恢复
        • 资源调度 StatefulSet:定义一个有状态服务
            • headless service
          • 金丝雀发布

资源调度 Deployment:扩缩容
扩容和缩容,常用的功能
scale

[root@kubeadm-master1 ~]# kubectl scale --help
Set a new size for a Deployment, ReplicaSet, Replication Controller, or StatefulSet.

 Scale also allows users to specify one or more preconditions for the scale action.

 If --current-replicas or --resource-version is specified, it is validated before the scale is attempted, and it is
guaranteed that the precondition holds true when the scale is sent to the server.

Examples:
  # Scale a replicaset named 'foo' to 3.
  kubectl scale --replicas=3 rs/foo

  # Scale a resource identified by type and name specified in "foo.yaml" to 3.
  kubectl scale --replicas=3 -f foo.yaml

  # If the deployment named mysql's current size is 2, scale mysql to 3.
  kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

  # Scale multiple replication controllers.
  kubectl scale --replicas=5 rc/foo rc/bar rc/baz

  # Scale statefulset named 'web' to 3.
  kubectl scale --replicas=3 statefulset/web

实操部分

[root@kubeadm-master1 ~]# kubectl get rs
NAME                           DESIRED   CURRENT   READY   AGE
nginx-deploy-845964f5bf        4         4         4       61m
nginx-deploy-968b78ccf         0         0         0       41m
nginx-deployment-67dfd6c8f9    1         1         1       56d
tomcat-deployment-6c44f58b47   1         1         1       56d
[root@kubeadm-master1 ~]# kubectl get pod
NAME                                 READY   STATUS      RESTARTS   AGE
client                               1/1     Running     0          50d
my-pod                               1/1     Running     0          9d
my-pod1                              0/1     Completed   6          20h
net-test1                            1/1     Running     138        57d
net-test2                            1/1     Running     14         57d
nginx-deploy-845964f5bf-dqdzt        1/1     Running     0          6m33s
nginx-deploy-845964f5bf-k8vbj        1/1     Running     0          6m35s
nginx-deploy-845964f5bf-pxs78        1/1     Running     0          10s
nginx-deploy-845964f5bf-xk49f        1/1     Running     0          6m34s
nginx-deployment-67dfd6c8f9-5s6nz    1/1     Running     1          56d
tomcat-deployment-6c44f58b47-4pz6d   1/1     Running     1          56d
[root@kubeadm-master1 ~]# kubectl scale --replicas=2 deploy nginx-deploy
deployment.apps/nginx-deploy scaled
[root@kubeadm-master1 ~]# kubectl get rs
NAME                           DESIRED   CURRENT   READY   AGE
nginx-deploy-845964f5bf        2         2         2       61m
nginx-deploy-968b78ccf         0         0         0       41m
nginx-deployment-67dfd6c8f9    1         1         1       56d
tomcat-deployment-6c44f58b47   1         1         1       56d
[root@kubeadm-master1 ~]# kubectl get pod
NAME                                 READY   STATUS      RESTARTS   AGE
client                               1/1     Running     0          50d
my-pod                               1/1     Running     0          9d
my-pod1                              0/1     Completed   6          20h
net-test1                            1/1     Running     138        57d
net-test2                            1/1     Running     14         57d
nginx-deploy-845964f5bf-k8vbj        1/1     Running     0          7m1s
nginx-deploy-845964f5bf-xk49f        1/1     Running     0          7m
nginx-deployment-67dfd6c8f9-5s6nz    1/1     Running     1          56d
tomcat-deployment-6c44f58b47-4pz6d   1/1     Running     1          56d
资源调度 Deployment:更新的暂停与恢复
kubectl rollout pause 和 kubectl rollout resume 的详细示例。

假设你有一个名为 my-deployment 的 Deployment,它运行的是 my-app:v1 的镜像。你想要把镜像更新为 my-app:v2,但是你希望在更新之前先暂停 Deployment,以便进行一些配置的修改。

首先,用以下命令暂停 Deployment:

kubectl rollout pause deployment/my-deployment
然后,你可以修改 Deployment 的配置。比如,你可以用以下命令更换镜像:

kubectl set image deployment/my-deployment my-app=my-app:v2
此时,即使你修改了 Deployment 的配置,也不会触发新的滚动更新,因为 Deployment 正处于暂停状态。

当你准备好进行更新时,你可以用以下命令恢复 Deployment:

kubectl rollout resume deployment/my-deployment
恢复后,Deployment 控制器会开始新的滚动更新,使用你新设置的 my-app:v2 镜像。


资源调度 StatefulSet:定义一个有状态服务

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

Kubernetes提供了StatefulSet来解决这个问题,其具体如下:

StatefulSet给每个Pod提供固定名称,Pod名称增加从0-N的固定后缀,Pod重新调度后Pod名称和HostName不变。
StatefulSet通过Headless Service给每个Pod提供固定的访问域名。
StatefulSet通过创建固定标识的PVC保证Pod重新调度后还是能访问到相同的持久化数据。




在这里插入图片描述

headless service


 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 都是 Kubernetes 中用于管理存储的资源,但它们的角色和用途有所不同。

PersistentVolume (PV) 是集群中的一部分存储,它被管理员提前配置好。这可以是节点内部的某个目录,如一个本地路径(在单节点的测试环境中常见),或者是某种网络存储,如 Google Compute Engine persistent disk,AWS Elastic Block Store volume,NFS mount,或者其他存储系统。PV 是集群资源,与 Pod 的生命周期无关,即使使用 PV 的 Pod 被删除,PV 也会保留其数据。

PersistentVolumeClaim (PVC) 则是用户在 PV 中申请存储空间的请求。PVC 可以请求特定大小和访问模式的 PV。例如,用户可以请求一个大小为 10Gi 和 ReadWriteOnce 访问模式的 PV。Kubernetes 会寻找一个匹配的 PV 并将其绑定到 PVC。

简单来说,PV 是代表集群中的实际存储空间,而 PVC 是 Pod 对这个存储空间的需求或请求。



Statefulset的YAML定义与其他对象基本相同,主要有两个差异点:

serviceName指定了Statefulset使用哪个Headless Service,需要填写Headless Service的名称。
volumeClaimTemplates是用来申请持久化声明PVC ,这里定义了一个名为data的模板,它会为每个Pod创建一个PVC,storageClassName指定了持久化存储的类型,在PV、PVC和StorageClass会详细介绍;volumeMounts是为Pod挂载存储。当然如果不需要存储的话可以删除volumeClaimTemplates和volumeMounts字段。



金丝雀发布

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

参考文档:https://support.huaweicloud.com/basics-cce/kubernetes_0015.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rust 学习笔记 - Hello world

前言 本文将讲解如何完成一个 Rust 项目的开发流程,从编写 “Hello, World!” 开始,到使用 Cargo 管理和运行项目。 编写 Hello world 开始一个新项目很简单,首先,创建一个包含 main.rs 文件的 hello_world 文件夹,…

持久化:Linux利用SUID、任务计划、vim进行权限维持

目录 利用Linux SUID进行权限维持 利用Linux计划任务进行权限维持 利用Vim创建后门 利用CVE-2019-12735进行权限维持 使用Vim运行Python后门程序 利用Linux SUID进行权限维持 在前面我们使用Linux的SUID权限进行了权限提升,然后SUID还可以用来进行持久化 利用…

什么是自编码器Auto-Encoder?

来源:https://www.bilibili.com/video/BV1Vx411j78H/?spm_id_from333.1007.0.0&vd_sourcef66cebc7ed6819c67fca9b4fa3785d39 为什么要压缩呢? 让神经网络直接从上千万个神经元中学习是一件很吃力的事情,因此通过压缩提取出原图片中最具代…

LabVIEW卫星电视接收仿真系统

LabVIEW卫星电视接收仿真系统 随着卫星电视数字化的加速,传统模拟信号接收系统已无法满足需求。设计一套船载数字卫星电视接收系统,通过LabVIEW环境进行仿真实验,验证系统设计的可行性与有效性,满足数字信号接收的高精度要求&…

mysql 2-15

书写规范 #单行注释 */多行注释 -- 单行注释 mysql导入数据 基本SELECT语句 列的别名 三种方式 查询去除重复行 空值参与运算 着重号,取消关键字 查询常数,向前面添加常数 显示表结构 过滤数据 不分大小写,SQL不严谨 数值运算符 号区别 …

7.JS里表达式,if条件判断,三元运算符,switch语句,断点调试

表达式和语句的区别 表达式就是可以被求值的代码比如什么a 1 语句就是一段可以执行的代码比如什么if else 直接给B站的黑马程序员的老师引流一波总结的真好 分支语句 就是基本上所有的语言都会有的if else 语句就是满足不同的条件执行不同的代码,让计算机有条件…

使用倒模耳机壳UV村脂胶液制作舞台监听耳返入耳式耳机壳有哪些优点?

使用倒模耳机壳UV树脂胶液制作舞台监听耳返入耳式耳机壳有很多优点,具体如下: 高音质表现:通过倒模工艺制作的耳机壳能够更好地贴合耳朵,减少声音散射和反射,提高声音的清晰度和质感。这对于舞台监听来说非常重要&…

智能传感器阅读笔记-物联网用智能传感器技术的发展重点

物联网用智能传感器技术的发展重点包含边缘计算算法优化、身份认证算法优化和能量采集技术。 图1 物联网用智能传感器技术的发展重点 边缘计算算法优化 边缘计算是指在靠近物或数据源头的一侧(传感器侧),采用集检测、计算、存储、通信功能…

C语言从零实现贪吃蛇小游戏

制作不易,点赞关注一下呗!!! 文章目录 前言一. 技术要点二、WIN32API介绍三、贪吃蛇游戏设计与分析 1.游戏开始前的初始化 2.游戏运行的逻辑 总结 前言 当我们掌握链表这样的数据结构之后,我们就可以用它来…

第12集《佛说四十二章经》

请大家打开讲议第十五面,第三十一章、心寂欲除。 这几章都是佛陀指导我们如何修出离心。前面的经文讲到修出离心,这有对外境与对内心的出离。对外境的出离是指一位初学者,选择一个如法清净的道场安住,这非常重要。唯识学对这个概…

紫微斗数双星组合:天机天梁在辰戌

文章目录 前言内容总结 前言 紫微斗数双星组合:天机天梁在辰戌 内容 紫微斗数双星组合:天机天梁在辰戌 性格分析 在紫微斗数命盘中,天梁星是一颗“荫星”,能够遇难呈祥,化解凶危,主寿,主贵。…

四、JMS规范

JMS规范 一、JMS是什么二、MQ中间件对比三、JMS组成1.JMS Provider2.JMS Producer3.JMS Consumer4.JSM Message4.1 消息头4.2 消息体4.2.1 生产者4.2.2 消费者 4.3 消息属性 四、JMS可靠性1.PERSISTENT - 持久化1.1 参数设置1.2 Queue持久化1.3 Topic持久化1.3.1 持久的发布主题…

开关式稳压电源的工作原理

随着全球对能源问题的重视,电子产品的耗能问题将愈来愈突出,如何降低其待机功耗,提高供电效率成为一个急待解决的问题。传统的线性稳压电源虽然电路结构简单、工作可靠,但它存在着效率低(只有40% -50%&…

通过写代码学习AWS DynamoDB (3)- 一致性hash

简介 在本文中,我们将简单介绍一致性hash(consistent hash)的概念,以及一致性hash可以解决的问题。然后我们将在模拟的DDB实现中实现一个简单版本的基于一致性harsh实现的partition。 问题 在《通过写代码学习AWS DynamoDB &am…

.NET Core MongoDB数据仓储和工作单元模式实操

前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装,这一章节主要讲的是MongoDB用户管理相关操作实操。如:获取所有用户信息、获取用户分页数据、通过用户ID获取对应用户信息、添加用户信息、事务添加用户信息、用户信息修改、用户信息删除…

适合新手注册google谷歌账号详细步骤截图演示,记录解决 “此电话号码无法用于进行验证” 问题

目录 手机号码验证问题解决方法具体注册步骤演示1、谷歌浏览器改语言2、点击注册3、选择个人用途4、输入姓名5、输入年月日6、创建登录账号7、设置登录密码8、手机号码验证(重点)9、手机号码验证成功界面10、关联邮箱备用登录账号设置 手机号码验证问题 …

Java与JavaScript同源不同性

Java是目前编程领域使用非常广泛的编程语言,相较于JavaScript,Java更被人们熟知。很多Java程序员想学门脚本语言,一看JavaScript和Java这么像,很有亲切感,那干脆就学它了,这也间接的帮助了JavaScript的发展…

2.1.1 摄像头

摄像头 更多内容,请关注: github:https://github.com/gotonote/Autopilot-Notes.git 摄像头是目前自动驾驶车中应用和研究最广泛的传感器,其采集图像的过程最接近人类视觉系统。基于图像的物体检测和识别技术已经相当成熟&#…

wayland(xdg_wm_base) + egl + opengles——dma_buf 作为纹理数据源(五)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、EGL dma_buf import 相关的数据结构和函数1. EGLImageKHR2. eglCreateImageKHR()3. glEGLImageTargetTexture2DOES()二、egl 中 import dma_buf 作为纹理的代码实例1. egl_wayland_dmabuf_…

Crypto-RSA2

题目:(BUUCTF在线评测 (buuoj.cn)) 已知e,n,dp/(dq),c求明文: 首先有如下公式: dp ≡ d mod (p-1) ,ed ≡ 1 mod φ(n) ,npq ,φ(n)(p-1)(q-1) python代码实现如下: import libnu…