资源调度 —— HPA:Pod基于负载指标自动水平扩容 / 缩容
1.K8S基础2.搭建 Kubernetes 集群 —— 搭建方案 kubeadm3.搭建 Kubernetes 集群 —— 命令行工具 kubectl4.搭建 Kubernetes 集群 —— API 概述5.深入Pod —— 配置文件6.深入Pod —— 探针7.深入Pod —— 生命周期 及 PreStop事件的应用8.资源调度 —— Label 和 Selector:标签和选择器9.资源调度 —— Deployment(针对部署的无状态应用)10.资源调度 —— StatefulSet(针对部署的有状态应用)11.资源调度 —— DaemonSet:守护进程应用场景(Fluent日志收集程序)
12.资源调度 —— HPA:Pod基于负载指标自动水平扩容 / 缩容
13.服务发现 —— Service(主要用于服务内的网络共享)14.服务发现 —— Ingress(用于外部服务的发现和统一入口)15.配置与存储 —— 配置管理16.配置与存储 —— 持久化存储17.高级调度 —— CronJob计划任务、初始化容器 InitContainer18.高级调度 —— 污点、容忍19.高级调度 —— 亲和力(Affinity)20.身份认证与权限21.Helm 包管理器通过观察 pod 的 cpu、内存使用率或自定义 metrics 指标进行自动的扩容或缩容 pod 的数量。
通常用于 Deployment,不适用于无法扩/缩容的对象,如 DaemonSet
控制管理器每隔30s(可以通过–horizontal-pod-autoscaler-sync-period修改)查询metrics的资源使用情况
一、开启指标服务
yum install -y wget
# 下载 metrics-server 组件配置文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.2/components.yaml -O metrics-server-components.yaml
# 修改镜像地址为国内的地址
sed -i 's/k8s.gcr.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml
grep image metrics-server-components.yaml
# 修改容器的 tls 配置,不验证 tls,在 containers 的 args 参数中增加 --kubelet-insecure-tls 参数
# 安装组件
kubectl apply -f metrics-server-components.yaml
# 查看 pod 状态
kubectl get pods --all-namespaces | grep metrics
二、cpu、内存指标监控
实现 cpu 或内存的监控,首先有个前提条件是该对象必须配置了 resources.requests.cpu 或 resources.requests.memory 才可以,可以配置当 cpu/memory 达到上述配置的百分比后进行扩容或缩容
创建一个 HPA:
- 1、先准备一个好一个有做资源限制的 deployment
- 2、执行命令
kubectl autoscale deploy nginx-deploy --cpu-percent=20 --min=2 --max=5
- 3、获取 HPA 信息
kubectl get hpa
测试:找到对应服务的 service,编写循环测试脚本提升内存与 cpu 负载
while true; do wget -q -O- http://10.103.241.84 > /dev/null ; done
可以通过多台机器执行上述命令,增加负载,当超过负载后可以查看 pods 的扩容情况
kubectl get pods
查看 pods 资源使用情况
kubectl top pods
扩容测试完成后,再关闭循环执行的指令,让 cpu 占用率降下来,然后过 5 分钟后查看自动缩容情况
查看 hpa 执行过程
kubectl describe hpa nginx-deploy
三、自定义 metrics
- 控制管理器开启–horizontal-pod-autoscaler-use-rest-clients
- 控制管理器的–apiserver指向API Server Aggregator
- 在API Server Aggregator中注册自定义的metrics API
合集:
Kubernetes
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)