Im Vorgriff auf den Beginn des Kurses "Infrastrukturplattform basierend auf Kubernetes" haben wir eine traditionelle Übersetzung eines nützlichen Artikels vorbereitet.
Service Level Objectives (SLOs) sind mit einem Service Grid viel einfacher zu bearbeiten
, (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" .