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. 2 Agenda + Whoami + Objetivos + Kops + Demo

    + Esteróides + Referências
  2. 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.
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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”
  8. 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...
  9. 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
  10. 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
  11. 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
  12. 23 Objetivos • Métricas • Dashboard • Monitoria • Ingress

    Controller • Cluster Auto-Scaler • Logs
  13. 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)
  14. 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
  15. 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
  16. 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
  17. 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