SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
Škálování v SCIF Kubernetes
s Horizontal Pod Autoscaler-em
Jozef Juris
DevOps
➔ O Seznamu
➔ Jak funguje Doporučování
➔ Škálování podle CPU metriky
➔ Škálování podle vlastní metriky
➔ Rozdíly mezi starým a novým HPA
O čem to bude?
O Seznamu
➔ != Zoznam.sk
➔ seznamzpravy.cz
televizeseznam.cz garaz.cz
prozeny.cz
➔ classicpraha.cz expresfm.cz
➔ novinky.cz super.cz sport.cz
➔ email.cz mapy.cz sklik.cz
➔ sauto.cz sbazar.cz
sreality.cz
Seznam Compute Infrastructure
➔ 2 + 1 + 1 serverovne
➔ Kubernetes
➔ Openstack
➔ ElasticSearchaaS, MonitoringaaS, MySQLaaS,...
➔ Montovna
Doporučování
Message
queue
Consumer
Trainer
Contentserver
Škálování contentserveru
popis komponenty
➔ CPU intenzivní
➔ 8000 požadavků/s
➔ max 200 ms
➔ 99% dostupnost
Škálování contentserveru
problém
➔ Přelévání trafficu
➔ Společenské události
➔ Efektivita využití zdrojů
➔ Manuální práce
Škálování contentserveru
řešení - metrika průměrné využití CPU
Škálování contentserveru
konfigurace škálovače
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: contentserver
spec:
maxReplicas: 50
minReplicas: 4
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contentserver
targetCPUUtilizationPercentage: 80
Škálování consumerů
popis komponenty
➔ 150000 zpráv / sekunda
➔ minimum nezpracovaných zpráv
➔ metriky:
◆ max_gap
◆ consumed_messages
◆ lag
Škálování consumerů
problém
➔ Přelévání trafficu
➔ Společenské události
➔ Různorodost
konfigurací
➔ Manuální práce
Škálování consumerů
pokus s metrikou max_gap
Škálování consumerů
pokus s metrikou rate(max_gap[5,15,...m])
Škálování consumerů
pokus s metrikou lag
Škálování consumerů
řešení metrikou consumed_messages
Škálování consumerů
konfigurace skálovače
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: consumer
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: consumer
minReplicas: 1
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: consumer:pod:consumed_messages
target:
averageValue: 2k
type: AverageValue
Jak to fungujě s vlastníma metrikama?
consumer:pod:consumed_messages{deployment="consumer", namespace="doporucovani-stable", pod="consumer-5f55c4c984-4g6f4"} 1
consumer:pod:consumed_messages{deployment="consumer", namespace="doporucovani-stable", pod="consumer-5f55c4c984-4g6f4"} 2
consumer:pod:consumed_messages{deployment="consumer", namespace="doporucovani-stable", pod="consumer-5f55c4c984-4g6f4"} 3
● Metriky
● Adaptér k Prometheovi
● Algoritmus
požadovanýPočetInstancí = strop[ aktuálníPočetInstnací * ( aktuálniHodnotaMetriky / požadovanáHodnotaMetriky ) ]
požadovanýPočetInstancí = strop[ 1 * ( 10000 / 2000 ) ] = 5
požadovanýPočetInstancí = strop[ 5 * ( 250 / 2000 ) ] = 1
Rozdíly mezi starým a novým HPA
Starý
+ jednoduchý
+ bez práce navíc
- jen 2 metriky CPU a
paměť
Nový
+ vlastní metriky
+ kombinování metrik
+ politika přidávání
odebírání 1.18
+ stabilizační okno 1.18
- nutná integrace
- komplexní konfigurace
Rozdíly mezi starým a novým HPA
Starý
● Average value
Nový
● Average value
● Target value
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: contentserver
targetCPUUtilizationPercentage: 80
metrics:
- type: Pods
pods:
metric:
name: metrika
target:
averageValue: 2k
type: AverageValue
metrics:
- type: Object
object:
metric:
name: metrika
describedObject:
apiVersion: v1
kind: Deployment
name: contentserver
target:
Value: 2k
type: Value
Zopár dobrých tipů na závěr
● Inicializujte všechny metriky v komponentách
● Naučte komponenty správně “umírat”
readinessProbe:
httpGet:
path: /readiness
port: 4440
initialDelaySeconds: 60
periodSeconds: 5
lifecycle:
preStop:
exec:
command: ["kill", "-USR1", "1"]
metrika_final = metrika1 + metrika2 + metrika3
metrika_final = 1 + null + 2 = null
Pár užitečných linků
Články:
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-an
d-custom-metrics
https://github.com/kubernetes/community/blob/master/contributors/design-proposals/instrumentation/custom-metrics-api.
md
API dokumentace:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#horizontalpodautoscaler-v1-autoscaling
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#horizontalpodautoscalerspec-v2beta2-autoscaling
Prometheus adapter:
https://github.com/kubernetes-sigs/prometheus-adapter
SCIF:
https://connect.zive.cz/clanky/na-cem-bezi-seznamcz-bezny-standard-uz-nestaci-prechazi-na-vlastni-cloud-i-servery/sc-3
20-a-196137/default.aspx
Jozef Juris
DevOps
E-mail: jozef.juris@firma.seznam.cz
Tel.: 722 088 821
Kontakt

Weitere ähnliche Inhalte

Ähnlich wie Skalovaniv scif kubernetes

INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace Jan Hřídel
 
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeMarketingArrowECS_CZ
 
Private Cloud
Private CloudPrivate Cloud
Private Cloudtcp cloud
 
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeMarketingArrowECS_CZ
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuAkce Dobrého webu
 
Bezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNETBezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNETCESNET
 
Výkonnost webových aplikací
Výkonnost webových aplikacíVýkonnost webových aplikací
Výkonnost webových aplikacíTaste Medio
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroupJan Blaško
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryDevelcz
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!Martin Humpolec
 
Vizuální regresní testy
Vizuální regresní testyVizuální regresní testy
Vizuální regresní testyMartin Krištof
 
Taskenger features 2014.04.30 final cz
Taskenger features 2014.04.30 final czTaskenger features 2014.04.30 final cz
Taskenger features 2014.04.30 final czMichal Herštus
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileProfinit
 
.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL ServeruJan Drozen
 
React premature performance optimization
React premature performance optimizationReact premature performance optimization
React premature performance optimizationMartinKritof1
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciMartin Krištof
 
Teorie testy1
Teorie testy1Teorie testy1
Teorie testy1dejfbart
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconVojta Svoboda
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 

Ähnlich wie Skalovaniv scif kubernetes (20)

INPTP Rekapitulace
INPTP Rekapitulace INPTP Rekapitulace
INPTP Rekapitulace
 
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata Database Machine X6-2 v kompetenčním centru Arrow ECS v Praze
 
Private Cloud
Private CloudPrivate Cloud
Private Cloud
 
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v PrazeOracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
Oracle Exadata X5-2 v kompetenčním centru Arrow ECS v Praze
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webu
 
Bezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNETBezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNET
 
Výkonnost webových aplikací
Výkonnost webových aplikacíVýkonnost webových aplikací
Výkonnost webových aplikací
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroup
 
Ondřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featuryOndřej Hlaváček: Životní cyklus featury
Ondřej Hlaváček: Životní cyklus featury
 
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
 
Vizuální regresní testy
Vizuální regresní testyVizuální regresní testy
Vizuální regresní testy
 
Taskenger features 2014.04.30 final cz
Taskenger features 2014.04.30 final czTaskenger features 2014.04.30 final cz
Taskenger features 2014.04.30 final cz
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum Mobile
 
.NET v SQL Serveru
.NET v SQL Serveru.NET v SQL Serveru
.NET v SQL Serveru
 
React premature performance optimization
React premature performance optimizationReact premature performance optimization
React premature performance optimization
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaci
 
Teorie testy1
Teorie testy1Teorie testy1
Teorie testy1
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 

Skalovaniv scif kubernetes