1 of 31

Moar! I want moar!

Autoskalowanie w kubernetesie na przykładzie OpenShift 4.0

Paweł Krupa

2 of 31

Czym jest (auto)skalowanie?

2

Red Hat

3 of 31

Vertical

3

Red Hat

4 of 31

Horizontal

4

Red Hat

5 of 31

Gdzie to “auto”?

5

Red Hat

6 of 31

Feedback Loop

6

Red Hat

7 of 31

Feedback Loop

7

Red Hat

8 of 31

Feedback Loop

8

Red Hat

9 of 31

9

Red Hat

10 of 31

10

Red Hat

11 of 31

kubernetes autoscalers

11

Vertical Pod Autoscaler (VPA)

Horizontal Pod Autoscaler (HPA)

Cluster Autoscaler

Red Hat

12 of 31

Resources and scheduling

12

apiVersion: v1

kind: Pod

metadata:

name: frontend

spec:

containers:

- name: db

image: mysql

env:

- name: MYSQL_ROOT_PASSWORD

value: "password"

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

- name: wp

image: wordpress

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"cpu: "500m"

Red Hat

13 of 31

Resources and scheduling

13

200m

600m

node 900m

node 900m

600m

200m

600m

200m

Red Hat

14 of 31

Vertical Pod Autoscaler

14

Red Hat

15 of 31

Vertical Pod Autoscaler

15

node 900m

node 900m

Red Hat

16 of 31

Vertical Pod Autoscaler

16

node 900m

node 900m

Red Hat

17 of 31

Vertical Pod Autoscaler

  • Loosely coupled set of applications
  • Changes resource requests not limits!
  • Makes decisions based on historical data
  • VPA Recommender (calculate memory and cpu values based on historic metrics)
  • Experimental :-)

17

Red Hat

18 of 31

Vertical Pod Autoscaler

18

VPA

Pod

Metrics

RC/Deployment

Pod

Red Hat

19 of 31

Horizontal Pod Autoscaler

19

Red Hat

20 of 31

Horizontal Pod Autoscaler

20

HPA

Pod

Metrics

RC/Deployment

Pod

Pod

Red Hat

21 of 31

21

node 900m

node 900m

600m

200m

200m

200m

200m

200m

200m

200m

Red Hat

22 of 31

22

node 900m

node 900m

600m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

Red Hat

23 of 31

Cluster Autoscaler

23

Red Hat

24 of 31

Cluster Autoscaler

24

Pod

Pod

Pod

Pending

CA

Pod

Pending

node 900m

Pod

Pod

Red Hat

25 of 31

OpenShift Cluster Autoscaler

25

Pod

Pod

Pod

Pending

CA

Pod

Pending

node 900m

Pod

Pod

Machine API Operator

Red Hat

26 of 31

26

node 900m

node 900m

600m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

200m

Red Hat

27 of 31

27

node 900m

node 900m

600m

200m

200m

200m

200m

200m

200m

200m

200m

200m

node 900m

200m

200m

200m

200m

Red Hat

28 of 31

TL;DR;

28

Red Hat

29 of 31

29

node

node

CA

Pod

2. Pods pending

Pod

HPA

VPA

1. Change resources

3. Additional nodes allocated

4. Pods scheduled

Pod

Red Hat

30 of 31

Demo time!

30

Red Hat

31 of 31

31

THANK YOU

github.com/paulfantom

paulfantom@gmail.com

twitter.com/paulfantom

pkrupa@redhat.com