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 16hPODNAME, :
kubectl -n linkerd port-forward linkerd-prometheus-PODNAME 9090:9090localhost:9090 PromQL, 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.231218851904263523,12 % .
, !
Grafana
— , ? ! Linkerd Grafana, Linkerd.
Linkerd, linkerd dashboard.
Grafana emojivoto, Grafana .

deploy/voting, : , . .
— 7-day error budget (success rate) (« 7 ( )») , , PromQL.
!
.
, , , PromQL, rate(), .
, -, . (Gauge) , , .
, emojivoto, deployment="voting". , 80 %.
SLO
SLO Linkerd, Grafana. !
?
, , SLO. . , . , . SLO .
Buoyant SLO, Kubernetes. , Dive, SLO . Dive Linkerd , , . Dive , , , SLO, .
, — Dive SLO Linkerd Prometheus Grafana, , — SLO!
:
(SLO) . SLO — . « , , ?» , Kubernetes, SLO - : , , .
" Kubernetes". " Kubernetes" .