当前位置: 首页 > news >正文

那些做面点的网站好猫眼网站建设

那些做面点的网站好,猫眼网站建设,新闻热点事件2022,奥美广告公司【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容#xff1f; 目录 1 概念 1.1 什么是HPA1.2 Deployment 与 HPA 的关系 1.2.1 工作原理 1.3 StatefulSet 与 HPA 的关系 1.3.1 工作原理 2 实验案例#xff1a;HPA 控制 StatefulSet 进行扩缩容 2.1 部署一个有状态…【Kubernetes知识点】HPA如何控制不同的资源实现自动扩缩容 目录 1 概念 1.1 什么是HPA1.2 Deployment 与 HPA 的关系 1.2.1 工作原理 1.3 StatefulSet 与 HPA 的关系 1.3.1 工作原理 2 实验案例HPA 控制 StatefulSet 进行扩缩容 2.1 部署一个有状态应用2.2 创建 HPA2.3 验证HPA扩缩容 3 总结 3.1 注意事项 ❤️ 摘要Kubernetes 作为当前最流行的容器编排平台提供了 Horizontal Pod Autoscaler (HPA) 以便根据资源利用情况自动调整 Pod 副本数。本文将深入探讨 HPA 如何自动扩缩容 Deployment 和 StatefulSet并通过实验演示其工作原理。 ❤️ 本文内容关联文章 《一文读懂Deployment以及实践攻略》《一文读懂StatefulSet以及实践攻略》《一文读懂HPA弹性扩展以及实践攻略》 1 概念 1.1 什么是HPA ❔ 说明如果想更好理解下面的描述 建议先看《一文读懂HPA弹性扩展以及实践攻略》了解HPA弹性扩展的基本原理。 Horizontal Pod Autoscaler (HPA) 是 Kubernetes 中的一个控制器它通过监控 Pod 的资源使用情况如 CPU 或内存使用率根据设定的指标自动调整 Pod 副本的数量。HPA 常用于解决云原生应用中负载波动的问题确保在高负载时增加 Pod 副本以提升服务能力在负载下降时减少 Pod 副本以节约资源。 HPA 可以结合 Deployment 和 StatefulSet 这两种常见的 Kubernetes 资源类型分别应对无状态和有状态应用的弹性扩缩容需求。 1.2 Deployment 与 HPA 的关系 ❔ 说明如果想更好理解下面的描述 建议先看《一文读懂Deployment以及实践攻略》了解Deployment与Replicas以及Deployment的滚动更新。 当为 Deployment 配置了自动扩缩容HPA 接管 Deployment 通过调节replicas字段来实现 Pod 副本数量的控制。当 HPA 检测到负载变化时它会自动调整 Deployment 的副本数。 在滚动更新期间Deployment 控制器会负责通知底层的 ReplicaSets再由ReplicaSet 管理 Pod 副本。当发生滚动更新时Deployment 控制器通过调整新旧版本的 ReplicaSets 副本数确保在更新期间的总副本数满足 HPA 的要求。例如如果 HPA 设定 Deployment 需要 10 个副本Deployment 控制器会动态调整新旧版本的 Pod 数量使它们的总数一直为 10。 1.2.1 工作原理 HPA 在控制 Deployment 时主要通过如下步骤工作 指标采集HPA 从 Metrics Server 或者 Prometheus 等监控系统中获取 Pod 的资源使用情况如 CPU 或内存利用率。扩缩容计算HPA 根据设定的目标值例如目标 CPU 使用率与实际的资源使用情况进行对比计算需要增加或减少的 Pod 副本数量。副本调整HPA 调用 Deployment 的 API 更新其 replicas从而增加或减少实际运行的 Pod 数量。监控和调整HPA 持续监控资源使用情况周期性地进行扩缩容操作以保持系统的平稳运行。 1.3 StatefulSet 与 HPA 的关系 ❔ 说明如果想更好理解下面的描述 建议先看《一文读懂StatefulSet以及实践攻略》了解StatefulSet的滚动更新。 如果为 StatefulSet 配置了 HPAHPA 直接管理 StatefulSet 的 Pod 数量replicas 字段。但StatefulSet 不同于 DeploymentStatefulSet 是直接管理一组有状态的 Pod而不像 Deployment 通过ReplicaSet 作为中间资源管理一组无状态的应用。所以在滚动更新过程中StatefulSet 需要同时参与处理 Pod 的更新和副本数的动态调整保证每个 Pod 在 StatefulSet 中有固定的身份和顺序。 1.3.1 工作原理 HPA 在控制 StatefulSet 时主要通过如下步骤工作 指标采集HPA 从 Metrics Server 或者 Prometheus 等监控系统中获取 Pod 的资源使用情况如 CPU 或内存利用率。扩缩容计算HPA 根据设定的目标值例如目标 CPU 使用率与实际的资源使用情况进行对比计算需要增加或减少的 Pod 副本数量。副本调整 不同于无状态的 DeploymentStatefulSet 的 Pod 是有序创建和删除的每个 Pod 都有一个固定的身份和独立的数据卷。例如扩容时新 Pod 会按顺序从 pod-0 增加到 pod-1、pod-2 依次类推。缩容时则是相反StatefulSet 会从最后一个 Pod 开始有序删除。状态保持 由于 StatefulSet 通常管理有状态应用如数据库这些应用需要保留数据持久化。即使 Pod 被删除存储卷也不会被删除而是在重新启动或扩容时重新附加到相应的 Pod。因此在扩缩容时HPA 不会影响 StatefulSet 中 Pod 的状态或数据。 2 实验案例HPA 控制 StatefulSet 进行扩缩容 ❔ 环境说明 Kubernetes 集群已安装Metrics Server已安装 ❔ 说明《一文读懂HPA弹性扩展以及实践攻略》文章实践案例是“HPA自动扩缩Deployment应用的案例”所以下面演示HPA 自动扩缩 StatefulSet。 2.1 部署一个有状态应用 创建一个简单的 StatefulSet例如 Redis。 --- apiVersion: v1 kind: Service metadata:name: redis-service spec:clusterIP: Noneselector:app: redisports:- port: 6379name: redis--- apiVersion: apps/v1 kind: StatefulSet metadata:name: redis spec:serviceName: redisreplicas: 1minReadySeconds: 20selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: harbor.zx/hcie/redis:7.2.4resources:requests:cpu: 100mlimits:cpu: 300mports:- containerPort: 6379volumeMounts:- name: redis-storagemountPath: /datavolumeClaimTemplates:- metadata:name: redis-storagespec:storageClassName: nfs-classaccessModes: [ ReadWriteOnce ]resources:requests:storage: 1Gi 创建Redis应用 kubectl apply -f redis-hpa.yaml 创建成功输入如下 service/redis created statefulset.apps/redis created查看redis-service信息 kubectl describe svc redis-service 输出如下 Name: redis-service Namespace: default Labels: none Annotations: none Selector: appredis Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: None IPs: None Port: redis 6379/TCP TargetPort: 6379/TCP Endpoints: 172.16.135.254:6379 Session Affinity: None Events: none ❔ 说明 redis-0已经成功关联redis-service 2.2 创建 HPA 为该 StatefulSet 配置 HPA编制hpa部署文件 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata:name: redis-hpa spec:# 关联StatefulSet资源scaleTargetRef:apiVersion: apps/v1kind: StatefulSetname: redisminReplicas: 1maxReplicas: 5targetCPUUtilizationPercentage: 50创建HPA资源 kubectl apply -f autoscaling.yaml 创建成功输入如下 horizontalpodautoscaler.autoscaling/redis-hpa created 查看hpa信息 kubectl describe hpa redis-hpa输出如下 Name: redis-hpa Namespace: default Labels: none Annotations: none CreationTimestamp: Fri, 20 Sep 2024 17:00:39 0800 Reference: StatefulSet/redis Metrics: ( current / target )resource cpu on pods (as a percentage of request): 2% (2m) / 50%Min replicas: 1 Max replicas: 5StatefulSet pods: 1 current / 1 desiredConditions:Type Status Reason Message---- ------ ------ -------AbleToScale True ReadyForNewScale recommended size matches current sizeScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from cpu resource utilization (percentage of request)ScalingLimited False DesiredWithinRange the desired count is within the acceptable range❔ 说明目前hpa已经正常获取redis的pod负载数据但现在负载比较低。 2.3 验证HPA扩缩容 模拟对 Redis 的高负载请求redis镜像自带的 Redis Benchmark 工具进行测试。 kubectl run -it --rm --restartNever --imageharbor.zx/hcie/redis:7.2.4 redis-test -- redis-benchmark -h redis-service -p 6379 -c 50 -n 100000使用 kubectl get hpa 监控扩缩容效果 kubectl get hpa 观察到负载从2%到296% 副本数扩展到最大5个 NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE redis-hpa StatefulSet/redis 2%/50% 1 5 1 44m redis-hpa StatefulSet/redis 125%/50% 1 5 1 44m redis-hpa StatefulSet/redis 296%/50% 1 5 3 44m redis-hpa StatefulSet/redis 277%/50% 1 5 5 44m redis-hpa StatefulSet/redis 256%/50% 1 5 5 45m redis-hpa StatefulSet/redis 239%/50% 1 5 5 45m 暂停redis-benchmark测试再等待一会默认缩容间隔5分钟 redis-hpa StatefulSet/redis 2%/50% 1 5 5 47m redis-hpa StatefulSet/redis 2%/50% 1 5 5 52m redis-hpa StatefulSet/redis 2%/50% 1 5 2 52m redis-hpa StatefulSet/redis 2%/50% 1 5 1 52m ❔说明 可以观察到StatefulSet缩减到1个了。在负载上升时HPA 会逐步增加 StatefulSet 的 Pod 数量并以有序的方式启动新 Pod当负载减小时Pod 数量会逐步减少。 3 总结 通过本文的介绍和实验我们了解了 HPA 如何通过监控 CPU 或内存等资源利用率动态调整 Deployment 和 StatefulSet 的原理实践了 StatefulSet的自动扩缩容。 3.1 注意事项 指标收集准确性确保 Metrics Server 或 Prometheus 能够准确采集 Pod 的资源使用情况否则可能导致 HPA 失效。资源配置为容器设置合理的 requests 和 limits以确保 HPA 能够正常工作。StatefulSet 扩容速度由于需要保持有序性StatefulSet 的扩缩容速度可能较 Deployment 慢应根据应用需求进行调整。 通过这些实验我们可以更好地理解 Kubernetes 中 HPA 的强大功能并根据实际业务场景选择合适的扩缩容策略。
http://www.dnsts.com.cn/news/15592.html

相关文章:

  • 网站ui设计怎么做移动端开发语言
  • 站点推广促销中小企业网站制作推广方法
  • 中文wordpress网站模板下载失败郑州建站多少钱
  • 天津地区个人网站备案淘宝网站策划怎么做
  • 大型网站建设的主要问题在哪找可以做网站的
  • 莆田的外贸网站深圳宝安区怎么找服务
  • 铜川微网站建设php搭建网站后台
  • 网站开发职位网站开发中需要解决的技术问题
  • 广州网站建设功能开发做一个网站需要多少钱
  • 网站维护 北京论坛门户网站建设运营费用
  • 怎样用代码建设一个网站wordpress分享型主题模板下载
  • c net 做网站好吗html做网站
  • 北海网站优化wordpress错误代码500
  • 中文单页面网站模板深圳公共交易资源平台
  • 网站建设的作用和用途重庆龙华网站建设公司
  • flash+xml网站模板网站 宗旨
  • 德兴网站建设wordpress用户页
  • 洛阳专业网站设计开发制作建站公司海淘网站建设
  • 做的网站怎么样才能再网上看到单一产品销售网站建设模板
  • 电子政务网站建设的挑战张家港公司网站建设
  • 网站设计郑州做网站服务器软件
  • 网站开发h5技术html网页设计作品中国传统文化
  • 建设银行公户网站如何制作微信图文链接
  • 网站设计加油站asp网站合法
  • 建设一个用教育网站徐州建网站
  • w网站链接如何做脚注网站备案要钱吗
  • 郑州网站建设e00注册网站会员需要详细填写
  • 网站备案网站简介wordpress 免费摄影主题
  • 服装网站的建设方案公司网页网站建设+ppt模板下载
  • 电商类网站开发项目流程北京前端哪个培训机构好