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. TEMOS VAGAS!! #VempraZup Tire foto do QR Code para ver

    as oportunidades. zup.com.br/vagas
  2. 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
  3. 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
  4. 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?
  5. “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
  6. “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/
  7. 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 é
  8. --- 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
  9. “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
  10. “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/
  11. É 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
  12. 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/
  13. 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/
  14. Gerencia a integração com um provedor de Cloud Control Plane

    - Cloud Controller Manager Node controller Route controller Service controller https://kubernetes.io/
  15. Controllers São loops de controles que monitoram o estado do

    cluster, eles fazem ou requisitam o que é necessário
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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/
  22. Sidecar proxy Service discovery Balanceador de Carga Criptografia Autenticação e

    Autorização Monitoramento/Observabilidade Service Mesh
  23. 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/
  24. 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
  25. Consul Connect* Flagger Istio* Linkerd Maesh Meshery Rio Service Mesh

    Hub Open Service Mesh Service Mesh Interface
  26. 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/
  27. Hubble é uma plataforma distribuída para observabilidade em segurança e

    rede para aplicações Cloud Native Troubleshooting de apps no K8s
  28. 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