/kubernetes-demo

Implementando cluster Kubernetes (AWS EKS) auto escalable con stacks de trazabilidad, metricas y logging

Primary LanguageMakefile

Elastic Container Service for Kubernetes - Amazon EKS

Build Status GitHub Issues GitHub Tag

Prerrequisitos

Recursos desplegados

1. Amazon AWS

  • Virtual Private Cloud (VPC)
  • Identity and Access Management (IAM)
  • Elastic Container Service for Kubernetes (EKS)
  • Auto Scaling Groups (EC2)

2. Kubernetes

  • Metrics Server
  • Cluster Autoscaler (CA)
  • Traefik
  • Grafana
  • Prometheus
  • Loki
  • Fluent Bit
  • Jaeger

Variables

Name Description Type Default Required
PROJECT Nombre del proyecto string falcon no
ENV Nombre del entorno string k8s no

Uso

  1. Crear cluster y nodes
make cluster
  1. Instalar Metrics Server
make metrics-server
  1. Instalar Cluster Autoscaler
make cluster-autoscaler
  • Iniciar el escalado de pods y nodos:
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=100
kubectl run apache-bench -i --tty --rm --image=httpd -- ab -n 5000000 -c 1000 http://php-apache.default.svc.cluster.local/
  • Revisar el escalado de pods:
kubectl get hpa --watch

  • Revisar el escalado de nodos:
kubectl get nodes --watch

  • Revisar logs de cluster-autoscaler:
kubectl logs -f deployment/cluster-autoscaler -n kube-system

  1. Instalando Charts
make charts
  1. Instalar Jaeger:
make jaeger
  • Desplegar aplicacion HotROD
make hotrod
  • Acceder al servicio HotROD mediante localhost
kubectl port-forward service/hotrod 8080:8080

http://localhost:8080/

  • Acceder al servicio Jaeger mediante localhost
kubectl -n monitoring port-forward service/jaeger-query 16686:80

http://localhost:16686/

  1. Instalando Prometheus
make prometheus
  • Acceder al servicio mediante localhost
kubectl -n monitoring port-forward service/prometheus-server 9090:80

http://localhost:9090/

  1. Instalar Loki:
make loki
  • Acceder al servicio mediante localhost
kubectl -n monitoring port-forward service/loki 3100

http://localhost:3100/api/prom/label

  1. Instalar Fluent Bit:
make fluent-bit
  • Acceder al servicio mediante localhost
kubectl -n monitoring port-forward daemonset/fluent-bit-fluent-bit-loki 2020

http://localhost:2020/api/v1/metrics/prometheus

  1. Instalar Grafana
make grafana
  • Acceder al servicio mediante localhost
kubectl -n monitoring port-forward service/grafana 8300:80

http://localhost:8300/

Plantilla JSON para la creacion del Dashboard.

  1. Instalando Traefik
make traefik
  • Acceder al dashboard del servicio mediante localhost

http://localhost:9000/dashboard/#/

kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000

Eliminar

make destroy

Autor

Ivan Echegaray Avendaño