首页 > 其他分享 >【K8s】专题六(3):Kubernetes 稳定性之自动扩缩容

【K8s】专题六(3):Kubernetes 稳定性之自动扩缩容

时间:2024-07-01 17:01:04浏览次数:16  
标签:Kubernetes -- 扩缩容 自动 Pod K8s HPA 资源

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!

公众号二维码


一、基本介绍

在 Kubernetes 中,自动扩缩容是一种动态调整集群资源,以灵活应对应用程序资源需求变化的机制。

自动扩缩容可以分为两个层面:

  • Node 层面:根据业务规模,实现集群节点的自动扩缩容
  • Pod 层面:根据业务规模,实现 Pod 副本的自动扩缩容

自动扩缩容提供了以下好处:

  • 提高资源利用率:根据实际需求动态调整资源,避免资源浪费
  • 提高应用稳定性和可用性:自动应对流量高峰,减少服务中断的风险
  • 简化运维:减少手动干预,自动化资源管理,简化运维工作
  • 成本效益:通过合理的资源分配,降低运营成本

本文将重点介绍几种常见的 Pod 层面自动扩缩容机制。


二、HPA 机制

Pod 水平自动伸缩(Horizontal Pod Autoscaler,HPA)是 Kubernetes 中最常见的自动扩缩容方式,它可以根据 Pod 实际的负载情况自动增加或减少 Pod 副本的数量。

HPA的工作原理如下:

  • 度量指标:HPA 可以根据 CPU 利用率、内存利用率或其他自定义度量指标来触发扩缩容
  • 目标利用率:设置目标利用率,例如 CPU 的 10%,HPA 会尝试维持这个利用率水平
  • 限制 Pod 数量:可以设置最小和最大 Pod 数量的限制,防止在极端情况下资源的过度使用或不足
  • 缩放策略:HPA 支持不同的缩放策略,如快速缩放、慢速缩放和标准缩放,以适应不同的业务场景
# 创建 HPA 对象
kubectl autoscale deployment demo-deployment --cpu-percent=10 --min=1 --max=10

标签:Kubernetes,--,扩缩容,自动,Pod,K8s,HPA,资源
From: https://blog.csdn.net/2401_82795112/article/details/140103818

相关文章

  • 基于k8s实现微服务开发平台的高可用方案设计与实现
    一、项目介绍  基于k8s实现微服务高可用平台的高可用平台的系统通过对Web应用服务器运行情况的分析统计系统的建设以实现服务器运行数据监控与分析功能。微服务高可用平台是web应用高可用的核心,为了确保这些网站的稳定运行,势必需要做好对网站服务器的监控。做好对服务......
  • k8s-07-配置应用程序
    配置应用程序ConfigMap:将配置数据置于Kubernetes的顶级资源对象中,并可与其他资源定义存入同一Git仓库或者基于文件的存储系统中。配置应用程序:向容器传递命令行参数为每个容器设置自定义环境变量通过特殊类型的卷将配置文件挂载到容器中在每个容器中,Kubemete......
  • k8s-09-Deployment
    Deployment微服务化:将一个大规模系统拆分成各个独立运行的组件更新pod:直接删除所有现有的pod,然后创建新的pod。先创建新的pod,并等待它们成功运行之后,再删除旧的pod。按顺序创建新的pod,然后逐渐删除旧的pod。第1种会导致应用程序在一定的时间内不可......
  • k8s-10-StatefulSet
    StatefulSet每个实例有单独存储的多副本手动控制Pod需要手动管理,当有节点故障,需要手动创建一个ReplicaSet对应一个Pod,创建多个RS不方便,不能弹性伸缩每个Pod使用同一数据卷中的不同目录实例间相互合作,正确性很难保证,同时共享存储会成为整个应用的性能瓶颈......
  • k8s-11-Kubernetes原理
    Kubernetes原理控制平面负责控制并使得整个集群正常运行。Etcd分布式持久化存储API服务器调度器控制器管理器工作节点负责容器的运行任务kubeletkube-proxy容器运行时(Docker、rkt等)附加组件DNS服务器仪表盘Ingress控制器Heapster(容器集群监控)容器......
  • K8S学习教程(一):使用PetaExpress云服务器安装Minikube 集群
    什么是MinikubeMinikube是一款工具,主要用于在本地运行Kubernetes集群。Kubernetes开源的平台,用于自动化容器化应用的部署、扩展和管理,而Minikube使得开发人员能够在本地机器上轻松创建一个单节点的Kubernetes集群,从而方便开发、测试和学习Kubernetes。我们看下......
  • k8s-01-介绍
    K8S介绍单体应用:由很多个组件组成,这些组件紧密的耦合在一起,由于他们在同一个操作系统进程中运行,所以在开发、部署、管理都必须在同一个实体进行。即使市某个组件中小的更改,都需要重新部署整个应用。组件间缺乏严格的边界定义,相互依赖,日积月累导致系统复杂度提升。微服务:将......
  • k8s-02-开始使用
    开始使用列出集群节点kubectlgetnodes节点的详细信息kubectldescribe[node<NODE-NAME>]配置Tab补全source<(kubectlcompletionbash)运行应用kubectlrunkubia--image=luksa/kubia--port=8080--generator=run/vlreplicationcontroller列出p......
  • k8s-03-Pod
    Podpod是逻辑主机,其行为与非容器世界中的物理主机或虚拟机非常相似。此外,运行在同一个pod中的进程与运行在同一物理机或虚拟机上的进程相似,只是每个进程都封装在一个容器之中。pod定义由这么几个部分组成:首先是YAML中使用的KubemetesAPI版本和YAML描述的资源......
  • K8s摘抄及理解
    摘抄及理解目录摘抄及理解ReplicationController和PodReplicationController和ReplicaSet[1]Kubernetes核心组件创建Pod流程RBAC授权[2]Role和ClusterRoleRoleBinding和ClusterRoleBindingResourceSubject静态PodPodHook(生命周期钩子)健康检查InitContainer(初始化......