基于阿里云组件指标的容器水平伸缩

前置条件:

1、阿里云ack集群
2、已配置安装好ingress的日志
参考链接:
https://help.aliyun.com/document_detail/151555.html

操作:

以nginx服务为例

step1:创建nginx的deployment

cat nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
spec:
  ports:
    - port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: nginx
  type: ClusterIP
kubectl apply -f nginx-deployment.yaml

在这里插入图片描述

step2:创建hpa

cat nginx-hpa.yaml

apiVersion: autoscaling/v2beta2   #v1只支持cpu和内存,v2支持自定义指标
kind: HorizontalPodAutoscaler
metadata:
  name: ingress-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: External
      external:
        metric:
          name: sls_ingress_qps
          selector:
            matchLabels:
              sls.project: "ex-beta"   #日志服务的日志库名称,必填。
              sls.logstore: "nginx-ingress"  #日志服务的Project名称,必填。
              sls.ingress.route: "default-nginx-80"  #必填,参数的格式为:
<namespace>-<svc>-<port>,例如default-nginx-80
        target:
          type: AverageValue
          averageValue: 1
    - type: External
      external:
        metric:
          name: sls_ingress_latency_p9999
          selector:
            matchLabels:
              # default ingress log project is k8s-log-clusterId
              sls.project: "ex-beta"
              # default ingress logstre is nginx-ingress
              sls.logstore: "nginx-ingress"
              # namespace-svc-port
              sls.ingress.route: "default-nginx-80"
              # sls vpc endpoint, default true
              # sls.internal.endpoint:true
        target:
          type: Value
          # sls_ingress_latency_p9999 > 10ms
          value: 1

在这里插入图片描述

step3:查看ingress的相关指标

kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/" | grep sls_ingress_qps
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/" | grep sls_ingress_latency_p9999

在这里插入图片描述

step4:创建ingress路由

目的是通过ingress路由访问的请求流转到sls中的ingress-nginx中,进而为hpa获取数值做铺垫。

1> 阿里云界面创建路由
在这里插入图片描述
在这里插入图片描述
2> 访问测试
在这里插入图片描述

step5:压测访问

压测中
在这里插入图片描述
压测中的ingress的大盘展示
在这里插入图片描述
压测结束
在这里插入图片描述
静默期过后,pod会自动收缩
在这里插入图片描述

分析:

如果hpa服务正常,但是压测一直没反应,需要排查
第一、查看sls的ingress-nginx日志,查看是否有日志
第二、ingress的概览界面,然后通过浏览器的’检查’(windows是F12)-网络-然后查看alibaba-log-configuration.json,查看配置的logstore是否是我们在nginx-hpa/.yaml中配置的,如果不一样,显然是hpa中配置错误。
在这里插入图片描述
都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值