$30 off During Our Annual Pro Sale. View Details »

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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. View Slide

  6. 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 Slide

  7. 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 Slide

  8. 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 Slide

  9. View Slide

  10. “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 Slide

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

    View Slide

  12. “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 Slide

  13. 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 Slide

  14. ---
    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 Slide

  15. “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 Slide

  16. “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 Slide

  17. View Slide

  18. Distribuição dos PODs

    View Slide

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

    View Slide

  20. Arquitetura
    https://kubernetes.io/

    View Slide

  21. Control Plane

    View Slide

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

    View Slide

  23. É 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 Slide

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

    View Slide

  25. 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 Slide

  26. 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 Slide

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

    View Slide

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

    View Slide

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

    View Slide

  30. Deployments
    ReplicaSet
    StatefulSets
    DaemonSet
    CronJob
    Principais Controllers

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. Services - ClusterIP

    View Slide

  37. Services - NodePort

    View Slide

  38. Services - Load Balancer

    View Slide

  39. Services - Ingress

    View Slide

  40. 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 Slide

  41. Storage - Provisioning

    View Slide

  42. Container Storage Interface (CSI)

    View Slide

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

    View Slide

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

    View Slide

  45. 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 Slide

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

    View Slide

  47. 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 Slide

  48. 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 Slide

  49. 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 Slide

  50. 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 Slide

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

    View Slide

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

    View Slide

  53. 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 Slide

  54. 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 Slide

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

    View Slide

  56. View Slide

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

    View Slide

  58. 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 Slide

  59. 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 Slide

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

    View Slide

  61. Hubble - Troubleshooting de apps no K8s

    View Slide

  62. Projetos para colocar no radar

    View Slide

  63. 1.19 (LTS) - 1 ano.

    View Slide

  64. View Slide

  65. O Futuro

    View Slide

  66. 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 Slide