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

k8s之HPA实践——实现Web服务器的自动伸缩特性

文章目录

在生产环境中,总会有一些意想不到的事情发生,比如公司网站流量突然升高,此时之前创建的Pod已不足以支撑所有的访问,而运维人员也不可能24小时守着业务服务,这时就可以通过配置HPA,实现负载过高的情况下自动扩容Pod副本数以分摊高并发的流量,当流量恢复正常后,HPA会自动缩减Pod的数量。

安装minikube

minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --cpus=2 --memory=4096 --vm-driver=none

在 minikube 中,为激活 metrics-server , 只需要简单的执行:

minikube addons enable metrics-server

再执行 list 命令 , 也可以看得到 metrics-server 已经被激活了:

minikube addons list

在这里插入图片描述
查看metrics-server状态

kubectl get pods -n kube-system | grep metrics-server

在这里插入图片描述

先创建一个 Deployment 用于测试。我们可以使用 Nginx 来作为示例应用:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: "15m"
          requests:
            cpu: "10m"

部署这个应用:

kubectl apply -f nginx-deployment.yaml

为这个 Deployment 创建一个 HPA,基于 CPU 使用率进行自动扩展。当 CPU 使用率超过 10% 时扩展,当低于 10% 时缩减:

检查 HPA 状态:

kubectl get hpa

在这里插入图片描述
配置nginx-deployment的Service

kubectl expose deployment nginx-deployment --port=80

模拟负载测试

kubectl run -i --tty load-generator --rm --image=busybox /bin/sh

while true; do wget -q -O- http://nginx-deployment; done

在这里插入图片描述

在新的 terminal 中监控 HPA 和 Deployment:

kubectl get hpa -w
kubectl get deploy -w
kubectl top pods

在这里插入图片描述
查看pod情况

kubectl get pods

在这里插入图片描述

清理资源
当你完成测试后,记得清理资源:

kubectl delete hpa nginx-deployment
kubectl delete deployment nginx-deployment

http://www.kler.cn/a/297974.html

相关文章:

  • 报表生成---JFreeChart
  • 电驱动NVH的特点和结构
  • 写作翻译两不误!Deepl翻译,我的创意加速器
  • 3GPP协议入门——物理层基础(一)
  • springboot项目编写发送异常日志到企微工具包
  • yjs01——机器学习的过程
  • Oracle19C触发器
  • 如何理解基于架构的软件设计(ABSD)
  • 专业通风天窗厂家能提供哪些服务
  • uniapp vite3 require导入commonJS 的js文件方法
  • 嵌入式 面试单片机面试题目分析和答案 IIC总线 IIC协议 SPI总线 I2C协议讲解 SPI和IIC协议对比比较SPI的工作模式比较 IIC基本概念讲解
  • Jupyter管理内核命令
  • 深入剖析 Netty 中 TCP 粘包和拆包问题的解决之道
  • 我的第3个AI项目-Advanced RAG with Gemma, Weaviate, and LlamaIndex
  • Rocky Linux9下安装Docker和卸载Docker
  • 彻底理解防抖和节流
  • 诫子书和译文
  • 游戏加速器行业需要办理什么许可证?
  • 开放式耳机是什么意思?深入解析开放式耳机的优缺点
  • Unreal Engine——AI生成高精度的虚拟人物和环境(虚拟世界构建、电影场景生成)(一)