k8s使用keda基于prometheus指标(pod的limits内存和cpu)对pod扩容
keda官网地址:
https://keda.sh/keda与k8s版本对应

安装keda(根据自己的k8s版本安装对应的keda)
kubectl apply --server-side -f keda-2.18.3.yaml
kubectl apply --server-side -f keda-2.18.3-core.yaml
创建自动扩容
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: 自定义名称
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: deployment名称
minReplicaCount: 1
maxReplicaCount: 10
triggers:
# CPU 触发器
- type: prometheus
name: cpu
metadata:
serverAddress: http://prometheus-k8s.monitoring.svc.cluster.local:9090
query: |
max(
sum(rate(container_cpu_usage_seconds_total{container!="POD", container!="", pod=~"pod名称前缀-.*"}[2m])) by (pod)
/
sum(kube_pod_container_resource_limits{resource="cpu", pod=~"pod名称前缀-.*"}) by (pod)
) * 100
threshold: '80'
metricType: Value
# 内存触发器
- type: prometheus
name: memory
metadata:
serverAddress: http://prometheus-k8s.monitoring.svc.cluster.local:9090
query: |
max(
sum(container_memory_working_set_bytes{container!="POD", container!="", pod=~"pod名称前缀-.*"}) by (pod)
/
sum(kube_pod_container_resource_limits{resource="memory", pod=~"pod名称前缀-.*"}) by (pod)
) * 100
threshold: '80'
metricType: Value最终的结果
