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

Kubernetes: Passado, presente e futuro

Kubernetes: Passado, presente e futuro

Apresentação na sala da Zup sobre o que foi preciso acontecer desde os anos 70 para que o Kubernetes existir, o que ele é hoje qual o futuro dele.

Fernando ike

August 27, 2020
Tweet

More Decks by Fernando ike

Other Decks in Technology

Transcript

  1. Kubernetes:
    Passado, presente
    e futuro.

    View full-size slide

  2. Fernando Ike
    // linkedin.com/in/fernandoike
    // twitter.com/fernandoike
    // pontocafe.fernandoike.com

    View full-size slide

  3. TEMOS VAGAS!! #VempraZup
    Tire foto do QR Code para
    ver as oportunidades.
    zup.com.br/vagas

    View full-size slide

  4. https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/
    A diferença do que é Container e VM

    View full-size slide

  5. 1979
    Chroot para
    o Unix 7
    História dos containers
    1982
    Adicionado
    no BSD
    2000
    Criado Jail
    no FreeBSD
    2001
    Criado
    Linux VServer
    2004
    Solaris
    Container
    2005
    Open VZ
    2006
    Process
    Containers/
    Control Groups
    (cgroups)
    2008
    LXC
    2013
    LMCTFY*
    +
    Docker
    *Os conceitos que deram origem ao libcontainer.
    2014
    Kubernetes

    View full-size slide

  6. Azure, AWS, Docker e VMWare anunciam suporte ao Kubernetes
    E a história do Kubernetes?
    Process Containers
    2006
    2008 Process Containers cgroups (Linux)
    2014
    2015
    2017
    2019
    Primeiro Commit - Github Kubernetes
    Primeiro Release Borg Paper
    + Kubernetes doado para Cloud Native Computing
    Foundation
    +
    Hybrid Cloud suportada por soluções baseadas no K8s: IBM Cloud Paks, Google
    Anthos, AWS Outposts e Azure Arc

    View full-size slide

  7. Container é uma unidade padrão de software que
    empacota o código e as suas dependências para
    que um aplicativo seja executada de forma rápida,
    confiável e portável
    O que é Container?

    View full-size slide

  8. “Orquestração de container é um processo de
    automação de tarefas de implantação,
    gerenciamento, dimensionamento e rede de
    containers.”
    “Pode ser usado em qualquer ambiente onde é
    usado containers e pode ajudar na implementação
    da mesma aplicação em diferentes ambientes sem a
    necessidade de novos de redesenho.”
    https://www.redhat.com/en/topics/containers/what-is-container-orchestration

    View full-size slide

  9. Borg vs Kubernetes
    https://kubernetes.io/

    View full-size slide

  10. “Kubernetes é uma sistema open source para gerenciar
    aplicações conteinerizadas através de múltiplos servidores.
    Fornece mecanismos básicos para deploy, manutenção e
    escalabilidade das aplicações”
    O que é Kubernetes?
    https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

    View full-size slide

  11. Não é PaaS, apesar de ter funcionalidades típicas como Gerenciamento de
    deploys, escalabilidade, load balancing
    Não é um middleware
    Não é um Framework de processamento (Ex: Spark, Haddop)
    Não é Banco de dados (Ex: MySQL, PostgreSQL)
    Não é um Storage Cluster (Ex: Ceph, GlusterFS)
    Não é DevOps
    Não é Continuous Delivery
    Não é SRE
    O que não é

    View full-size slide

  12. ---
    apiVersion: v1
    kind: Pod
    metadata:
    creationTimestamp: null
    labels:
    run: nginx
    name: nginx
    spec:
    containers:
    - image: nginx:1.19
    name: nginx
    ports:
    - containerPort: 80
    resources: {}
    dnsPolicy: ClusterFirst
    restartPolicy: Always
    status: {}
    $ kubectl run nginx --image=nginx:1.19 --replicas=3 --port=80
    $ kubectl expose pod nginx --port=80 --target-port=80
    $ kubectl delete service nginx
    $ kubectl delete pod nginx
    Declarativo Imperativo

    View full-size slide

  13. “Objetos são entidades persistentes num sistema Kubernetes.
    Kubernetes usa essas entidades para representar os estados do seu
    cluster. Especificamente, eles podem descrever quais aplicações
    conteinerizadas estão em execução, os recursos disponíveis para elas
    e as políticas sobre o comportamento delas.”
    Objetos

    View full-size slide

  14. “São as menores unidades de computação que pode ser
    criada e gerenciada no Kubernetes. Um Pod é um grupo de
    um ou mais containers, com recursos de rede e
    armazenamento compartilhado e uma especificação de
    como executar os containers”
    Pod
    https://www.jeremyjordan.me/kubernetes/

    View full-size slide

  15. Distribuição dos PODs

    View full-size slide

  16. Arquitetura
    https://thenewstack.io/kubernetes-an-overview/

    View full-size slide

  17. Arquitetura
    https://kubernetes.io/

    View full-size slide

  18. Control Plane

    View full-size slide

  19. Control Plane
    https://kubernetes.io/

    View full-size slide

  20. É um serviço de armazenamento chave-valor
    distribuído, ele fornece uma maneira confiável
    para armazenar dados que precisam ser
    acessados por um sistema distribuído ou por
    cluster de máquinas.
    Control Plane - etcd

    View full-size slide

  21. Componente que expõe Kubernetes API.
    Control Plane - API Server
    https://kubernetes.io/

    View full-size slide

  22. Tipos de agendamento:
    • Requisitos de recursos individuais ou coletivos
    • Restrições de hardware/software/política
    • especificação de afinidade e não afinidade por
    localidade de dados, interferência entre cargas
    de trabalhos e prazos.
    Control Plane - Scheduler
    Observa os Pods recém-criados sem nó
    atribuído e designa um nó para executá-los
    https://kubernetes.io/

    View full-size slide

  23. Componente responsável pela
    execução dos controladores
    Control Plane - Controller Manager
    Node Controller
    Replication Controller
    Endpoints Controller
    Service Account e Token Controller
    https://kubernetes.io/

    View full-size slide

  24. Gerencia a integração com um
    provedor de Cloud
    Control Plane - Cloud Controller Manager
    Node controller
    Route controller
    Service controller
    https://kubernetes.io/

    View full-size slide

  25. Node/Nós
    https://kubernetes.io/

    View full-size slide

  26. Controllers
    São loops de controles que
    monitoram o estado do cluster,
    eles fazem ou requisitam o que
    é necessário

    View full-size slide

  27. Deployments
    ReplicaSet
    StatefulSets
    DaemonSet
    CronJob
    Principais Controllers

    View full-size slide

  28. Comunicação no Cluster - Proxy
    https://kubernetes.io/

    View full-size slide

  29. Comunicação no Cluster - Iptables
    https://kubernetes.io/

    View full-size slide

  30. Comunicação no Cluster - IPVS
    https://kubernetes.io/

    View full-size slide

  31. https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/
    Kube-Proxy vs Iptables vs Calico

    View full-size slide

  32. ClusterIP
    NodePort
    LoadBalancer
    ExternalName
    Ingress
    Container para o mundo - Services

    View full-size slide

  33. Services - ClusterIP

    View full-size slide

  34. Services - NodePort

    View full-size slide

  35. Services - Load Balancer

    View full-size slide

  36. Services - Ingress

    View full-size slide

  37. Storage - Tipos
    awsElasticBlockStore downwardAPI hostPath quobyte
    azureDisk emptyDir iscsi rbd
    azureDisk fc (fibre channel) local scaleIO
    cephfs flexVolume nfs secret
    cinder flocker persistentVolumeClaim storageos
    configMap gcePersistentDisk projected vsphereVolume
    glusterfs portworxVolume

    View full-size slide

  38. Storage - Provisioning

    View full-size slide

  39. Container Storage Interface (CSI)

    View full-size slide

  40. Segurança - Níveis de proteção
    https://kubernetes.io/

    View full-size slide

  41. Content Delivery Network
    Web Application Firewall
    Origin Cloak
    IPS/IDS
    Anti-DDoS
    Segurança - Servidores/Datacenter

    View full-size slide

  42. Acesso a API Server (Control plane)
    Acesso de rede aos Nodes (nodes)
    Limitar o acesso a API do IaaS pelo K8s
    Access to etcd
    Segurança - Infraestrutura

    View full-size slide

  43. Acesso ao Kubernetes
    https://medium.com/@sureshpalemoni/kubernetes-authentication-and-authorization-with-x509-client-certificates-edbc3517c10

    View full-size slide

  44. Autenticação (OpenID/OAuth2, X.509, JWT, RBAC, etc.)
    Implementação de Autenticação => OpenID/OAuth2, certificado x.509, JWT
    Implementar TLS no acesso a API do Kubernetes
    Restringir acesso via X.509, JWT, senha, etc... a API do Kubernetes
    Habilitar TLS no Ingress
    Política de acesso da Rede => Ingress, Egress, isolamento de container
    Criptografia dos secrets no etcd, Vault ou KMS de IaaS
    QoS para os PODs => Guaranteed (request), Burstable (limit), BestEffor (sem)
    Segurança - Acesso aos Workloads

    View full-size slide

  45. Scanner das vulnerabilidades de dependências no
    Container e Sistema Operacional
    Assinar as imagens de containers (ex: Notary)
    Desabilitar usuários privilegiados (ex: root)
    Segurança - Containers

    View full-size slide

  46. Implementar mTLS (mutual TLS)
    Limitar a qtde de portas expostas
    Dependências de terceiros
    Static Application Security Testing
    Dynamic Application Security Testing
    Segurança - Code

    View full-size slide

  47. Camada de infraestrutura de baixa latência
    configurável projetada para lidar com alto
    volume de comunicação de processos em rede
    entre os serviços de infraestrutura de
    aplicações usando APIs.
    Service Mesh
    https://www.nginx.com/blog/what-is-a-service-mesh/

    View full-size slide

  48. https://www.redhat.com/pt-br/topics/microservices/what-is-a-service-mesh
    Service Mesh

    View full-size slide

  49. Sidecar proxy
    Service discovery
    Balanceador de Carga
    Criptografia
    Autenticação e Autorização
    Monitoramento/Observabilidade
    Service Mesh

    View full-size slide

  50. Service Mesh Interface
    É uma coleção de especificações de Custom
    Resource Definitions (CRD) e Extension
    API Servers, essas APIs podem ser
    instaladas em qualquer cluster K8s e
    manipuladas pelas ferramentas padrão.
    https://smi-spec.io/

    View full-size slide

  51. Traffic policy – políticas de identidade e criptografia de
    transporte entre as aplicações
    Traffic telemetry – captura das principais métricas como
    error rate e latẽncia entre os serviços
    Traffic management – gerenciamento do tráfego entre os
    diferentes serviços
    Service Mesh Interface

    View full-size slide

  52. Consul Connect*
    Flagger
    Istio*
    Linkerd
    Maesh
    Meshery
    Rio
    Service Mesh Hub
    Open Service Mesh
    Service Mesh Interface

    View full-size slide

  53. https://medium.com/@lawrence143/what-is-kubernetes-distribution-5fd6fe7c3d34
    Kubernetes is new Linux

    View full-size slide

  54. https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/
    Kubernetes is new Linux
    Homologado na CNCF 112
    distribuições Kubernetes ou
    versões gerenciadas (IaaS/PaaS)

    View full-size slide

  55. Kubernetes is new Linux
    ‘Pure’ distributions
    ‘Plus’ distributions
    Kubernetes-as-a-service
    Limited-purpose distributions
    https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/

    View full-size slide

  56. Hubble é uma plataforma distribuída para
    observabilidade em segurança e rede para
    aplicações Cloud Native
    Troubleshooting de apps no K8s

    View full-size slide

  57. Hubble - Troubleshooting de apps no K8s

    View full-size slide

  58. Projetos para colocar no radar

    View full-size slide

  59. 1.19 (LTS) - 1 ano.

    View full-size slide

  60. https://github.com/kelseyhightower/kubernetes-the-hard-way
    https://wiki.aquasec.com/display/containers/Kubernetes+Architecture+101
    https://blog.risingstack.com/the-history-of-kubernetes/
    http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf
    https://www.slideshare.net/egg9/kubernetes-introduction
    https://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016
    https://en.wikipedia.org/wiki/OS-level_virtualization
    https://cloud.ibm.com/docs/containers?topic=containers-kube_concepts
    https://smi-spec.io/
    https://landscape.cncf.io/category=cloud-native-storage&grouping=category&zoom=250
    https://kubernetes.io/docs
    https://www.alibabacloud.com/blog/getting-started-with-kubernetes-%7C-access-control-a-security-measure-in-kubernetes_596331
    https://www.dnsstuff.com/rbac-vs-abac-access-control
    https://github.com/cilium/hubble
    https://ebpf.io/
    https://github.com/cilium/cilium
    https://rtfm.co.ua/en/kubernetes-clusterip-vs-nodeport-vs-loadbalancer-services-and-ingress-an-overview-with-examples/
    https://en.wikipedia.org/wiki/Intermodal_container
    https://www.pexels.com/photo/aerial-photo-of-buildings-and-roads-681335/
    https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/
    https://docs.aws.amazon.com/pt_br/eks/latest/userguide/calico.html
    Referências

    View full-size slide