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.

168c322e7157a4cfffdeb88ab2309e02?s=128

Fernando ike

August 27, 2020
Tweet

Transcript

  1. Kubernetes: Passado, presente e futuro.

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

  3. TEMOS VAGAS!! #VempraZup Tire foto do QR Code para ver

    as oportunidades. zup.com.br/vagas
  4. https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ A diferença do que é Container e VM

  5. None
  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
  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
  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?
  9. None
  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
  11. Borg vs Kubernetes https://kubernetes.io/

  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/
  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 é
  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
  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
  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/
  17. None
  18. Distribuição dos PODs

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

  20. Arquitetura https://kubernetes.io/

  21. Control Plane

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

  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
  24. Componente que expõe Kubernetes API. Control Plane - API Server

    https://kubernetes.io/
  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/
  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/
  27. Gerencia a integração com um provedor de Cloud Control Plane

    - Cloud Controller Manager Node controller Route controller Service controller https://kubernetes.io/
  28. Node/Nós https://kubernetes.io/

  29. Controllers São loops de controles que monitoram o estado do

    cluster, eles fazem ou requisitam o que é necessário
  30. Deployments ReplicaSet StatefulSets DaemonSet CronJob Principais Controllers

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

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

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

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

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

    Services
  36. Services - ClusterIP

  37. Services - NodePort

  38. Services - Load Balancer

  39. Services - Ingress

  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
  41. Storage - Provisioning

  42. Container Storage Interface (CSI)

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

  44. Content Delivery Network Web Application Firewall Origin Cloak IPS/IDS Anti-DDoS

    Segurança - Servidores/Datacenter
  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
  46. Acesso ao Kubernetes https://medium.com/@sureshpalemoni/kubernetes-authentication-and-authorization-with-x509-client-certificates-edbc3517c10

  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
  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
  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
  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/
  51. https://www.redhat.com/pt-br/topics/microservices/what-is-a-service-mesh Service Mesh

  52. Sidecar proxy Service discovery Balanceador de Carga Criptografia Autenticação e

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

    Hub Open Service Mesh Service Mesh Interface
  56. None
  57. https://medium.com/@lawrence143/what-is-kubernetes-distribution-5fd6fe7c3d34 Kubernetes is new Linux

  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)
  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/
  60. Hubble é uma plataforma distribuída para observabilidade em segurança e

    rede para aplicações Cloud Native Troubleshooting de apps no K8s
  61. Hubble - Troubleshooting de apps no K8s

  62. Projetos para colocar no radar

  63. 1.19 (LTS) - 1 ano.

  64. None
  65. O Futuro

  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