เชเซเชฒเชพเชเชก เชเชชเซเชฒเซเชเซเชถเชจ เชฎเชพเชเซ เชฎเชพเชชเชจเซเชฏเชคเชพ เช เชฎเซเชเซเชฏ เชเชตเชถเซเชฏเชเชคเชพ เชเซ. เชเซเชฌเชฐเชจเซเชเซเชธ เชธเชพเชฅเซ, เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชธเซเชเซเชฒเชฟเชเช เชเชฐเชตเซเช เช เชฏเซเชเซเชฏ เชเชฎเชพเชตเช เชฎเชพเชเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชเชจเซ เชธเชเชเซเชฏเชพ เชตเชงเชพเชฐเชตเชพ เชเซเชเชฒเซเช เชธเชฐเชณ เชเซ เช
เชฅเชตเชพ ReplicaSet
- เชชเชฐเชเชคเซ เชคเซ เชฎเซเชจเซเชฏเซเช
เชฒ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ.
เชเซเชฌเชฐเชจเซเชเซเชธ เชเชชเซเชฒเซเชเซเชถเชจเชจเซ เชเชชเชฎเซเชณเซ เชฎเชพเชชเชตเชพ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ (เชเชเชฒเซ โโโโเชเซ เชเชฎเชพเชตเชเชฎเชพเช เชชเซเชกเซเชธ เช
เชฅเชตเชพ ReplicaSet
) เชนเซเชฐเซเชเซเชจเซเชเชฒ เชชเซเชก เชเชเซเชธเซเชเซเชฒเชฐ เชธเซเชชเชทเซเชเซเชเชฐเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชทเชฃเชพเชคเซเชฎเช เชฐเซเชคเซ. เชเชเซเชฎเซเชเชฟเช เชธเซเชเซเชฒเชฟเชเช เชฎเชพเชเซ เชกเชฟเชซเซเชฒเซเช เชฎเชพเชชเชฆเชเชก CPU เชตเชชเชฐเชพเชถ เชฎเซเชเซเชฐเชฟเชเซเชธ (เชธเชเชธเชพเชงเชจ เชฎเซเชเซเชฐเชฟเชเซเชธ) เชเซ, เชชเชฐเชเชคเซ เชคเชฎเซ เชเชธเซเชเชฎ เช
เชจเซ เชฌเชพเชนเซเชฏ เชฐเซเชคเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซเชฒ เชฎเซเชเซเชฐเชฟเชเซเชธเชจเซ เชเชเซเชเซเชค เชเชฐเซ เชถเชเซ เชเซ.
เชเซเชฎ
เชชเซเชกเซเชธเชจเชพ เชเชกเชพ เชเชเซเชธเซเชเซเชฒเชฟเชเชเชจเซ เชฌเชฆเชฒเซ, เชเซเชฌเชฐเชจเซเชเซเชธ เชเชตเซเชจเซเช เชกเซเชฐเชฟเชตเชจ เชเชเซเชธเซเชเซเชฒเชฟเชเช (KEDA) เชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเซ เชเช เชเชชเชจ เชธเซเชฐเซเชธ เชเซเชฌเชฐเชจเซเชเซเชธ เชเชชเชฐเซเชเชฐ เชเซ. เชคเซ เชเชเชจเชพ-เชธเชเชเชพเชฒเชฟเชค เชตเชฐเซเชเชฒเซเชก เชฎเชพเชเซ เชธเซเชฎเชฒเซเชธ เชเชเซเชธเซเชเซเชฒเชฟเชเช (เชถเซเชจเซเชฏเชฅเซ/เชถเซเชจเซเชฏ เชธเชนเชฟเชค) เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพ เชฎเชพเชเซ เชนเซเชฐเชฟเชเซเชจเซเชเชฒ เชชเซเชก เชเชเซเชธเซเชเซเชฒเชฐ เชธเชพเชฅเซ เชฎเซเชณ เชฐเซเชคเซ เชธเชเชเชฒเชฟเชค เชเชฐเซ เชเซ. เชชเชฐ เชเชชเชฒเชฌเซเชง เชเซเชก
เชธเชฟเชธเซเชเชฎเชจเซ เชธเชเชเซเชทเชฟเชชเซเชค เชเชพเชเชเซ
เชเชเซเชคเชฟ เชฌเชงเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ เชคเซเชจเซเช เชธเชเชเซเชทเชฟเชชเซเชค เชตเชฐเซเชฃเชจ เชฌเชคเชพเชตเซ เชเซ:
- เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชซเซเชฐเซเชฎเซเชเชฎเชพเช HTTP เชนเชฟเช เชเชพเชเชจเซเช เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
- เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เช เชฎเซเชเซเชฐเชฟเชเซเชธ เชเชเชคเซเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซเชฒ เชเซ.
- KEDA เชฎเชพเช เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชธเซเชเซเชฒเชฐ HTTP เชนเชฟเชเชจเซ เชธเชเชเซเชฏเชพเชจเชพ เชเชงเชพเชฐเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชชเชฎเซเชณเซ เชฎเชพเชชเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซเชฒ เชเซ.
เชนเชตเซ เชนเซเช เชคเชฎเชจเซ เชฆเชฐเซเช เชคเชคเซเชต เชตเชฟเชถเซ เชตเชฟเชเชคเชตเชพเชฐ เชเชฃเชพเชตเซเชถ.
เชเซเชกเชพ เช เชจเซ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ
เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เช เชเชชเชจ เชธเซเชฐเซเชธ เชธเชฟเชธเซเชเชฎ เชฎเซเชจเชฟเชเชฐเชฟเชเช เช
เชจเซ เชเชฒเชฐเซเชเชฟเชเช เชเซเชฒเชเชฟเช เชเซ, เชญเชพเช
KEDA เชธเซเชเซเชฒเชฐเชจเชพ เชเซเชฏเชพเชฒเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ - เชคเซ KEDA เช เชจเซ เชฌเชพเชนเซเชฏ เชธเชฟเชธเซเชเชฎ เชตเชเซเชเซเชจเชพ เชธเซเชคเซ เชคเชฐเซเชเซ เชเชพเชฎ เชเชฐเซ เชเซ. เชธเซเชเซเชฒเชฐ เช เชฎเชฒเซเชเชฐเชฃ เชฆเชฐเซเช เชฒเชเซเชทเซเชฏ เชธเชฟเชธเซเชเชฎ เชฎเชพเชเซ เชตเชฟเชถเชฟเชทเซเช เชเซ เช เชจเซ เชคเซเชฎเชพเชเชฅเซ เชกเซเชเชพ เชเชพเชขเซ เชเซ. เชชเชเซ KEDA เชคเซเชจเซ เชเชชเชฏเซเช เชธเซเชตเชเชพเชฒเชฟเชค เชธเซเชเซเชฒเชฟเชเชเชจเซ เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซ เชเซ.
เชธเซเชเซเชฒเชฐเซเชธ เชฌเชนเซเชตเชฟเชง เชกเซเชเชพ เชธเซเชคเซเชฐเซเชคเซเชจเซ เชธเชฎเชฐเซเชฅเชจ เชเชชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชพเชซเชเชพ, เชฐเซเชกเชฟเชธ, เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ. เชเชเชฒเซ เชเซ, เชฎเชพเชชเชฆเชเชก เชคเชฐเซเชเซ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชฎเซเชเซเชฐเชฟเชเซเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเชฎเชพเชตเชเชจเซ เชเชชเชฎเซเชณเซ เชฎเชพเชชเชตเชพ เชฎเชพเชเซ KEDA เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เชเซเชธเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ
เชเซเชฒเชพเชเช เชเซเชธเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ HTTP เชฆเซเชตเชพเชฐเชพ เชเชเซเชธเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ เช เชจเซ เชฌเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเชพเชฐเซเชฏเซ เชเชฐเซ เชเซ:
- เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชจเซเชธเซเชเซเชฐเซเชฎเซเชจเซเช เชเชฐเชตเชพ เช
เชจเซ http_requests เชฎเซเชเซเชฐเชฟเช เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพ เชฎเชพเชเซ Prometheus Go เชเซเชฒเชพเชฏเชเช เชฒเชพเชเชฌเซเชฐเซเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเซเชฎเชพเช เชนเชฟเช เชเชพเชเชจเซเช เชนเซเชฏ เชเซ. เช
เชเชคเชฟเชฎ เชฌเชฟเชเชฆเซ เชเซเชฏเชพเช เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชฎเซเชเซเชฐเชฟเชเซเชธ เชเชชเชฒเชฌเซเชง เชเซ เชคเซ 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) }
เชเชชเซเชฒเซเชเซเชถเชจ เชเซเชฌเชฐเชจเซเชเชธเชฎเชพเช เชฎเชพเชฐเชซเชคเซ เชเชฎเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ Deployment
. เชธเซเชตเชพ เชชเชฃ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ ClusterIP
, เชคเซ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชธเชฐเซเชตเชฐเชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเซเชเซเชฐเชฟเชเซเชธ เชฎเซเชณเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เช
เชนเซเช
เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชธเชฐเซเชตเชฐ
เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชเชฎเชพเชตเช เชฎเซเชจเชฟเชซเซเชธเซเช เชธเชฎเชพเชตเซ เชเซ:
ConfigMap
- เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชฐเซเชชเชฐเซเชเชพเชจเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ;Deployment
โ เชเซเชฌเชฐเชจเซเชเชธ เชเซเชฒเชธเซเชเชฐเชฎเชพเช เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธเชจเซ เชเชฎเชพเชตเชตเชพ เชฎเชพเชเซ;ClusterIP
โ UI เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธเชจเซ เชเชเซเชธเซเชธ เชฎเชพเชเซ เชธเซเชตเชพ;ClusterRole
,ClusterRoleBinding
ะธServiceAccount
- เชเซเชฌเชฐเชจเซเชเซเชธ (เชเชเซ-เชกเชฟเชธเซเชเชตเชฐเซ) เชฎเชพเช เชธเซเชตเชพเชเชจเซ เชธเซเชตเชคเช-เชถเซเชง เชฎเชพเชเซ.
เช
เชนเซเช
KEDA เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชธเซเชเซเชฒเซเชก เชเชฌเซเชเซเชเซเช
เชธเซเชเซเชฒเชฐ 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
,เชเซเชเชกเซเช เชฆเชฐ เชชเชเชฆเชฐ เชธเซเชเชจเซเชกเซ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชชเชพเชธเซเชฅเซ เชฒเชเซเชทเซเชฏเชจเซ เชตเชฟเชจเชเชคเซ เชเชฐเซ เชเซ. เชเชเชพเชฎเชพเช เชเชเซเช เชเช เชนเซเช เชณ (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 เชเซ, เชคเซ เชถเซเชเชเซเชจเซ เชธเชเชเซเชฏเชพ เชเชพเชฐ เชเซ.
เชนเชตเซ เชเชพเชฒเซ เชคเซเชจเซ เชธเซเช เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช!
เชชเซเชฐเซเชธเซเชเซเชเช
เชคเชฎเชพเชฐเซ เชซเชเซเชค เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐ เช
เชจเซ เชเซเช เชตเซเชฒ เชเชชเชฏเซเชเชฟเชคเชพเชจเซ เชเชฐเซเชฐ เชเซ 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
. เช
เชจเซ เชคเซ เชชเชเซ, เชเชพเชฒเซ เชฐเชพเชเซ.
เชนเซเชฒเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชฐเซเชกเชฟเชธ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเซเช
เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชนเซเชฒเซเชฎ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒ เชจเชฅเซ, เชคเซ เชเชจเซ เชเชชเชฏเซเช เชเชฐเซ
brew install kubernetes-helm
helm init --history-max 200
helm init
เชธเซเชฅเชพเชจเชฟเช เชเชฎเชพเชจเซเชก เชฒเชพเชเชจ เชเชจเซเชเชฐเชซเซเชธ เชถเชฐเซ เชเชฐเซ เชเซ เช
เชจเซ เชเชจเซเชธเซเชเซเชฒ เชชเชฃ เชเชฐเซ เชเซ Tiller
เชเซเชฌเชฐเชจเซเชเซเชธ เชเซเชฒเชธเซเชเชฐเชฎเชพเช.
kubectl get pods -n kube-system | grep tiller
เชเชฟเชฒเชฐ เชชเซเชก เชฐเชจเชฟเชเช เชธเซเชเซเชเชฎเชพเช เชฆเชพเชเชฒ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ เชฐเชพเชน เชเซเช.
เช เชจเซเชตเชพเชฆเชเชจเซ เชจเซเชเชง: เชฒเซเชเช เชนเซเชฒเซเชฎ@2 เชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชเซเชจเชพ เชฎเชพเชเซ เชเชฟเชฒเชฐ เชธเชฐเซเชตเชฐ เชเชเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเซเช เชเชฐเซเชฐเซ เชเซ. เชนเชตเซ Helm@3 เชธเชเชฌเชเชงเชฟเชค เชเซ, เชคเซเชจเซ เชธเชฐเซเชตเชฐ เชญเชพเชเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เชนเซเชฒเซเชฎ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฏเชพ เชชเชเซ, เชฐเซเชกเชฟเชธ เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชเช เชเชฆเซเชถ เชชเซเชฐเชคเซ เชเซ:
helm install --name redis-server --set cluster.enabled=false --set
usePassword=false stable/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
Redis เชฐเชพเชเซเชฏเชฎเชพเช เชฆเชพเชเชฒ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ เชฐเชพเชน เชเซเช 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 เชเชเซเชธเซเชเซเชฒเชฟเชเช เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเชฎเชพเชตเซ เชฐเชนเซเชฏเซเช เชเซ
เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชเชฆเซเชถ 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
เช เชฌเชฟเชเชฆเซเช เชฐเซเชกเชฟเชธ เชชเชฃ เชคเชชเชพเชธเซ. เชคเชฎเซ เชเซเชถเซ เชเซ เชเซ 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 เชตเชฟเชจเชเชคเซเช เชฎเซเชเชฒเซ เชเซ. เชคเชฎเซ เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชฎเซเชเซเชฐเชฟเชเซเชธ เชคเซเชฎเช เชฐเซเชกเชฟเชธเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเซ เชเชเชพเชธเซ เชถเชเซ เชเซ.
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
เชตเชพเชธเซเชคเชตเชฟเช เชฎเซเชเซเชฐเชฟเชเชจเซเช เชฎเซเชฒเซเชฏ เชฎเชพเชจเซเชฏ เชเชฐเซ (เชชเซเชฐเซเชฎเชเซเชฏเซเชเชฒ เชเซเชตเซเชฐเซ เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฒ):
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
เชเซ เชฒเซเชก เช เชธเชเชเชค เชนเซเชฏ, เชคเซ เชเชฎเชพเชตเช เช เชฌเชฟเชเชฆเซ เชธเซเชงเซ เชเชเชพเชกเชตเชพเชฎเชพเช เชเชตเชถเซ เชเซเชฏเชพเช เชฎเชพเชคเซเชฐ เชเช เชชเซเชก เชเชพเชฒเซ เชฐเชนเซเชฏเซเช เชเซ. เชเซ เชคเชฎเซ เชตเชพเชธเซเชคเชตเชฟเช เชฎเซเชเซเชฐเชฟเช (เชชเซเชฐเซเชฎเชเซเชฏเซเชเชฒ เชเซเชตเซเชฐเซ เชฆเซเชตเชพเชฐเชพ เชชเชฐเชค) เชคเชชเชพเชธเชตเชพ เชฎเชพเชเชเชคเชพ เชนเซเชต, เชคเซ เชเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซ:
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 เชคเชฎเชจเซ เชฌเชพเชนเซเชฏ เชฎเซเชเซเชฐเชฟเชเซเชธเชจเชพ เชกเซเชเชพเชจเชพ เชเชงเชพเชฐเซ เชคเชฎเชพเชฐเชพ เชเซเชฌเชฐเชจเซเชเซเชธ เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเชเชจเซ (เชถเซเชจเซเชฏเชฅเซ/เชถเซเชจเซเชฏ เชธเซเชงเซ) เชเชชเชฎเซเชณเซ เชฎเชพเชชเชตเชพ เชฎเชพเชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชชเซเชฐเซเชฎเชฟเชฅเชฟเชฏเชธ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเชฐ เชเชงเชพเชฐเชฟเชค, เชฐเซเชกเชฟเชธเชฎเชพเช เชเชคเชพเชฐเชจเซ เชฒเชเชฌเชพเช, เชเชพเชซเชเชพ เชตเชฟเชทเชฏเชฎเชพเช เชเซเชฐเชพเชนเช เชฒเซเชเชจเซเชธเซ.
KEDA เชฌเชพเชนเซเชฏ เชธเซเชคเซเชฐเซเชค เชธเชพเชฅเซ เชธเชเชเชฒเชจ เชเชฐเซ เชเซ เช เชจเซ เชฎเซเชเซเชฐเชฟเชเซเชธ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชนเซเชฐเซเชเซเชจเซเชเชฒ เชชเซเชก เชเชเซเชธเซเชเซเชฒเชฐเชจเซ เชคเซเชจเชพ เชฎเซเชเซเชฐเชฟเชเซเชธ เชชเชฃ เชชเซเชฐเชฆเชพเชจ เชเชฐเซ เชเซ.
เชธเชซเชณเชคเชพ!
เชฌเซเชเซเช เชถเซเช เชตเชพเชเชเชตเซเช:
เชเชคเซเชชเชพเชฆเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชเชจเซเชเซเชจเชฐ เช เชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชถเซเชฐเซเชทเซเช เชชเชฆเซเชงเชคเชฟเช เช เชจเซ เชถเซเชฐเซเชทเซเช เชชเซเชฐเชฏเชพเชธเซ .เชเซเชฌเชฐเชจเซเชเซเชธ เชฎเชพเชเซ 90+ เชเชชเชฏเซเชเซ เชธเชพเชงเชจเซ: เชเชฎเชพเชตเช, เชธเชเชเชพเชฒเชจ, เชฆเซเชเชฐเซเช, เชธเซเชฐเชเซเชทเชพ เช เชจเซ เชตเชงเซ .เชเซเชฒเชฟเชเซเชฐเชพเชฎเชฎเชพเช เชเซเชฌเชฐเชจเซเชเซเชธเชจเซ เชเชธเชชเชพเชธ เช เชฎเชพเชฐเซ เชเซเชจเชฒ .
เชธเซเชฐเซเชธ: www.habr.com