102
DEVELOPER INTRO TO @dpokusa

DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

DEVELOPER INTRO TO

@dpokusa

Page 2: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

Page 3: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

● Czym jest i jak działa kubernetes?

Page 4: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

● Czym jest i jak działa kubernetes?

● Jak zacząć pracować z kubernetesem?

Page 5: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

● Czym jest i jak działa kubernetes?

● Jak zacząć pracować z kubernetesem?

● Dlaczego i kiedy warto rozważyć kubernetesa?

Page 6: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

● Czym jest i jak działa kubernetes?

● Jak zacząć pracować z kubernetesem?

● Dlaczego i kiedy warto rozważyć kubernetesa?

● Codzienna praca z kubernetesem z

perspektywy programisty

Page 7: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM BĘDZIE?

● Czym jest i jak działa kubernetes?

● Jak zacząć pracować z kubernetesem?

● Dlaczego i kiedy warto rozważyć kubernetesa?

● Codzienna praca z kubernetesem z

perspektywy programisty

● Garść doświadczeń

Page 8: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

Page 9: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

● Jak zarządzać produkcyjnym środowiskiem*

Page 10: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

● Jak zarządzać produkcyjnym środowiskiem*

● Jak wygląda codzienna praca od strony OPSa*

Page 11: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

● Jak zarządzać produkcyjnym środowiskiem*

● Jak wygląda codzienna praca od strony OPSa*

● Dyskusji o tym czy dockeryzować bazy danych

czy nie :)

Page 12: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

● Jak zarządzać produkcyjnym środowiskiem*

● Jak wygląda codzienna praca od strony OPSa*

● Dyskusji o tym czy dockeryzować bazy danych

czy nie :)

● Dyskusji o tym dlaczego nie dokeryzować Kafki

Page 13: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

O CZYM NIE BĘDZIE?

● Jak zarządzać produkcyjnym środowiskiem*

● Jak wygląda codzienna praca od strony OPSa*

● Dyskusji o tym czy dockeryzować bazy danych

czy nie :)

● Dyskusji o tym dlaczego nie dokeryzować Kafki

● Szczegółow Ingressa i LB*

Page 14: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 15: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

Page 16: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

Page 17: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

● Oparty o ponad 10 letnie doświadczenie (“Borg”)

Page 18: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

● Oparty o ponad 10 letnie doświadczenie (“Borg”)

● Pierwszy “release” w Lipcu 2015

Page 19: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

● Oparty o ponad 10 letnie doświadczenie (“Borg”)

● Pierwszy “release” w Lipcu 2015

● 100% Open Source

Page 20: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

● Oparty o ponad 10 letnie doświadczenie (“Borg”)

● Pierwszy “release” w Lipcu 2015

● 100% Open Source

● Go

Page 21: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

KUBERNETES

● Google

● Projekt został uruchomiony w 2014

● Oparty o ponad 10 letnie doświadczenie (“Borg”)

● Pierwszy “release” w Lipcu 2015

● 100% Open Source

● Go

● Z greckiego “Sternik” (helmsman or pilot)

Page 22: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 23: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 24: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

DESIRED STATE MANAGEMENT

Page 25: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 26: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 27: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

API

Page 28: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

Page 29: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

NO

DE

1N

OD

E 2

NO

DE

3

Page 30: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

NO

DE

1N

OD

E 2

NO

DE

3

KUBLET

KUBLET

KUBLET

Page 31: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

NO

DE

1N

OD

E 2

NO

DE

3

KUBLET

Kube-proxy

Kube-proxy

Kube-proxy

KUBLET

KUBLET

Page 32: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

NO

DE

1N

OD

E 2

NO

DE

3

KUBLET

Kube-proxy

Kube-proxy

Kube-proxy

KUBLET

KUBLET

cAdvisor

cAdvisor

cAdvisor

Page 33: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

MASTERK8s Cluster Services

ControllerManagerScheduler

ETCD

API

NO

DE

1N

OD

E 2

NO

DE

3

KUBLET

Kube-proxy

Kube-proxy

Kube-proxy

KUBLET

KUBLET

cAdvisor

cAdvisor

cAdvisor

POD

POD

POD

POD

Page 34: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD

Page 35: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

http://blog.arungupta.me/wp-content/uploads/2015/07/kubernetes-key-concepts.png

Page 36: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

apiVersion: v1kind: Podmetadata: name: my-pod labels: component: my-podspec: containers: - image: some-image:1.0 name: my-pod ports: - containerPort: 8080

Page 37: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kubectl

kubectl create

kubectl delete

kubectl get

kubectl describe

kubectl logs

kubectl exec

Page 38: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 39: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 40: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

SERVICE

Page 41: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kind: ServiceapiVersion: v1metadata: name: my-servicespec: selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376

Page 42: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD A

POD B

POD B

POD B

Page 43: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD A

POD B

POD B

POD B

A

B

Page 44: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

POD B

POD B

A

B

Page 45: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

POD B

POD B

A

B POD A

Page 46: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

A

B POD A

Page 47: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kind: ServiceapiVersion: v1metadata: name: my-service namespace: prodspec: type: ExternalName externalName: my.database.example.com

Page 48: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

A

B POD A

C

Page 49: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

A

B POD A

C

Page 50: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

POD A

POD B

A

B POD A

C

Page 51: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

LET’S START!

Page 52: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

https://github.com/kubernetes/minikube

Page 53: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ minikube start

Page 54: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ minikube start --memory=6000

VT-x enabled in BIOSInstalled kubectl

Virtualization system installed(virtualbox, vmwarefusion, KVM, xhyve, Hyper-V)

Page 55: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

➜ minikube startStarting local Kubernetes v1.7.5 cluster...Starting VM...Getting VM IP address...Moving files into cluster...Setting up certs...Connecting to cluster...Setting up kubeconfig...Starting cluster components...Kubectl is now configured to use the cluster.

talks/dev-intro-to-kubernetes/kubernetes on master took 1m 2s

Page 56: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

eval $(minikube docker-env)

Page 57: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

DASHBOARD

Page 58: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 59: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

Service DISCOVERY

Page 60: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kubectl run curl --image=radial/busyboxplus:curl -i --tty

Page 61: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

DEPLOYMENT

Page 62: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

apiVersion: apps/v1beta2kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80

Page 63: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 64: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

ROLLING UPDATE

Page 65: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 66: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 67: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 68: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 69: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 70: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

A

Page 71: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ kubectl set image deployment/nginx-deployment nginx=nginx:1.91

$ kubectl rollout status deployments nginx-deployment

$ kubectl rollout history deployment/nginx-deployment

$ kubectl rollout undo deployment/nginx-deployment

Page 72: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

#[Mean = 907.002, StdDeviation = 861.077]#[Max = 4313.088, Total count = 7625]#[Buckets = 27, SubBuckets = 2048]---------------------------------------------------------- 7627 requests in 10.01s, 1.58MB readRequests/sec: 762.30Transfer/sec: 161.81KB

Page 73: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

#[Mean = 2866.439, StdDeviation = 2311.337]#[Max = 8552.448, Total count = 3342]#[Buckets = 27, SubBuckets = 2048]---------------------------------------------------------- 3344 requests in 10.01s, 709.26KB read Socket errors: connect 0, read 0, write 4, timeout 111Requests/sec: 333.96Transfer/sec: 70.83KB

Page 74: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

SCALING

Page 75: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ kubectl scale deployment nginx-deployment --replicas=5

$ kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

Page 76: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

SECRETS

Page 77: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kubectl create secret generic mongodb-credentials --from-literal=username=user –from-literal=password=pass

spec: containers: - name: my-app image: my-app:0.0.1-SNAPSHOT ports: - containerPort: 8080 env: - name: LOG_APPENDER value: Console - name: HRPROJECTS_MONGODB_PASSWORD valueFrom: secretKeyRef: name: mongodb-credentials key: password

Page 78: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kubectl create secret generic mongodb-credentials --from-literal=username=user –from-literal=password=pass

spec: containers: - name: my-app image: my-app:0.0.1-SNAPSHOT ports: - containerPort: 8080 env: - name: LOG_APPENDER value: Console - name: HRPROJECTS_MONGODB_PASSWORD valueFrom: secretKeyRef: name: mongodb-credentials key: password

@Value("${hrprojects.mongodb.password}")private String password;

Page 79: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

YOU ARE READY!

Page 80: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:
Page 81: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

There is more!

Page 82: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

VOLUMES

Page 83: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kind: PersistentVolumeapiVersion: v1metadata: name: graphite-storage-pv labels: type: localspec: accessModes: - ReadWriteOnce capacity: storage: 1000Mi hostPath: path: "/hosthome/dpokusa/tmp/graphite-minikube-storage"

Page 84: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kind: PersistentVolumeClaimapiVersion: v1metadata: name: graphite-storage-claim labels: type: localspec: volumeName: graphite-storage-pv accessModes: - ReadWriteMany resources: requests: storage: 1000Mi

Page 85: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports: - containerPort: 80 name: grafana - containerPort: 81 name: graphite - containerPort: 8125 name: statsd - containerPort: 8126 name: statsd-admin # statsD administrative port: 8126 volumeMounts: - mountPath: /opt/graphite/storage name: graphite-storage - mountPath: /opt/grafana/storage name: grafana-storage volumes: - name: graphite-storage persistentVolumeClaim: claimName: graphite-storage-claim - name: grafana-storage persistentVolumeClaim: claimName: grafana-storage-claim

Page 86: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

CONFIG MAPS

Page 87: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

kubectl create configmap spring-app-config --from-file=src/main/resources/application.properties

Page 88: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

JOBs

Page 89: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

apiVersion: batch/v1kind: Jobmetadata: name: pispec: template: metadata: name: pi spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: Never backoffLimit: 4

Page 90: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

PETS(Stateful Sets)

Page 91: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

apiVersion: apps/v1beta2kind: StatefulSetmetadata: name: webspec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels serviceName: "nginx" replicas: 3 # by default is 1 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels

Page 92: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: gcr.io/google_containers/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: www spec: accessModes: [ "ReadWriteOnce" ] storageClassName: my-storage-class resources: requests: storage: 1Gi

Page 93: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

INGRESS

Page 94: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

Spring boot k8intergation

<dependency> <groupId>io.fabric8</groupId> <artifactId>spring-cloud-kubernetes-core</artifactId></dependency>

Page 95: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

Reccomended SOURCES

Page 96: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

● kubernetes.io

● http://blog.arungupta.me

● https://github.com/kubernetes/minikube

Page 97: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

ABOUT

software-empathy.pl

@dpokusa

Page 98: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

@dpokusa

ABOUT

SPREADIT.PL18.11.2017

Page 99: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

@dpokusa

ABOUT

Page 100: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ minikube stop

Page 101: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

Q&A

Page 102: DEVELOPER INTRO TO - GitHub Pageszielona-gora-jug.github.io/files/Kubernetes.pdf · 2020. 6. 11. · spec: containers: - name: monitoring image: xxx/graphite-grafana:0.2.0 ports:

$ minikube delete