k8s之控制器详解

1.deployment:适用于无状态服务

1.功能

        (1)创建高可用pod

      (2)滚动升级/回滚

      (3)平滑扩容和缩容

2.操作命令

(1)回滚

# 回滚到上一个版本
kubectl rollout undo deployment/my-app# 回滚到特定版本(先查看历史)
kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app --to-revision=2

(2)平滑扩容和缩容

        手动扩缩容

# 扩容到 5 个副本
kubectl scale deployment/my-app --replicas=5# 缩容到 2 个副本
kubectl scale deployment/my-app --replicas=2

        自动扩缩容(HPA)

# 创建 HPA(CPU 使用率超过 50% 时扩容,最多 10 个 Pod)
kubectl autoscale deployment/my-app --min=2 --max=10 --cpu-percent=50

3.滚动升级/回滚图解(先创建出新的,然后用新的逐步替换出旧的)

4.滚动升级/回滚示例

apiVersion: apps/v1
kind: Deployment
metadata:name: my-httpd          # Deployment 名称labels:app: httpd            # 标签(用于 Service 选择器匹配)
spec:replicas: 3             # Pod 副本数(高可用)revisionHistoryLimit: 5 # 保留的历史版本数(用于回滚)strategy:type: RollingUpdate   # 滚动升级策略rollingUpdate:maxSurge: 1         # 升级时最多临时超出的 Pod 数量maxUnavailable: 0   # 升级时允许不可用的 Pod 数量(0 表示全量可用)selector:matchLabels:app: httpd          # 匹配 Pod 的标签(必须与 template 一致)template:metadata:labels:app: httpd        # Pod 标签(Service 通过此选择器关联)spec:affinity:          # 反亲和性:将 Pod 分散到不同节点podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchLabels:app: httpdtopologyKey: kubernetes.io/hostnamecontainers:- name: httpdimage: httpd:alpine   # 容器镜像ports:- containerPort: 80   # 容器监听的端口(targetPort)resources:requests:cpu: "100m"       # 最小资源请求(HPA 自动扩缩容依据)memory: "128Mi"limits:cpu: "200m"       # 资源上限memory: "256Mi"livenessProbe:        # 健康检查httpGet:path: /port: 80initialDelaySeconds: 5periodSeconds: 10

5.hpa扩缩容示例


五.HPA弹性控制器:监控控制器,实现集群的自动扩缩容设置控制器:---kind: DeploymentapiVersion: apps/v1metadata:name: mydeployspec:replicas: 1selector:matchLabels:app: deploy-httpdtemplate:metadata:labels:app: deploy-httpdspec:containers:- name: webimage: myos:httpdresources:           # 为该资源设置配额requests:          # HPA 控制器会根据配额使用情况伸缩集群cpu: 300m        # CPU 配额---kind: Service   #负载均衡apiVersion: v1metadata:name: websvcspec:type: ClusterIPclusterIP: 10.245.1.80selector:app: deploy-httpdports:- protocol: TCPport: 80targetPort: 80HPA 控制器:---kind: HorizontalPodAutoscalerapiVersion: autoscaling/v2metadata:name: myhpaspec:behavior:                # 窗口稳定期,这个期间的资源变化scaleDown:stabilizationWindowSeconds: 60scaleTargetRef:          # 指定控制器kind: DeploymentapiVersion: apps/v1name: mydeployminReplicas: 1           # 副本数量      maxReplicas: 3metrics:                 # 扩缩容设置     - type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50 #百分比,节点超过设置的cpu资源的百分之50,则扩容节点,平均资源小于值,缩容

2.statefulset:有状态的服务,(redis,mysql等)

        通过headless无头服务,暴露每个pod的唯一dns地址

        访问方式 :redis-0.redis-service.default.svc.cluster.local(0个-服务名.----)

(1) Headless Service 配置# service-headless.yaml
apiVersion: v1
kind: Service
metadata:name: redis-service  # 名称需与 StatefulSet 的 serviceName 一致
spec:clusterIP: None     # Headless Service 的关键配置selector:app: redis        # 匹配 StatefulSet 的 Pod 标签ports:- protocol: TCPport: 6379        # Service 端口,集群内部的访问端口,nodeport集群外部的访问端口targetPort: 6379   # Pod 端口,用于service,后端服务的端口(2) StatefulSet 配置
# statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: redis
spec:serviceName: "redis-service"  # 必须与 Headless Service 名称一致replicas: 3selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:alpineports:- containerPort: 6379 容器里面的端口volumeClaimTemplates:  # 每个 Pod 独立存储- metadata:name: dataspec:storageClassName: "ssd"resources:requests:storage: 10Gi

3.daemonset:守护进程,保证每个node上都运行一个容器(Prometheus日志,elk监控等)

# DaemonSet 示例:Fluentd 日志收集
apiVersion: apps/v1
kind: DaemonSet
metadata:name: fluentd
spec:selector:matchLabels:name: fluentdtemplate:metadata:labels:name: fluentdspec:containers:- name: fluentdimage: fluent/fluentdvolumeMounts:- name: varlogmountPath: /var/logvolumes:- name: varloghostPath:path: /var/log

4.job和cronjob:定时任务的pod,数据备份,定时器清理等(执行完后pod销毁)

5.HPA弹性控制器:自动扩缩容

# nginx-deployment.yamlapiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploy  # 此名称必须与HPA中的scaleTargetRef.name一致
spec:replicas: 3template:spec:containers:- name: nginximage: nginxresources:requests:cpu: "100m"# HPAapiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: nginx-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: nginx-deploy  # 必须与集群中Deployment名称一致minReplicas: 2maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50  # CPU使用率目标50%behavior:  # 扩缩容行为控制(Kubernetes 1.18+)scaleDown:  # 缩容配置stabilizationWindowSeconds: 300  # 缩容冷却时间5分钟(默认300秒)policies:- type: Percent  # 按百分比缩容value: 10      # 每次最多缩容10%的PodperiodSeconds: 60  # 每60秒评估一次- type: Pods     # 按固定数量缩容(与Percent二选一)value: 1       # 每次最多缩容1个PodscaleUp:  # 扩容配置stabilizationWindowSeconds: 60  # 扩容冷却时间1分钟(默认0秒)policies:- type: Percentvalue: 100     # 允许瞬间扩容100%的Pod(紧急情况下)periodSeconds: 15- type: Podsvalue: 4       # 每次最多扩容4个Pod

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

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

相关文章

.NET Core中的配置系统

传统配置方式文件Web.config 进行配置。ConfigurationManager类配置。.NET配置系统中支持配置方式文件配置(json、xml、ini等)注册表环境变量命令行自定义配置源Json文件配置方式实现步骤:创建一个json文件,把文件设置 为“如果较…

kafka的消费者负载均衡机制

Kafka 的消费者负载均衡机制是保证消息高效消费的核心设计,通过将分区合理分配给消费者组内的消费者,实现并行处理和负载均衡。以下从核心概念、分配策略、重平衡机制等方面详细讲解。一、核心概念理解消费者负载均衡前,需明确三个关键概念&a…

腾讯云edges on部署pages

腾讯云edges on部署pages适用场景部署方式官方文档 适用场景 Next.js Hexo 以及用React Vue等现代前端框架构建的单页应用全栈项目开发 通过Pages Function KV等能力 实现轻量化的动态服务快速部署与迭代 通过Github等代码管理平台集成 每次代码提交时自动构建和部署网站 注…

SpringAI入门及浅实践,实战 Spring‎ AI 调用大模型、提示词工程、对话记忆、Adv‎isor 的使用

上一次写AI学习笔记已经好久之前了,温习温习,这一章讲讲关于Spring‎ AI 调用大模型、对话记忆、Adv‎isor、结构化输出、自定义对话记忆‍、Prompt 模板的相关知识点。 快速跳转到你感兴趣的地方一、提示词工程(Prompt)1. 基本概…

对抗攻击-知识点

文章目录自然图像往往靠近机器学习分类器学习到的决策边界(decision boundaries)。正交方向--改变某一个不影响其它的特征降采样(Feature Downsampling)通过黑盒攻击的持续挑战,我们才能构建真正安全可靠的智能系统DCT…

7.26 作业

一、实验要求及其拓扑图: 本次实验拓扑图: 二、实验IP地址划分: 1. 公网地址(R5 作为 ISP,使用公网地址): R1 与 R5 之间接口:15.1.1.0/24,R1 侧为 15.1.1…

Kafka运维实战 14 - kafka消费者组消费进度(Lag)深入理解【实战】

目录什么是消费者 Lag举例说明:Lag 的意义:Lag 监控和查询kafka-consumer-groups基本语法常用命令示例1. 查看单个消费者组的详细信息(最常用)2. 列出所有消费者组(只显示名称)3. 列出所有消费者组&#xf…

设计模式(十三)结构型:代理模式详解

设计模式(十三)结构型:代理模式详解代理模式(Proxy Pattern)是 GoF 23 种设计模式中的结构型模式之一,其核心价值在于为其他对象提供一种间接访问的机制,以控制对原始对象的访问。它通过引入一个…

24点数学游戏(穷举法求解表达式)

摘要本毕业设计旨在利用MATLAB技术实现一个24点数学游戏,采用穷举法求解所有可能的表达式组合。通过全排列数字、枚举运算符及括号位置,结合递归回溯算法,系统能够高效地搜索所有可能的运算路径,并验证结果是否为24。实验结果表明…

【web应用】如何进行前后端调试Debug? + 前端JavaScript调试Debug?

文章目录一、前后端:后端以Debug模式运行后端项目,打断点二、前后端:前端项目在浏览器中调试三、单独前端:前端JavaScript调试1、控制台输出2、网页调试器中添加断点3、debugger关键字一、前后端:后端以Debug模式运行后…

FreeCAD开发楼梯参数化三维模型和钢格栅

根据楼梯标准图集开发各种楼梯。上行左转,上行右转,对应的栏杆也是配套2种。楼梯总成钢格栅标准里的跨度和承载 扁钢尺寸,轻松切换和修改参数。格栅综合本来格栅上横杆是冷轧扭钢筋,先绘制一个圆柱,再做一个内切正方形…

【AcWing 836题解】合并集合

AcWing 836. 合并集合 【题目描述】 在查看解析之前,先给自己一点时间思考哦! 【题解】 并查集是一种用于处理集合合并与查询问题的数据结构,通常支持以下两种操作: Find:查询一个元素所在的集合。 Union&#xff1a…

MySQL锁机制与MVCC原理剖析

在MySQL中,我们使用到了它的各种类锁;按照它的维度,有各种锁 从数据库的操作粒度有,表锁,行锁。从数据库的操作的类型,有读锁和写锁。性能上有乐观锁和悲观锁。 在上一篇文章中的事务隔离级别,需…

C++学习(线程相关)

目录 一、线程库thread 1.使用外部函数 2. 使用类的函数 3. 添加参数 二、线程库 mutex 1.使用lock()方法 2.try_lock()方法 三、线程库lock_guard 四、线程库unique_lock 1.adopt_lock 2.defer_lock() 五、线程库call_once 六、线程库promise & future 七、c…

EPOLLONESHOT 深度解析:Linux epoll 的单次触发机制

EPOLLONESHOT 深度解析:Linux epoll 的单次触发机制 EPOLLONESHOT 是 Linux epoll 接口中的高级事件标志,用于实现精确的事件单次触发控制。以下是其全面技术解析: 核心设计理念 #mermaid-svg-Xg5sCLdddqmKsvKG {font-family:"trebuchet…

深入解析MongoDB分片原理与运维实践指南

深入解析MongoDB分片原理与运维实践指南 技术背景与应用场景 随着互联网业务的高速发展,单节点MongoDB实例在数据量和访问并发上都面临瓶颈。为了解决数据存储容量受限和读写性能下降的问题,MongoDB官方提供了分片(Sharding)方案&…

基于Django的天气数据可视化分析预测系统

【86-Django】基于Django的天气数据可视化分析预测系统(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介 二、项目界面展示 三、项目视频展示 四、技术架构 五、核心功能模块 六、部署教程一、项目简介 随着全球气候变化和极端天气事件的频发&am…

怎么放大单片机输出电流

单片机作为电子系统的控制核心,其 I/O 口输出电流通常较小(一般在 10-20mA 左右),难以直接驱动继电器、电机、大功率 LED 等需要较大工作电流的外设。因此,在实际应用中需通过特定电路放大单片机输出电流,实…

站长百科类网站pbootcms模板(自适应手机端)+利于SEO优化(下载)

站长百科类网站pbootcms模板(自适应手机端)利于SEO优化 模板介绍: PbootCMS内核开发的模板,该模板属于新闻资讯、新闻博客类企业使用! 页面简洁简单,容易管理,附带测试数据! 模板特点: 1、手工书…

【Golang】Go语言函数

Go语言函数 文章目录Go语言函数Go函数特点一、函数的基本格式定义二、匿名函数三、自执行函数四、闭包函数五、延迟调用Go函数特点 无需声明原型支持不定 变参支持多返回值支持匿名函数和闭包函数也是一种类型,一个函数可以赋值给变量不支持嵌套,一个包…