แแแกแจแขแแแฃแ แแแ แแ แแก แแแแแแ แ แแแแฎแแแแ แฆแ แฃแแแแแแแ แแแแแแแชแแแแแกแแแแก. Kubernetes-แแ แแแแแแแชแแแก แแแกแจแขแแแแ แแแ แแกแแแแแ แแแ แขแแแแ, แ แแแแ แช แ แแแแแแแแแก แ แแแแแแแแแก แแแแ แแ แจแแกแแแแแแกแ แแแแแแแแแแกแแแแก แแ ReplicaSet
โ แแแแ แแ แแก แฎแแแแ แแ แแชแแกแแ.
Kubernetes แกแแจแฃแแแแแแก แแซแแแแก แแแแแแแชแแแแแก แแแขแแแแขแฃแ แแ แแแกแจแขแแแแ แแแแก (แแแฃ Pods แแแแแแแแแแก แแ แแก แแ ReplicaSet
) แแแแแแ แแชแแฃแแแ Horizontal Pod Autoscaler แกแแแชแแคแแแแชแแแก แแแแแงแแแแแแ. แแแขแแแแขแฃแ แ แกแแแแแ แแแแก แแแแฃแแแกแฎแแแแ แแ แแขแแ แแฃแแแ CPU-แแก แแแแแงแแแแแแก แแแขแ แแแ (แ แแกแฃแ แกแแแแก แแแขแ แแแ), แแแแ แแ แแฅแแแ แจแแแแซแแแแ แแแแแแแจแแ แแ แแแ แแแแฃแแ แแ แแแ แแแแ แแแฌแแแแแฃแแ แแแขแ แแแ.
แแฃแแแ
แแแแแแแก แฐแแ แแแแแขแแแฃแ แ แแแขแแกแแแแแ แแแแก แแแชแแแแ แแแแแแงแแแแแ Kubernetes Event Driven Autoscaling (KEDA), แฆแแ แแแแแก Kubernetes แแแแ แแขแแ แ. แแก แแฃแแแแ แแแแ แแแขแแแ แแ แแแแ Horizontal Pod Autoscaler-แแแ, แ แแแ แฃแแ แฃแแแแแงแแก แฃแฌแงแแแขแ แแแขแแแแขแฃแ แ แกแแแแแ แแแ (แแแ แจแแ แแก แแฃแแแแแ) แแแแแแแแแแ แแ แแแแขแแ แแแฃแแ แกแแแฃแจแแ แแแขแแแ แแแแกแแแแก. แแแแ แฎแแแแแกแแฌแแแแแแ
แกแแกแขแแแแก แแแแแ แแแแแฎแแแแ
แแแแแ แแแ แแแแฉแแแแแแก แแแแแ แแฆแฌแแ แแก, แแฃ แ แแแแ แแฃแจแแแแก แงแแแแแคแแ แ:
- แแแแแแแชแแ แฃแแ แฃแแแแแงแแคแก HTTP แฐแแขแแแแก แ แแแแแแแแแก แแแขแ แแแแก แแ แแแแแแก แคแแ แแแขแจแ.
- แแ แแแแแ แแแแคแแแฃแ แแ แแแฃแแแ แแ แแแขแ แแแแก แจแแกแแแ แแแแแแแ.
- แแ แแแแแแก แกแแแแแ แ KEDA-แจแ แแแแคแแแฃแ แแ แแแฃแแแ แแแแแแแชแแแก แแแขแแแแขแฃแ แแ แแแกแจแขแแแแ แแแแแ HTTP แฐแแขแแแแก แ แแแแแแแแแก แแแฎแแแแแ.
แแฎแแ แแ แแแขแแแฃแ แแ แแแขแงแแแ แแแแแแฃแแ แแแแแแแขแแก แจแแกแแฎแแ.
KEDA แแ แแ แแแแแ
แแ แแแแแ แแ แแก แฆแแ แแแแแก แกแแกแขแแแแก แแแแแขแแ แแแแแกแ แแ แแแคแ แแฎแแแแแแก แแแกแขแ แฃแแแแขแแ แแฃแแแก แแแฌแแแ
KEDA แแฎแแ แก แฃแญแแ แก แกแแแแแ แแก แแแแชแแคแชแแแก - แแก แแแฅแแแแแแก แ แแแแ แช แฎแแแ KEDA-แกแ แแ แแแ แ แกแแกแขแแแแก แจแแ แแก. แกแแแแแ แแก แแแแแ แแแ แกแแแชแแคแแแฃแ แแ แแแแแแฃแแ แกแแแแแแ แกแแกแขแแแแกแแแแก แแ แแแแแฆแแแก แแแแแชแแแแแก แแแกแแแ. แจแแแแแ KEDA แแงแแแแแก แแแ แแแขแแแแขแฃแ แ แกแแแแแ แแแแก แแแกแแแแแขแ แแแแแแแ.
แกแแแแแ แแแ แแฎแแ แก แฃแญแแ แแ แแแแแชแแแแ แแ แแแแ แฌแงแแ แแก, แแแแแแแแแ, แแแคแแ, แ แแแแกแ, แแ แแแแแ. แแแฃ, KEDA แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก Kubernetes-แแก แแแแแแแแแแก แแแขแแแแขแฃแ แแ แกแแแแแ แแแแก แแแแแแ แแ แแแแแแก แแแขแ แแแแก แแ แแขแแ แแฃแแแแแก แแแแแงแแแแแแ.
แกแแขแแกแขแ แแแแแแแชแแ
Golang แขแแกแขแแก แแแแแแแชแแ แฃแแ แฃแแแแแงแแคแก แฌแแแแแแก HTTP-แแ แแ แแกแ แฃแแแแก แแ แแแแจแแแแแแแแ แคแฃแแฅแชแแแก:
- แแงแแแแแก Prometheus Go แแแแแแขแแก แแแแแแแแแแแก, แ แแแ แแแแแแกแขแแแแ แแ แแแแแแแชแแ แแ แฃแแ แฃแแแแแงแแก http_requests แแแขแ แแแ, แ แแแแแแช แจแแแชแแแก แแแ แขแงแแแแแก แ แแแแแแแแแก. แกแแแแแแ แฌแแ แขแแแ, แกแแแแช แฎแแแแแกแแฌแแแแแแ แแ แแแแแแก แแแขแ แแแ, แแแแแแ แแแแก URI-แแ
/metrics
.var httpRequestsCounter = promauto.NewCounter(prometheus.CounterOpts{ Name: "http_requests", Help: "number of http requests", })
- แแแแฎแแแแแก แกแแแแกแฃแฎแแ
GET
แแแแแแแชแแ แแ แแแก แแแกแแฆแแแแก แแแแจแแแแแแแแก (access_count
) แ แแแแกแจแ. แแก แแ แแก แแแ แขแแแ แแแ แกแแแฃแจแแแก แจแแกแแกแ แฃแแแแแแ, แ แแแแ แช HTTP แแแแแฃแจแแแแแแแก แแแฌแแแ แแ แแกแแแ แจแแแแแฌแแแ แแ แแแแแแก แแแขแ แแแ. แแแขแ แแแฃแแ แแแแจแแแแแแแ แฃแแแ แแงแแก แแแแแ, แ แแช แแแแจแแแแแแแaccess_count
แ แแแแกแจแ.func main() { http.Handle("/metrics", promhttp.Handler()) http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) { defer httpRequestsCounter.Inc() count, err := client.Incr(redisCounterName).Result() if err != nil { fmt.Println("Unable to increment redis counter", err) os.Exit(1) } resp := "Accessed on " + time.Now().String() + "nAccess count " + strconv.Itoa(int(count)) w.Write([]byte(resp)) }) http.ListenAndServe(":8080", nil) }
แแแแแแแชแแ แแแแแแแแแฃแแแ Kubernetes-แแก แแแจแแแแแแ Deployment
. แแกแแแ แแฅแแแแแ แกแแ แแแกแ ClusterIP
, แแก แแ แแแแแแก แกแแ แแแ แก แกแแจแฃแแแแแแก แแซแแแแก แแแแฆแแก แแแแแชแฎแแแแก แแแขแ แแแ.
แแ แแแแแแก แกแแ แแแ แ
แแ แแแแแแก แแแแแแแแแแก แแแแแคแแกแขแ แจแแแแแแ:
ConfigMap
- แแ แแแแแแก แแแแคแแแฃแ แแชแแแก แแแแแขแแแ;Deployment
- แแ แแแแแแก แแฃแแแ แแแขแแก แแแแกแขแแ แจแ แแแแแแแแแแกแแแแก;ClusterIP
โ UI Prometheus-แแ แฌแแแแแแก แกแแ แแแกแ;ClusterRole
,ClusterRoleBinding
ะธServiceAccount
โ Kubernetes-แจแ แกแแ แแแกแแแแก แแแขแแแแขแฃแ แ แแแแแแแแแแกแแแแก (แแแขแแแแขแฃแ แ แแฆแแแฉแแแ).
แแฅ
KEDA Prometheus ScaledObject
แกแแแแแ แ แแแฅแแแแแแก แ แแแแ แช แฎแแแ KEDA-แกแ แแ แแแ แ แกแแกแขแแแแก แจแแ แแก, แกแแแแแแแช แกแแญแแ แแ แแแขแ แแแแก แแแฆแแแ. ScaledObject
แแ แแก แแแ แแแแฃแแ แ แแกแฃแ แกแ, แ แแแแแแช แฃแแแ แแแแแแแกแแแก แแแแแแแแแแก แกแแแฅแ แแแแแแชแแแกแแแแก แแแแแแแแก แฌแงแแ แแกแแแ, แแ แจแแแแฎแแแแแจแ แแ แแแแแแกแแแ.
ScaledObject
แจแแแชแแแก แแแแแแแแแแก แกแแแแแ แแแแก แแแคแแ แแแชแแแก, แแแแแแแแก แฌแงแแ แแก แแแขแแแแแแชแแแแแก (แ แแแแ แแชแแ แแแแจแแ แแก แกแแแแฃแแแแแแแแ, แ แแแแก แกแแฎแแแ), แแแแแแแแฎแแแก แแแขแแ แแแแ, แแฆแแแแแแก แแแ แแแแ แแ แกแฎแแ แแแแแชแแแแแ. แจแแแแแแ แแแแฆแแแ แจแแกแแแแแแกแ แแแขแแกแแแแแ แแแแก แ แแกแฃแ แกแ (HPA แแแแแแ แขแแแ) แแแแแแแแแแก แแแกแจแขแแแแก แแแแแแ.
แ แแชแ แแแแแฅแขแ ScaledObject
แฌแแจแแแแแ, แจแแกแแแแแแกแ HPA แแแแแแ แขแแแ แแแกแฃแคแแแแแแฃแแแ.
แแ แแแแแแ แขแแแ ScaledObject
แฉแแแแ แแแแแแแแแกแแแแก แแก แแงแแแแแก แกแแแแแ แก Prometheus
:
apiVersion: keda.k8s.io/v1alpha1
kind: ScaledObject
metadata:
name: prometheus-scaledobject
namespace: default
labels:
deploymentName: go-prom-app
spec:
scaleTargetRef:
deploymentName: go-prom-app
pollingInterval: 15
cooldownPeriod: 30
minReplicaCount: 1
maxReplicaCount: 10
triggers:
- type: prometheus
metadata:
serverAddress:
http://prometheus-service.default.svc.cluster.local:9090
metricName: access_frequency
threshold: '3'
query: sum(rate(http_requests[2m]))
แแแฎแแแ แแแแแแแแแกแฌแแแแ แจแแแแแแ แแฃแแฅแขแแแ:
- แแก แแแฃแแแแแแก
Deployment
แกแแฎแแแแgo-prom-app
. - แขแ แแแแ แแก แขแแแ -
Prometheus
. แแ แแแแแแก แกแแ แแแ แแก แแแกแแแแ แแ แแแแแแแแฃแแแ แแแขแ แฃแ แกแแฎแแแแแ, แแแ แแแ แแแ แแPromQL แจแแแแแฎแแ , แ แแแแแแช แแแแแงแแแแแฃแแ แแฅแแแแ. PromQL แจแแแแแฎแแ -sum(rate(http_requests[2m]))
. - แแแฎแแแแแ
pollingInterval
KEDA แแแฎแแแก แกแแแแแแแก แแ แแแแแแก แงแแแแ แแฎแฃแแแแข แฌแแแจแ. แแแแแแฃแ แแ แแ แฅแแแจ (minReplicaCount
), แฎแแแ แฌแแแฌแแแแก แแแฅแกแแแแแฃแ แ แ แแแแแแแแ แแ แแฆแแแแขแแแmaxReplicaCount
(แแ แแแแแแแแจแ - แแแ).
แจแแแซแแแแ แแแแแแขแแแแแก minReplicaCount
แแฃแแแก แขแแแ. แแ แจแแแแฎแแแแแจแ, KEDA แแแฅแขแแฃแ แแแก แแฃแแแแแ แแ แ แแแแแแแแแแก แแ แจแแแแแ แแแแแแก HPA-แก แจแแแแแแแ แแแขแแแแขแฃแ แ แแแกแจแขแแแแกแแแแก. แกแแแแ แแกแแแ แ แแแแแแแแแแ แแแแช แจแแกแแซแแแแแแแ, แแแฃ แกแแแแแ แแแ แแ แแแแแ แแฃแแแแแ. แแแแแแแแจแ, แฉแแแ แแ แแแแ แฉแแแ แแฃแแ, แ แแแแแ แแก แแ แแก HTTP แกแแ แแแกแ แแ แแ แ แแแแฎแแแแแก แกแแกแขแแแ.
แแแแแ แแแขแแกแแแแแ แแแแก แจแแแแแ
แแแ แแแ แ แแแแแแงแแแแแ แ แแแแ แช แขแ แแแแ แแ แแแแแแแแแแก แแแกแจแขแแแแก. แฉแแแแก แแแแแแแแจแ, PromQL แจแแแแแฎแแ sum(rate (http_requests [2m]))
แแแ แฃแแแแก แแแแ แแแแแแแฃแ HTTP แแแแฎแแแแแก แกแแฉแฅแแ แแก (แแแแฎแแแแแแ แฌแแแจแ), แ แแแแแแช แแแแแแแ แแแแ แแ แ แฌแฃแแแก แแแแแแแแแแแจแ.
แแแแแแแแ แแแ แแแ แแก แแแแจแแแแแแแ แแ แแก แกแแแ, แแก แแแจแแแแก, แ แแ แแฅแแแแ แแ แแ แฅแแแแแ, แฎแแแ แแแแจแแแแแแแ sum(rate (http_requests [2m]))
แกแแแแ แแแแแแแ. แแฃ แแแแจแแแแแแแ แแแ แแแแ, แงแแแแ แฏแแ แแ แแแแขแแแ แแแแแขแแแแแ แฅแแ sum(rate (http_requests [2m]))
แแแ แแแแ แกแแแแ. แแแแแแแแแ, แแฃ แแแแจแแแแแแแ แแ แแก 12-แแแ 14-แแแ, แแแจแแ แฌแแแฌแแแแก แ แแแแแแแแ แแ แแก แแแฎแ.
แแฎแแ แแชแแแแ แแแกแ แแแงแแแแแ!
แฌแแแแกแฌแแ แแแงแแแแแ
แงแแแแแคแแ แ แ แแช แแฅแแแ แแญแแ แแแแแ แแ แแก Kubernetes แแแแกแขแแ แ แแ แแแแคแแแฃแ แแ แแแฃแแ แแ แแแ แแแ kubectl
. แแก แแแแแแแแ แแงแแแแแก แแแแกแขแแ แก minikube
, แแแแ แแ แจแแแแซแแแแ แแแฆแแ แแแแแกแแแแ แ แกแฎแแ. แแแแกแขแแ แแก แแแกแแงแแแแแแแ แแ แกแแแแแก
แแแแแแกแขแแแแ แแ แฃแแฎแแแกแ แแแ แกแแ Mac-แแ:
curl -Lo minikube
https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
&& chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
แฃแชแแแแแ
แแแแแแกแขแแแแ แแ แฃแแฎแแแกแ แแแ แกแแ Mac-แแ:
curl -LO
"https://storage.googleapis.com/kubernetes-release/release/$(curl -s
https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version
KEDA แแแกแขแแแแชแแ
แแฅแแแ แจแแแแซแแแแ แแแแแแแแกแแ KEDA แ แแแแแแแแ แแแแ, แแกแแแ แฉแแแแแแแแแแ
kubectl apply -f
https://raw.githubusercontent.com/kedacore/keda/master/deploy/KedaScaleController.yaml
KEDA แแ แแแกแ แแแแแแแแแขแแแ แแแแแกแขแแแแ แแแฃแแแ แกแแฎแแแแ แกแแแ แชแแจแ keda
. แจแแแแฌแแแแแก แแ แซแแแแแ:
kubectl get pods -n keda
แแแแแแแแ KEDA แแแแ แแขแแ แแก แแแฌแงแแแแก แแ แแแแแแแ Running State
. แแ แแแแก แจแแแแแ แแแแแ แซแแแแ.
Redis-แแก แแแงแแแแแ Helm-แแก แแแแแงแแแแแแ
แแฃ Helm แแ แแแฅแแ แแแงแแแแแฃแแ, แแแแแแงแแแแ แแก
brew install kubernetes-helm
helm init --history-max 200
helm init
แแฎแแแแก แแแแแแแแ แแแ แแ แซแแแแแแก แฎแแแแก แแแขแแ แคแแแกแแก แแแแชแแแแแแแแแก แแ แแกแแแ แแแกแขแแแแชแแแก Tiller
แแฃแแแ แแแขแแก แแแแกแขแแ แแแแ.
kubectl get pods -n kube-system | grep tiller
แแแแแแแแ, แกแแแแ Tiller pod แจแแแแแแก แแแจแแแแฃแ แแแแแแแ แแแแแจแ.
แแแแ แแแแแแแก แจแแแแจแแแ: แแแขแแ แ แแงแแแแแก Helm@2, แ แแแแแแช แแแแแฎแแแก Tiller แกแแ แแแ แแก แแแแแแแแแขแแก แแแแแกแขแแแแ แแแแก. แแฎแแ Helm@3 แแฅแขแฃแแแฃแ แแ, แแก แแ แกแแญแแ แแแแก แกแแ แแแ แแก แแแฌแแแก.
Helm-แแก แแแงแแแแแแก แจแแแแแ แกแแแแแ แแกแแ แแ แแ แแ แซแแแแแ Redis-แแก แแแกแแฌแงแแแแ:
helm install --name redis-server --set cluster.enabled=false --set
usePassword=false stable/redis
แแแ แฌแแฃแแแแ, แ แแ Redis แฌแแ แแแขแแแแ แแแแฌแงแ:
kubectl get pods/redis-server-master-0
แแแแแแแแ แ แแแแกแแก แแแแแแแ แแแแแก Running
.
แแแแแแแชแแแก แแแแแแแแแ
แแแแแแแแแแก แแ แซแแแแแ:
kubectl apply -f go-app.yaml
//output
deployment.apps/go-prom-app created
service/go-prom-app-service created
แจแแแแแฌแแแ, แ แแ แงแแแแแคแแ แ แแแแฌแงแ:
kubectl get pods -l=app=go-prom-app
แแแแแแแแ แ แแแแกแแก แแแแแแแ แแแแแก แจแแกแแแแก Running
.
แแ แแแแแแก แกแแ แแแ แแก แแแงแแแแแ
แแ แแแแแแก แแแแแคแแกแขแ แแงแแแแแก
kubernetes_sd_configs:
- role: service
relabel_configs:
- source_labels: [__meta_kubernetes_service_label_run]
regex: go-prom-app-service
action: keep
แแแแกแแแแแกแแแแแ:
kubectl apply -f prometheus.yaml
//output
clusterrole.rbac.authorization.k8s.io/prometheus created
serviceaccount/default configured
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
configmap/prom-conf created
deployment.extensions/prometheus-deployment created
service/prometheus-service created
แจแแแแแฌแแแ, แ แแ แงแแแแแคแแ แ แแแแฌแงแ:
kubectl get pods -l=app=prometheus-server
แแแแแแแแ แแ แแแแแแก แกแแฎแแแแฌแแคแแจแ แแแแแกแแแแก Running
.
แแแแแแงแแแแ kubectl port-forward
แแ แแแแแแก แแแแฎแแแ แแแแแก แแแขแแ แคแแแกแแ (แแ API แกแแ แแแ แแ) แฌแแแแแแกแแแแก
kubectl port-forward service/prometheus-service 9090
KEDA Autoscaling-แแก แแแแคแแแฃแ แแชแแแก แแแแแ แแแ
แจแแฅแแแแก แแ แซแแแแแ ScaledObject
:
kubectl apply -f keda-prometheus-scaledobject.yaml
แจแแแแแฌแแแ KEDA แแแแ แแขแแ แแก แแฃแ แแแแ:
KEDA_POD_NAME=$(kubectl get pods -n keda
-o=jsonpath='{.items[0].metadata.name}')
kubectl logs $KEDA_POD_NAME -n keda
แจแแแแแ แแแแฎแแแแแแ แแกแ แแแแแแงแฃแ แแแ:
time="2019-10-15T09:38:28Z" level=info msg="Watching ScaledObject:
default/prometheus-scaledobject"
time="2019-10-15T09:38:28Z" level=info msg="Created HPA with
namespace default and name keda-hpa-go-prom-app"
แจแแแแแฌแแแ แแแแแแแชแแแแแก แฅแแแจ. แแ แแ แแแกแขแแแชแแ แฃแแแ แแงแแก แแแจแแแแฃแแ แแแแขแแ minReplicaCount
แฃแแ แแก 1:
kubectl get pods -l=app=go-prom-app
แจแแแแแฌแแแ, แ แแ HPA แ แแกแฃแ แกแ แฌแแ แแแขแแแแ แจแแแฅแแแ:
kubectl get hpa
แแฅแแแ แฃแแแ แแแฎแแ แแกแแแแกแ แ แแ:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
keda-hpa-go-prom-app Deployment/go-prom-app 0/3 (avg) 1 10 1 45s
แฏแแแแ แแแแแแแก แจแแแแฌแแแแ: แแแแแแแชแแแแ แฌแแแแแ
แฉแแแแ แแแแแแแชแแแก REST แแแแ แฌแแ แขแแแแ แฌแแแแแแกแแแแก, แแแฃแจแแแ:
kubectl port-forward service/go-prom-app-service 8080
แแฎแแ แจแแแแซแแแแ แแฅแแแแก Go แแแแ แฌแแแแแ แแแกแแแแ แแแก แแแแแงแแแแแแ
curl http://localhost:8080/test
แจแแแแแ แแแแฎแแแแแแ แแกแ แแแแแแงแฃแ แแแ:
Accessed on 2019-10-21 11:29:10.560385986 +0000 UTC
m=+406004.817901246
Access count 1
แแ แแขแแแแ แแกแแแ แจแแแแแฌแแแ Redis. แแแแแแฎแแแ, แ แแ แแแกแแฆแแแ access_count
แแแแแแ แแ 1-แแแ:
kubectl exec -it redis-server-master-0 -- redis-cli get access_count
//output
"1"
แแแ แฌแแฃแแแแ, แ แแ แแแขแ แแแฃแแ แแแแจแแแแแแแ แแ แแก http_requests
แแแแแ:
curl http://localhost:8080/metrics | grep http_requests
//output
# HELP http_requests number of http requests
# TYPE http_requests counter
http_requests 1
แฉแแขแแแ แแแ แจแแฅแแแ
แฉแแแ แแแแแแแงแแแแแ
curl -o hey https://storage.googleapis.com/hey-release/hey_darwin_amd64
&& chmod a+x hey
แแกแแแ แจแแแแซแแแแ แฉแแแแขแแแ แแแ แแ แแแ แแแ
แแแฃแจแแแ:
./hey http://localhost:8080/test
แแแแฃแแแกแฎแแแแแ, แแ แแแ แแแ แแแแแแแแก 200 แแแแฎแแแแแก. แแแแก แแแแแแแฌแแแแ แจแแแแซแแแแ แแ แแแแแแก แแแขแ แแแแก, แแกแแแ Redis-แแก แแแแแงแแแแแแ.
curl http://localhost:8080/metrics | grep http_requests
//output
# HELP http_requests number of http requests
# TYPE http_requests counter
http_requests 201
kubectl exec -it redis-server-master-0 -- redis-cli get access_count
//output
201
แแแแแแกแขแฃแ แแ แ แแแแฃแ แ แแแขแ แแแแก แแแแจแแแแแแแ (แแแแ แฃแแแแฃแแ PromQL แแแแฎแแแแแ):
curl -g
'http://localhost:9090/api/v1/query?query=sum(rate(http_requests[2m]))'
//output
{"status":"success","data":{"resultType":"vector","result":[{"metric":{},"value":[1571734214.228,"1.686057971014493"]}]}}
แแ แจแแแแฎแแแแแจแ แ แแแแฃแ แ แจแแแแแแ 1,686057971014493
แแ แแแฉแแแแแแแ แแแแจแ value
. แแก แแ แแ แแก แกแแแแแ แแกแ แกแแแแแ แแแแกแแแแก, แ แแแแแ แฉแแแ แแแแ แแแงแแแแแฃแแ แแแ แแแ แ แแ แแก 3.
แแแขแ แแแขแแแ แแแ!
แแฎแแ แขแแ แแแแแแจแ แแแแแขแ แแแแ แแแแแแแชแแแแแก แแแแแแแก แ แแแแแแแแ:
kubectl get pods -l=app=go-prom-app -w
แแแแแ แแแแแแ แแแ แแแขแแแ แแแ แแ แซแแแแแแก แแแแแงแแแแแแ:
./hey -n 2000 http://localhost:8080/test
แแแ แแแแฃแแ แแแ แแแแแก แจแแแแแ, แแแฎแแแ HPA-แก, แ แแแแแแช แกแแแแแ แแแก แแแแแแแแแแก แแ แแแฃแจแแแแแก แแฎแแ แแแแแแก. แจแแแแแฌแแแ แแฅแแแแ HPA, แ แแแ แแแ แฌแแฃแแแแ:
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
keda-hpa-go-prom-app Deployment/go-prom-app 1830m/3 (avg) 1 10 6 4m22s
แแฃ แแแขแแแ แแแ แแ แแแแแแแแแแแ แฃแแแ, แแแแแแแแแ แจแแแชแแ แแแแ แแ แฌแแ แขแแแแแแ, แกแแแแช แแฎแแแแ แแ แแ แแแแ แแฃแจแแแแก. แแฃ แแกแฃแ แ แจแแแแแฌแแแ แ แแแแฃแ แ แแแขแ แแแ (แแแแ แฃแแแแฃแแ PromQL แแแแฎแแแแแ), แแแจแแ แแแแแแงแแแแ แแ แซแแแแแ:
curl -g
'http://localhost:9090/api/v1/query?query=sum(rate(http_requests[2m]))'
แแแกแฃแคแแแแแแแก
//Delete KEDA
kubectl delete namespace keda
//Delete the app, Prometheus server and KEDA scaled object
kubectl delete -f .
//Delete Redis
helm del --purge redis-server
แแแกแแแแ
KEDA แกแแจแฃแแแแแแก แแแซแแแแ แแแขแแแแขแฃแ แแ แแแแคแแ แแแแแ แแฅแแแแ Kubernetes-แแก แแแแแแแแแ (แแฃแแแแแ) แแแ แ แแแขแ แแแแก แแแแแชแแแแแแ แแแงแ แแแแแแ. แแแแแแแแแ, แแ แแแแแแก แแแขแ แแแแแ แแแงแ แแแแแแ, แ แแแแก แกแแแ แซแ แ แแแแกแจแ, แแแแฎแแแ แแแแแแ แจแแงแแแแแแ แแแคแแแก แแแแแจแ.
KEDA แแแขแแแ แแ แแแแ แแแ แ แฌแงแแ แแกแแแ แแ แแกแแแ แแฌแแแแก แแแก แแแขแ แแแแก Metrics แกแแ แแแ แแก แแแจแแแแแแ Horizontal Pod Autoscaler-แแ.
แแแกแฃแ แแแแ แฌแแ แแแขแแแแแก!
แแแแแ แ แ แฌแแแแแแฎแแ:
แกแแฃแแแแแกแ แแ แแฅแขแแแ แแ แกแแฃแแแแแกแ แแ แแฅแขแแแ แแแแขแแแแแ แแแแกแ แแ Kubernetes-แแก แกแแฌแแ แแแ แแแ แแแแจแ แแแจแแแแแกแแแแก .90+ แกแแกแแ แแแแแ แแแกแขแ แฃแแแแขแ Kubernetes-แแกแแแแก: แแแแแแแแแ, แแแ แแแ, แแแแแขแแ แแแแ, แฃแกแแคแ แแฎแแแแ แแ แกแฎแแ .แฉแแแแ แแ แฎแ Kubernetes-แแก แแแ แจแแแ Telegram-แจแ .
แฌแงแแ แ: www.habr.com