K8S哲学 - statefulSet 灰度发布

embedded/2024/9/25 5:26:15/

kubectl  get

   - 获取资源及配置文件   kubectl get  resource 【resourceName  -o=yaml】 

 kubectl  create  

   - 指定镜像创建或者 指定文件创建

       kubectl create  resource  【resourceName】 --image=myImage 【-f my.yaml】

 kubectl  delete

 kubectl describe resource resourceName

 kubectl  rollout histroy resource resourceName 【--revision 版本、修订】

 kubectl rollout  pause/resume resource resourceName

 kubectl edit  resource resourceName

 kubectl set property   resource resourceName value=myVAalue

 kubectl scale  resource resourceName  --replicas=num

创建 statefulSet    kind: StatefulSet

statusfulSet.yaml

---
apiVersion: v1
kind: Service
metadata:name: nginxlabels:app: nginx
spec: ports:- port: 80name: webclusterIP: Noneselector: app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata: name: web
spec: serviceName: nginxreplicas: 2selector: matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec: containers:- name: nginximage: nginxports: - containerPort: 80name: webvolumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata: name: wwwspec: accessModes: ['ReadWriteOnce']resources:requests:storage: 500Mi 

statefulSet  的 pod 的 dns 的命名方式:

statefulSetName-[0、1、2 ......]-namespace-svc.cluster.local

 扩容和缩容

kubectl scale sts  statefulSetName  --replicas=num

 镜像更新

1、通过set

kubectl set image sts/web  nginx=nginx:1.25.5

 2、通过 patch

3、更新模式

   -、 rollingUpdate (default)

利用 partition (分区) 实现 灰度发布 (金丝雀发布)

修改 partition 的值为想要的 更新范围 , 目前为 3

当前 5个 pod ng 版本为 1.25.5

修改 sts web 的 image 为 nginx

再次查看  web-0 web-1 web-2 的 依旧为 ng:1.25.5

但是 web-3 web-4 已改为 nginx

后续进一步 扩大发布范围 继续修改  partition的值 即可   2 -1 -0

k8s 的 partition 只和当前的配置文件的内容有关联、现在 image: nginx 如果修改 partition: 0
 那么所有的 pod 的 image 都会变成 image: nginx
    -、onDelete 
updateStrategy:type: onDelete

修改后不会有任何变化

只有 删除 pod 时  k8s 会立即 创建一个新的 pod ,pod配置为 修改后的  配置

目前 pod  image 都是 nginx

修改为

nginx:1.25.5

updateStrategy: OnDelete

删除前查看 web-1 

删除后查看 web-1

是否级联删除

当删除 父级资源 时默认会删除 子级资源

deployment -> pod

statefulSet - > pod

--cascsde = true(default)

 


http://www.ppmy.cn/embedded/29582.html

相关文章

【网络通信】Windows搭建RTMP视频流服务器(含推流/拉流详细教程)

RTMP(Real-Time Messaging Protocol)是一种用于实时流媒体传输的网络协议,主要用于传输音频、视频和数据。RTMP最初是由Adobe Systems公司开发的,用于其Flash平台和Adobe Media Server,但随着技术的发展和开源社区的推…

asp爬虫代码简单示例

要创建一个ASP爬虫&#xff0c;你可以使用ASP内置的对象XMLHTTP或ServerXMLHTTP来发送HTTP请求&#xff0c;获取网页内容&#xff0c;然后使用ASP的内置对象HTMLFILE来解析HTML内容。以下是一个简单的ASP爬虫示例代码&#xff1a; <%初始化变量 Dim http Dim url Dim html …

常见面试题:XSS和CSRF原理及防范方法

XSS和CSRF原理及防范方法 XSS 跨站脚本攻击 浏览器向服务器请求的时候被注入脚本攻击 类型恶意代码有效的位置插入点反射型URLHTML存储型服务端数据库HTML基于DOM服务端数据库/客户端存储/URL前端javascript 反射型XSS&#xff08;非持久性跨站脚本攻击&#xff09; 攻击方法…

Github 2024-05-02 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-02统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10PureBasic项目1Kubernetes: 容器化应用程序管理系统 创建周期:3618 天开发语言:Go协议类型:Apache License 2.0Star数量:106913 个…

Python与OpenCV:图像处理与计算机视觉实战指南

前言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它包含了数百种计算机视觉算法&#xff0c;包括图像处理、视频分析、物体检测、面部识别等。结合Python语言的强大功能&#xff0c;OpenCV可以用于…

聊聊持续测试

这是鼎叔的第九十六篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 本人新书《无测试组织-测试团队的敏捷转型》已出版&#xff08;机械工业出版社&#xff09;。 如果在测试部门只能推行一个技术建设项目&#xff0c;那鼎叔就会选择“持续测试”。 持续测…

http 协议的状态码有哪些?含义是什么?

http 协议的状态码有哪些&#xff1f;含义是什么&#xff1f; 一、http 协议的状态码类别二、常见的http 协议状态码及其含义 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; http 协议是互联网上应用最为广泛的协议之一&#xff0c;而http …

树莓派控制步进电机(下):软件编程

目录 说明 软件编程 树莓派的RPI编程 基本测试程序 参考文献 说明 在上一篇博文中我们介绍了树莓派控制步进电机所需要的硬件连接&#xff0c;本篇博文主要介绍软件编程。这里我们使用的是树莓派4B开发板&#xff0c;步进电机为6线两相步进电机&#xff0c;驱动器采用的是…