Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów...

42
Openshift Maciej Żarczyński

Transcript of Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów...

Page 1: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Openshift

Maciej Żarczyński

Page 2: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Agenda

◎ Wprowadzenie◎ Wybrane obiekty API i ich właściwości◎ Demo

Page 3: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Optymalizacja zasobów

Aspekt sprzętowy

Page 4: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Klasyczna wirtualizacja (Xen, VMWare, KVM, etc.)

Hypervisor

Kernel

App1

Kernel

App2

Kernel

App3

Kernel

App4

Page 5: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Konteneryzacja (Docker)

Kernel

App1

App3

App2

App4

App5

App6

App7

App8

App9

Page 6: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Źródło: https://kubernetes.io

Page 7: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Optymalizacja zasobów

Aspekt ludzki / czasowy

Page 8: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Stara szkoła

Dev Aplikacja

Dokumentacja

Ops

Deployment

Parametry

Page 9: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Zrównoleglenie procesu /rozdzielenie ról

Ops

OpenshiftDev Aplikacja

obiekty API

Parametry

Page 10: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

CI/CD/CDw firmach jest

jak seks w liceum

Page 11: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

PaaS

Page 12: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Źródło: https://kubernetes.io

Page 13: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Źródło: https://blog.openshift.com/building-kubernetes-bringing-google-scale-container-orchestration-to-the-enterprise/

Page 14: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Źródło: https://www.cncf.io/blog/2016/08/23/deploying-1000-nodes-of-openshift-on-the-cncf-cluster-part-1/

Page 15: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Obiekty API

Page 16: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

ProjectNamespace

Users

Quota

Limit ranges

Page 17: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

ImageStreamReprezentacja zbioru

image-y dockera

isImage

Promocja

Trigger

isTag

Import

Page 18: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig

Pod

ReplicationController

Page 19: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

PodInstancja aplikacji

1+ kontenerów

Efemeryczny

ReadinessProbeLimit

(CPU, RAM)

Service Account

LivenessProbe

Page 20: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Pod

apiVersion: v1kind: Podmetadata: name: jug-app-pod labels: app: jugspec: containers: - name: jug-app image: 172.30.1.1:5000/dev/jug@sha256:7123433f5deb3451e5c3898f6fe… ports: - containerPort: 8080 protocol: TCP

Page 21: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

ReplicationController

Pilnowanie zadanej liczby Pod-ów (replik)

“Zatrzaśnięta” wersja obrazu aplikacji

( @sha256 )

Page 22: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

ReplicationController

apiVersion: v1kind: ReplicationControllermetadata: labels: app: jug name: jug-8spec: replicas: 4 selector: app: jug template: metadata: labels: app: jug spec: containers: <DEFINICJA POD-a>

Page 23: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig

Trigger

Wersjonowanie aplikacji

Strategie Rolling update

Recreate

Custom

Hook

Page 24: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Recreate

Pod Pod

rc-1replicas: 2

rc-2replicas: 0

Page 25: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Recreate

rc-1replicas: 0

rc-2replicas: 0

Page 26: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Recreate

rc-1replicas: 0

Pod Pod

rc-2replicas: 2

Page 27: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Rolling

Pod Pod

rc-1replicas: 2

rc-2replicas: 0

Page 28: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Rolling

Pod Pod

rc-1replicas: 2

rc-2replicas: 1

Pod

Page 29: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Rolling

Pod

rc-1replicas: 1

rc-2replicas: 1

Pod

Page 30: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Rolling

Pod

rc-1replicas: 1

Pod Pod

rc-2replicas: 2

Page 31: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

DeploymentConfig - strategia: Rolling

rc-1replicas: 0

Pod Pod

rc-2replicas: 2

Page 32: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

BuildConfigTrigger

Wytwarza image do Imagestream-a

Strategie S2I

Pipeline

Custom

Docker

Dane wejściowe

Git

Dockerfile

Binary

Image

Page 33: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

ServiceVirtual IP

GrupowaniePod-ów

Rodzaje Load Balancer

DNSClusterIPNodeport

LoadBalancer

Endpoint ServiceDiscovery

Env

Page 34: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Service

apiVersion: v1kind: Servicemetadata: labels: app: jug name: jugspec: ports: - name: czesiek port: 8080 protocol: TCP targetPort: 8080 selector: app: jug sessionAffinity: None type: ClusterIP

Page 35: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Label / Selector

Service

selector: app: jug

Pod-1

labels: app: jug

Pod-2

labels: app: jug

Page 36: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Service Discovery

Servicename: jug

Project name: dev

DNS (wewnątrz klastra):jug.dev.svc

ENV: JUG_PORT_8080_TCP_ADDR=172.30.241.153JUG_PORT_8080_TCP=tcp://172.30.241.153:8080JUG_PORT=tcp://172.30.241.153:8080JUG_SERVICE_HOST=172.30.241.153JUG_SERVICE_PORT=8080JUG_PORT_8080_TCP_PORT=8080JUG_PORT_8080_TCP_PROTO=tcpJUG_SERVICE_PORT_CZESIEK=8080

Page 37: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Servicetype: ClusterIPname: db

Servicetype: Endpointname: db

Servicetype: ClusterIPname: db

Proj

ect:

dev

Proj

ect:

sta

ge

Proj

ect:

pro

d

Pod

jdbc:mysql://db:3306

Pod

jdbc:mysql://db:3306

Pod

jdbc:mysql://db:3306

DNS - właściwość konwencji nazw

Page 38: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Route HAProxy

SSLLoad Balancer L7 (HTTP)

Mapowanie publicznych URL-ina Service

Testy A/B

Page 39: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Route

apiVersion: v1kind: Routemetadata: labels: app: jug name: jugspec: host: jug-dev.192.168.99.100.nip.io port: targetPort: czesiek to: kind: Service name: jug weight: 100 wildcardPolicy: None

Page 40: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Servicename: jug

PodIP:10.1.0.4

PodIP:10.2.0.47

Routeto: name: jug

HA

Pro

xy

Page 41: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Demo

Page 42: Maciej Żarczyński · Config Pod Replication Controller. Pod Instancja aplikacji 1+ kontenerów Efemeryczny ReadinessProbe Limit (CPU, RAM) Service Account LivenessProbe. Pod apiVersion:

Credits

Presentation template by SlidesCarnival