Kops = Kubernetes per tutti -...

39
Kops = Kubernetes per tutti Introduzione al cluster Kubernetes secondo Kops di Valentino Pistis Cagliari 27 Ottobre 2018 1

Transcript of Kops = Kubernetes per tutti -...

Page 1: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Kops = Kubernetes per tutti

Introduzione al cluster Kubernetes secondo Kops

di Valentino Pistis

Cagliari 27 Ottobre 2018

!1

Page 2: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Guasila

Software Engineer

Padre .......durante il tempo libero

Cagliari 27 Ottobre 2018

Chi sono?!2

Page 3: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un clusterWikipedia:

è un insieme di computer connessi tra loro tramite una rete telematica.

!3

Page 4: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un cluster

cluster di computer fisici

!4

Page 5: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un clustercomputer virtuali

!5

Page 6: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un clustercluster di containers?

No...ma quasi...

!6

Page 7: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un containerLXC -> linux containers

!7

Page 8: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un containerWikipedia:

Linux Container...è un ambiente di virtualizzazione a container, che opera a livello del sistema operativo e permette di eseguire

diversi ambienti Linux virtuali isolati tra loro...

!8

Page 9: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Cos'è un container!9

Page 10: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesWikipedia: e' un sistema di orchestrazione e gestione di container.

!10

Page 11: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesArchitettura

!11

Page 12: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesPods

Un POD rappresenta un processo in esecuzione sul cluster kubernetes

!12

Page 13: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesDeployments

!13

Page 14: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesapiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: k8s-app: myappspec: replicas: 3 selector: matchLabels: k8s-app: myapp template: metadata: labels: k8s-app: myapp spec: containers: - name: nginx image: nginx:1.15.4 resources: limits: cpu: 200m memory: 700Mi requests: cpu: 100m memory: 500Mi ports: - containerPort: 80

!14

Page 15: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesServices

!15

Page 16: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesapiVersion: v1kind: Servicemetadata: labels: k8s-app: myapp name: myapp-service namespace: my-namespace annotations:spec: ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 80 selector: k8s-app: myapp sessionAffinity: None type: ClusterIP

!16

Page 17: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesIngress

!17

Page 18: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesapiVersion: extensions/v1beta1kind: Ingressmetadata: name: myapp-ingress namespace: my-namespace annotations:spec: rules: - host: myapp.org http: paths: - path: backend: serviceName: myapp-service servicePort: 80

!18

Page 19: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesPersistent Volumes

!19

Page 20: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesapiVersion: v1kind: PersistentVolumeClaimmetadata: name: pvc-my-disk namespace: my-namespacespec: accessModes: - ReadWriteOnce resources: requests: storage: 3Gi

!20

Page 21: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesHorizontal Pod Autoscaler

!21

Page 22: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesapiVersion: autoscaling/v2beta1kind: HorizontalPodAutoscalermetadata: name: myapp-hpa namespace: my-namespacespec: scaleTargetRef: apiVersion: apps/v1beta1 kind: Deployment name: myapp minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu targetAverageUtilization: 90 - type: Resource resource: name: memory targetAverageUtilization: 90

!22

Page 23: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesCluster Autoscaler

!23

Page 24: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesMonitoring e Logging

!24

Page 25: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesSite Reliability Engineering:

is a discipline that incorporates aspects of software engineering and applies that to IT operations problems

!25

Page 26: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KubernetesCreazione cluster

!26

Page 27: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KopsCome funziona

!27

Page 28: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Kops!28

Page 29: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Kopsinstallare kops

macos: • brew update && brew install kops

Linux: • curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s

https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64

• chmod +x kops-linux-amd64• sudo mv kops-linux-amd64 /usr/local/bin/kops

!29

Page 30: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KopsIAM per kops

• aws iam create-group --group-name kops• aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-

name kops• aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-

name kops• aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name

kops• aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops• aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-

name kops• aws iam create-user --user-name kops• aws iam add-user-to-group --user-name kops --group-name kops• aws iam create-access-key --user-name kops

!30

Page 31: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KopsS3 Bucket per cluster state storage

• aws s3api create-bucket --bucket my-cluster-state-store --region aws-region --create-bucket-configuration LocationConstraint=aws-region

• aws s3api put-bucket-versioning --bucket my-cluster-state-store --versioning-configuration Status=Enabled`

!31

Page 32: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Kops

Un solo comando Kops per accendere Kubernetes su AWS: • kops create cluster --cloud aws --zones aws-zone my-cluster-name --yes

Un solo comando per distruggere: • kops delete cluster --name my-cluster-name --yes

Due comandi per aggiornare il cluster: • kops update cluster my-cluster-name --yes• kops rolling-update cluster my-cluster-name --yes

!32

Page 33: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Comandi utili• kops validate cluster

!33

Page 34: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Comandi utilivpistis@vpistisMacBookAir⎈ (my-kube-cluster-name|namespace) ~> kops validate cluster Using cluster from kubectl context: my-kube-cluster-name

Validating cluster my-kube-cluster-name

INSTANCE GROUPSNAME ROLE MACHINETYPE MIN MAX SUBNETSapp-nodes Node t2.large 1 20 eu-west-2bdb-nodes Node t2.large 1 8 eu-west-2bmaster-eu-west-2b Master c4.large 1 3 eu-west-2b

NODE STATUSNAME ROLE READYip-X-X-X-X.eu-west-2.compute.internal node Trueip-X-X-X-X..eu-west-2.compute.internal node Trueip-X-X-X-X..eu-west-2.compute.internal node Trueip-X-X-X-X..eu-west-2.compute.internal masterTrueip-X-X-X-X..eu-west-2.compute.internal node Trueip-X-X-X-X..eu-west-2.compute.internal node True

Your cluster my-kube-cluster-name is ready

!34

Page 35: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Comandi utili• kubectl top pods • kubectl top nodes • kubectl apply -f config-file.yaml

!35

Page 36: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Comandi utilikubectl top pods

NAME CPU(cores) MEMORY(bytes) deployment-name-xxxxxxx-xxxxxx 18m 53Mi

kubectl top nodes

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% ip-x-x-x-x.eu-west-2.compute.internal 415m 20% 5236Mi 66% ip-x-x-x-x.eu-west-2.compute.internal 108m 5% 4845Mi 61%

!36

Page 37: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

KopsKubernetes Dashboard

!37

Page 38: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Kopse ora?

Docker: la tua applicazione web Load Balancer: Zalando skipper e aws ingress controller..Logging: Fluentd, Mongo, ElasticSearch... Monitoring: Prometheus, Grafana...

!38

Page 39: Kops = Kubernetes per tutti - linuxday.gulch.itlinuxday.gulch.it/slides/2018/pistis_kubernetes_linuday2018.pdfLinux Container...è un ambiente di virtualizzazione a container, ...

Cagliari 27 Ottobre 2018

Grazie!Valentino Pistis

github: @vpistis

!39