Google Kubernetes Engine (GKE)

EdithPuclla 455 views 28 slides Jun 22, 2019
Slide 1
Slide 1 of 28
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28

About This Presentation

An easy way to understand GKE


Slide Content

Perú
Extended Lima

Who I am?
Edith Puclla

@EdithPuclla
Software Engineer/Developer Infrastructure
Next19 Extended Lima

Google Kubernetes Engine
Next19 Extended Lima

¿Contenedores?
Next19 Extended Lima
Fuente: https://avanttic.com/blog/docker-imagenes-vida-contenedores/
Docker!

Arquitectura de docker

¿Kubernetes?
“Kubernetes es una plataforma de código abierto ,
extensible y portátil para administrar cargas de trabajo y
servicios de contenedores, que facilita la configuración
declarativa como la automatización”
Next19 Extended Lima
“Contenedores como ganado y no como
mascotas”
“Un orquestador de contenedores”

Next19 Extended Lima

Kubernetes conceptos
-Nodos
-Pods
-Despliegues
-Servicios

Next19 Extended Lima

Nodos : (Nodes)
Nodos son máquinas (VM or bare metal)
Fuente: https://blog-es.mimacom.com/introduccion-a-kubernetes-y-minikube/
Next19 Extended Lima

Pod (Pod)
Colección de contenedores. La
unidad programable más pequeña
en kubernetes
Fuente: https://kubernetes.io/docs/concepts/
Next19 Extended Lima

Nodos y Pods
Fuente: https://kubernetes.io/docs/concepts/
Next19 Extended Lima

Despliegues (Deployments)
●Declaración del número deseado de pods.
●Cómo crear pods asociados
●Cuántas réplicas queremos por defecto
Fuente: https://blog.binpar.com/gitlab-docker-y-kubernetes-cr%C3%B3nica-de-una-nueva-arquitectura-d5c701ac9768
Next19 Extended Lima

Servicios (Services)
●Los pods no son visibles más allá que su
propio contenedor, sin conocer su ip:port,
qué cambia con frecuencia.
●No se puede interactuar con ellos desde
el exterior.
●Para solucionar esto existen los servicios
que actúan como capa encima de los
pods, gestionando el balanceo de carga
entre ellos. Permitiendo el acceso desde
el interior (red de nodos de kubernetes) o
el exterior.
●Es una forma de coleccionar todos los
pods y exponerlos sobre una dirección IP
estable.
Fuente: https://blog-es.mimacom.com/introduccion-a-kubernetes-y-minikube/
Next19 Extended Lima

Google Kubernetes Engine (GKE)
●“Implementar, administrar y escalar aplicaciones en contenedores en
Kubernetes, con la tecnología de Google Cloud.”
●Los clusters de GKE funcionan con el sistema de administración de clusters
de código abierto de kubernetes.
●Usan tecnología basada en la experiencia de más de 10 años que tiene
Google ejecutando cargas de trabajo de producción en contenedores.
Fuente: https://cloud.google.com/kubernetes-engine/docs/

Qué necesito para iniciar?
●Crear un nuevo proyecto en nuestra cuenta de GCP
●Instalar SDK de Google Cloud
○Inicializar the SDK
●Añadir Kubernetes API
●Crear un cluster en kubernetes
●Instalar kubectl


Next19 Extended Lima

Crear un proyecto en GCP
Next19 Extended Lima

Instalar SDK de Google Cloud

https://cloud.google.com/sdk/docs/quickstart-linux
Next19 Extended Lima

Inicializar the SDK

https://cloud.google.com/sdk/docs/quickstart-linux
Next19 Extended Lima

Añadir Kubernetes API
Next19 Extended Lima

Crear un cluster en kubernetes
1.Por la interface:
Next19 Extended Lima

2. Con google CLI:
Crear un cluster en kubernetes

gcloud beta container --project " ardent-gearbox-244305 " clusters create "test-cluster"
--zone "us-central1-a" --no-enable-basic-auth --cluster-version " 1.12.8-gke.10"
--machine-type "n1-standard-1" --image-type "COS" --disk-type " pd-standard"
--disk-size "100" --metadata disable-legacy-endpoints=true --scopes
"https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/aut
h/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.
com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly"
,"https://www.googleapis.com/auth/trace.append" --num-nodes "1" --enable-cloud-logging
--enable-cloud-monitoring --enable-ip-alias --network
"projects/ardent-gearbox-244305/global/networks/default" --subnetwork
"projects/ardent-gearbox-244305/regions/us-central1/subnetworks/default"
--default-max-pods-per-node "110" --addons HorizontalPodAutoscaling,HttpLoadBalancing
--enable-autoupgrade --enable-autorepair


Next19 Extended Lima
Resultado:

Instalando kubectl
Next19 Extended Lima

Estableciendo nuestro proyecto en local machine
gcloud container clusters get-credentials
test-cluster --zone us-central1-a --project
ardent-gearbox-244305
Next19 Extended Lima
kubectl config set-context gke_ardent-gearbox-244305_us-central1-a_test-cluster
Context "gke_ardent-gearbox-244305_us-central1-a_test-cluster" modified.
gcloud command line
kubectl
kubectl config get-contexts

Comandos kubectl
kubectl config get-contexts
kubectl config set-context <context-name>
kubectl get all
kubectl get nodes
kubectl get pods
kubectl get deployments
kubectl get services

Next19 Extended Lima

Kubectl
kubectl apply -f <file_name_yaml>
kubectl apply -f .
kubectl get all
kubectl describe <deployment_name>
kubectl log <pod_name>
kubectl get pods
kubectl get deployments
kubectl get services
kubectl delete -f <file_name_yaml>
kubectl delete -f .
Next19 Extended Lima

Quick Start Labs

Next19 Extended Lima

●Pod nginx
●Pod volumen
●Replica set
●Deployment hello-world ( paused )
●Servicio hello-world
kubectl port-forward pod/result-f9d6d7fb6-w9n86 8088:80
kubectl port-forward pod/pod 8080:80
kubectl exec -it deployment-7ffc6bc689-6dc7p -c nginx -- sh
kubectl rollout resume deployment/hello-world
kubectl describe pods
kubectl describe service hello-world

Muchas gracias!! ;)