Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Provisionando um cluster K8S multi-master e com esteróides utilizando o Kops

Provisionando um cluster K8S multi-master e com esteróides utilizando o Kops

Nessa apresentação, vamos além do clássico cluster K8S provisionado com o Kops.
Um cluster multi-master, distribuído em 3 AZs, com Dashboard, métricas, monitoria e auto-scaling.
A solução do LOGs não está integrada nessa apresentação, mas uma arquitetura para eles é proposta.
Aproveitem!

drequena

July 19, 2018
Tweet

More Decks by drequena

Other Decks in Technology

Transcript

  1. Provisionando um cluster K8S
    multi-master, e com esteróides,
    utilizando o Kops
    +
    Daniel Requena - DevOPS Engineer

    View Slide

  2. 2
    Agenda
    + Whoami
    + Objetivos
    + Kops
    + Demo
    + Esteróides
    + Referências

    View Slide

  3. 3
    Whoami
    Daniel Requena
    + Sysadmin há 12 anos (3 anos de DevOPS)
    + LPI-1/LPI-2 e Zabbix Specialist
    + Bacharel em CCP / Mestre em Eng. da Computação.
    + Barista Júnior.

    View Slide

  4. 4
    Objetivos
    ◆ Explicar o que é o Kops e por que usá-lo
    ◆ Provisionar um cluster multi-master na AWS com o kops
    ◆ Destrinchar o que o kops provisionou
    ◆ Instalar os esteróides do cluster
    ◆ Testar
    ◆ Destruir tudo

    View Slide

  5. 5
    ◆ Quem conhece/usa Kubernetes?
    ◆ Quem usa AWS?
    ◆ Quem conhece o Kops?
    ◆ Quem usa alguma alternativa ao Kops?
    ◆ Qual o sentido da vida, do universo e de tudo mais?
    Rápida pesquisa

    View Slide

  6. 6
    O que é
    ● Provisionador e gerenciador de clusters K8S.
    ○ AWS / GCP / Digital Ocean / …
    ○ Install from 1.6 to 1.9
    ○ Updates
    ○ Upgrades
    ○ Customize config and cluster
    ○ kubectl experience
    ■ get
    ■ create
    ■ delete
    ■ update/rolling-update
    ■ upgrade
    ■ validate
    ■ describe

    View Slide

  7. 7
    O que é

    View Slide

  8. 8
    O que é
    ● Provisionador e gerenciador de clusters K8S.
    ○ YAML Objects syntax (kubectl edit ...)
    ○ Addons support
    ○ Single Go Binary
    ○ Multiple Network CNI options
    ■ weave
    ■ calico
    ■ flannell
    ■ … +5
    ○ RoadMap
    ○ Multi-master multi-zone clusters

    View Slide

  9. 9
    O que é

    View Slide

  10. 10
    Por que?
    ● Por que não existe EKS na sa-east-1
    ● Por que o EKS ainda tem limitações (HPA)
    ● Flexível (múltiplos CNIs)
    ● Rápido para subir ambientes de teste
    ● Possibilidade de testar várias versões de K8S
    ● Addons “homologados”

    View Slide

  11. 11
    Instance Groups (ig)
    ● Representam ASGs da Amazon
    ○ Master (1 para cada)
    ○ Nodes
    ● Podem ser criados mais IGs (nodes) com características diferentes
    ○ ec2-type
    ○ IOPS
    ○ Labels
    ○ Taints
    ○ etc...

    View Slide

  12. 12
    Pré-Requisitos
    • EC2 na região com Admin role attached (amazon Linux)
    • S3 na região para estado do cluster (ENV KOPS_STATE_STORE)
    • Route53 internal zone (tdc-sp.intra.net.)
    • Kops
    • Kubectl
    • Região Amazon com 3 AZs
    • Limites da conta
    • Permissões

    View Slide

  13. 13
    ● DNS-controller
    ● Network daemon

    View Slide

  14. Demo

    View Slide

  15. 15
    O que foi feito
    kops create cluster \
    --cloud aws \
    --name kubernetes.tdc-sp.intra.net \
    --networking calico \
    --master-count 3 \
    --master-zones us-east-2a,us-east-2b,us-east-2c \
    --master-size m4.large \
    --node-count 3 \
    --zones us-east-2a,us-east-2b,us-east-2c \
    --node-size m4.large \
    -t private \
    --dns private \
    --vpc vpc-0f5d55dff431ae4c0
    kops update cluster --name kubernetes.tdc-sp.intra.net --yes

    View Slide

  16. 16
    O que foi feito

    View Slide

  17. 17
    O que foi feito
    ● VPC
    ● Subnets
    ● Certificados
    ● Config do kubectl
    ● ASG
    ● SG
    ● Launch Config
    ● EC2 nodes
    ● EC2 master
    ● Elastic IP
    ● Route Tables
    ● EBS volumes
    ● Route 53 “A” records
    ● Internet Gateway

    View Slide

  18. 18
    Alterações no cluster

    View Slide

  19. 19
    Alterações no cluster

    View Slide

  20. 20
    Alterações no cluster

    View Slide

  21. 21
    Alterações no cluster

    View Slide

  22. Esteróides
    (addons)

    View Slide

  23. 23
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler
    ● Logs

    View Slide

  24. 24
    Métricas
    kubectl create -f \
    https://raw.githubusercontent.com/kubernetes/kops/master/addons/metrics-
    server/v1.8.x.yaml
    • Usadas para gerenciamento de recursos do cluster
    • HPA
    • Dashboard

    View Slide

  25. 25
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler

    View Slide

  26. 26
    Dashboard
    kubectl create -f \
    https://raw.githubusercontent.com/kubernetes/kops/master/addons/kubernet
    es-dashboard/v1.8.3.yaml

    View Slide

  27. 27
    Dashboard
    • RBAC
    • Dashboard não tem mais acesso a nada
    • Para a demonstração (!)
    • Admin token criado (não faça isso em casa)

    View Slide

  28. 28
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler

    View Slide

  29. 29
    Monitoria
    • Prometheus Operator
    • CoreOS
    • Pacote de vários softwares
    • Métricas do Kubernetes
    • CRD
    • ServiceMonitor
    • AlertManager
    kubectl apply -f \
    https://raw.githubusercontent.com/kubernetes/kops/master/addons/prometh
    eus-operator/v0.19.0.yaml

    View Slide

  30. 30
    Monitoria
    Prometheus
    Operator
    Alert Manager
    ServiceMonitor
    AlertManager

    View Slide

  31. 31
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler

    View Slide

  32. 32
    Ingress Controller
    • Objeto Ingress é nativo no Kubernetes
    • Mas não tem um controller associado padrão.
    • Opções:
    • Nginx
    • ALB (aws)
    • Istio (gateway + virtualservice) *
    • vários outros...
    • Roteamento L7
    • www.meudominio.com.br -> Kubernetes Service - MeuSite

    View Slide

  33. 33
    Ingress

    View Slide

  34. 34
    Ingress

    View Slide

  35. 35
    Ingress Controller
    kubectl create -f \
    https://raw.githubusercontent.com/kubernetes/kops/master/addons/ingress-
    nginx/v1.6.0.yaml

    View Slide

  36. 36
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler

    View Slide

  37. 37
    Cluster Auto-Scaler
    • Escalar os Nodes (ou outro IG) do cluster de forma automática
    • Baseado nos recursos do Metrics
    • Disparado quando não for possível alocar mais PODs
    • Aplicação externa ao Kops/K8s
    https://github.com/kubernetes/kops/tree/master/addons/cluster-autoscaler

    View Slide

  38. 38
    Cluster Auto-Scaler

    View Slide

  39. 39
    Objetivos
    ● Métricas
    ● Dashboard
    ● Monitoria
    ● Ingress Controller
    ● Cluster Auto-Scaler

    View Slide

  40. LOGs

    View Slide

  41. 41
    LOGs
    • Fluentd
    • Redirect Stdout e Stderr p/ ES
    • Cluster Elastic (dentro do K8s)
    kubectl create -f
    https://raw.githubusercontent.com/kubernetes/kops/master/addons/logging-
    elasticsearch/v1.7.0.yaml

    View Slide

  42. 42
    LOGs
    stdout/stderr
    OU
    +

    View Slide

  43. 43
    Bye Bye!
    kops delete cluster --name kubernetes.tdc-sp.intra.net --yes

    View Slide

  44. Obrigado!
    Perguntas ?

    View Slide

  45. 45
    Referências
    • https://github.com/kubernetes/kops
    • https://github.com/kubernetes/kops/blob/master/docs/aws.md
    • https://github.com/kubernetes/kops/tree/master/addons
    • https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-binary-via-curl
    • https://github.com/kubernetes/kops/releases/download/1.9.1/kops-linux-amd64

    View Slide

  46. You can find me at @Daniel_Requena
    (twitter)
    www.linkedin.com/in/danielrequena/
    [email protected]
    [email protected]
    Daniel Requena

    View Slide