KEDA对HPA的扩展

https://zhuanlan.zhihu.com/p/415594861
https://zhuanlan.zhihu.com/p/379361295
https://www.cnblogs.com/larrydpk/p/14953946.html 比较好
https://github.com/kedacore/keda
https://blog.csdn.net/qq_50573146/article/details/124925310 生产环境中HPA的使用注意事项

其它HPA参考Crane EHPA https://blog.csdn.net/yunxiao6/article/details/126666885

keda支持以下metrics
在这里插入图片描述

一、下载和安装方法:

mkdir /data/keda -p
cd /data/keda
wget https://github.com/kedacore/keda/releases/download/v2.7.1/keda-2.7.1.yaml

kubectl apply -f keda-2.7.1.yaml

#以下两个yaml文件为测试作准备
wget https://raw.githubusercontent.com/LarryDpk/pkslow-samples/master/kubernetes/keda/src/main/kubernetes/deploy-consumer.yaml

wget https://raw.githubusercontent.com/LarryDpk/pkslow-samples/master/kubernetes/keda/src/main/kubernetes/deploy-publisher-job.yaml

二、部暑(以rabbitmq进行测试)

#添加 kubernetes-dashboard helm chart
helm repo add bitnami https://charts.bitnami.com/bitnami

# 更新下仓库
helm repo update 

#指定变量
pro=rabbitmq
chart_version=9.1.4

mkdir -p /data/$pro
cd /data/$pro

#下载charts
helm pull bitnami/$pro --version=$chart_version

#提取values.yaml文件
tar zxvf $pro-$chart_version.tgz --strip-components 1 $pro/values.yaml 

cat > /data/$pro/start.sh << EOF

helm upgrade --create-namespace --install --wait $pro $pro-$chart_version.tgz \
-f values.yaml \
-n base

EOF
  • 配置values.yaml
    #选择部分配置
auth:
  username: rabbitmq
  password: "Rabbitmq123456"
  erlangCookie: "34534flkWERfs223S23dqaEE"
replicaCount: 1
resources:
  requests:
    cpu: 1000m
    memory: 2Gi
persistence:
  enabled: false     #当有存储卷时设置为true
ingress:
  enabled: true
  hostname: rabbitmq.kids.cn
#需要关闭两个health,不然启动不成功
livenessProbe:
  enabled: true
readinessProbe:
  enabled: true
metrics:
  enabled: true
  • 启动
bash /data/rabbitmq/start.sh
  • 验证
kubectl get all -n base

NAME             READY   STATUS    RESTARTS   AGE
pod/rabbitmq-0   1/1     Running   0          16m

NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                 AGE
service/rabbitmq            ClusterIP   10.128.125.10   <none>        5672/TCP,4369/TCP,25672/TCP,15672/TCP   16m
service/rabbitmq-headless   ClusterIP   None            <none>        4369/TCP,5672/TCP,25672/TCP,15672/TCP   16m

NAME                        READY   AGE
statefulset.apps/rabbitmq   1/1     16m

三、验证keda

cat > rabbit-comsuer.yaml << 'EOF'
apiVersion: v1
kind: Secret
metadata:
  name: rabbitmq-consumer-secret
  namespace: base
data:
  RabbitMqHost: YW1xcDovL3JhYmJpdG1xOlJhYmJpdG1xMTIzNDU2QHJhYmJpdG1xLmJhc2Uuc3ZjLmNsdXN0ZXIubG9jYWw6NTY3Mg==

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq-consumer
  namespace: base
  labels:
    app: rabbitmq-consumer
spec:
  selector:
    matchLabels:
      app: rabbitmq-consumer
  template:
    metadata:
      labels:
        app: rabbitmq-consumer
    spec:
      containers:
        - name: rabbitmq-consumer
          image: jeffhollan/rabbitmq-client:dev
          imagePullPolicy: Always
          command:
            - receive
          args:
            - "amqp://rabbitmq:Rabbitmq123456@rabbitmq.base.svc.cluster.local:5672"

---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: rabbitmq-consumer
  namespace: base
spec:
  scaleTargetRef:
    name: rabbitmq-consumer
  pollingInterval: 5 # Optional. Default: 30 seconds
  cooldownPeriod: 30 # Optional. Default: 300 seconds
  maxReplicaCount: 30 # Optional. Default: 100
  triggers:
    - type: rabbitmq
      metadata:
        queueName: hello
        queueLength: "5"
      authenticationRef:
        name: rabbitmq-consumer-trigger

---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: rabbitmq-consumer-trigger
  namespace: base
spec:
  secretTargetRef:
    - parameter: host
      name: rabbitmq-consumer-secret
      key: RabbitMqHost
EOF
kubectl apply -f rabbit-comsuer.yaml
cat > /data/rabbitmq/rabbitmq-publisher.yaml << 'EOF'
apiVersion: batch/v1
kind: Job
metadata:
  name: rabbitmq-publish
  namespace: base
spec:
  template:
    spec:
      containers:
        - name: rabbitmq-client
          image: jeffhollan/rabbitmq-client:dev
          imagePullPolicy: Always
          command: ["send",  "amqp://rabbitmq:Rabbitmq123456@rabbitmq.base.svc.cluster.local:5672", "3000000"]
      restartPolicy: Never
  backoffLimit: 4
EOF
kubectl apply -f rabbitmq-publisher.yaml
  • 创建了很30个consumer进行消费
    在这里插入图片描述
    HPA查询,pod已扩容到30个
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值