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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值