GuĂ­a para configurar objetivos de nivel de servicio (SLO) en Kubernetes con Prometheus y Linkerd

Anticipándonos al inicio del curso "Plataforma de infraestructura basada en Kubernetes", hemos preparado una traducción tradicional de un artículo útil.


(SLO)

, (SLO, . Service Level Objectives) Kubernetes  Prometheus, ,  Linkerd,  . , , , SLO.

, , , SLO Kubernetes .

SLO Kubernetes

SLO, , . , Google SRE, SLO , , , .

, , , SLO : SLO , , .  Kubernetes, . , SLO , . (. SLO Kubernetes.)

, SLO Kubernetes , . SLO , , ! , Linkerd golden metrics ( ) â€” , ,  â€” . Linkerd SLO .

(, SLO, , , . , , , , SLO .)

.

SLO Linkerd Prometheus

, SLO gRPC-, Kubernetes. , SLO.

, Linkerd . Linkerd HTTP gRPC, (pods) . , Prometheus. Prometheus Linkerd, .

, , , Linkerd Prometheus, SLO.

: Linkerd Kubernetes

. , Kubernetes  kubectl, . Linkerd, , Linkerd .

Linkerd:

curl -sL https://run.linkerd.io/install | sh
export PATH=$PATH:$HOME/.linkerd2/bin

(Linkerd   Linkerd.)

, , Kubernetes Linkerd, Linkerd :

linkerd check --pre
linkerd install | kubectl apply -f -
linkerd check

, Emojivoto, :

curl -sL https://run.linkerd.io/emojivoto.yml \
  | linkerd inject - \
  | kubectl apply -f -

. SLO: .

 â€” , , SLO. ?

. , ,     7 80 %.  SLO. :  (service level indicator â€” SLI), ; , ;   . :

SLI:

: 80 %

: 7

SLO , 20 % 7- , . ,  â€” , 20 % «» .

, 7 100 % , 100 %  â€” . , 7 80 % , 0 % .   80 %,    SLO .

:

= 1–[(1–)/(1–)]

  â€” SLI, . , , SLI ( ) .

Prometheus

. Prometheus Linkerd, , :

# Get the name of the prometheus pod
$ kubectl -n linkerd get pods
NAME                                      READY   STATUS    RESTARTS   AGE
..
linkerd-prometheus-54dd7dd977-zrgqw       2/2     Running   0          16h

PODNAME, :

kubectl -n linkerd port-forward linkerd-prometheus-PODNAME 9090:9090

 localhost:9090   PromQL, Prometheus.

Tablero de Prometheus
Prometheus

, !

Prometheus

100 80 %  â€” . , Prometheus. Emojivoto, emojivoto .

, :

:

response_total{deployment="voting", direction="inbound", namespace="emojivoto"}

:

response_total{classification="success",deployment="voting",direction="inbound",namespace="emojivoto",..} 46499
response_total{classification="failure",deployment="voting",direction="inbound",namespace="emojivoto",..} 8652

, , : classification. 46 499 8652 .

, 7 ,  classification="success"   [7d]:

:

response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d]

, PromQL increase() sum(), , :

:

sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls)

:

{classification="success",deployment="voting",namespace="emojivoto",tls="true"} 26445.68142198795

, 7 26 445 (  increase()).

, , , â€”  classification="success":

:

sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls) / ignoring(classification) sum(increase(response_total{deployment="voting", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, tls)

:

{deployment="voting",namespace="emojivoto",tls="true"} 0.846113068695625

, 7 84,61 % .

, , . :

= 1–[(1–)/(1–)]

, 80 % (0,8):

:

1 - ((1 - (sum(increase(response_total{deployment="voting", classification="success", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, classification, tls)) / ignoring(classification) sum(increase(response_total{deployment="voting", direction="inbound", namespace="emojivoto"}[7d])) by (namespace, deployment, tls)) / (1 - .80))

:

{deployment="voting",namespace="emojivoto",tls="true"} 0.2312188519042635

23,12 % .

, !

Grafana

 â€” , ? ! Linkerd Grafana, Linkerd.

Linkerd,  linkerd dashboard.

Grafana emojivoto, Grafana .

Panel de control de Linkerd con integraciĂłn de Grafana
Linkerd Grafana

 deploy/voting, : , . .

Linkerd en el panel de Grafana
Linkerd Grafana

 â€”  7-day error budget (success rate) (« 7 ( )») , , PromQL.

!

Presupuesto de errores en Grafana con métricas de Linkerd
Grafana Linkerd

.

, , , PromQL, rate(), .

, -, . (Gauge) , , .

Presupuesto de error de 7 dĂ­as (tasa de Ă©xito) en formato Gauge.
7 ( ) (Gauge).

, emojivoto,  deployment="voting". , 80 %.

Presupuesto de errores durante 7 dĂ­as (porcentaje de intentos exitosos) para todos los servicios.
7 ( ) .

SLO

SLO Linkerd, Grafana. !

?

, , SLO. . , .  , . SLO .

Buoyant SLO, Kubernetes. ,   Dive, SLO . Dive Linkerd , , . Dive , ,  , SLO, .

Panel de control que muestra el SLO y el cumplimiento del presupuesto de errores durante 7 dĂ­as.
Dive, SLO 7- .

,  â€” Dive SLO Linkerd Prometheus Grafana, , â€” SLO!

:

(SLO) Kubernetes

(SLO) . SLO â€” . « , , ?» , Kubernetes, SLO - : , , .


" Kubernetes". " Kubernetes" .


:




All Articles