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
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
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?
“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
“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/
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 é
“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
“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/
É 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
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/
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/
Gerencia a integração com um provedor de Cloud Control Plane - Cloud Controller Manager Node controller Route controller Service controller https://kubernetes.io/
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
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
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/
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/
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
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)
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/