3. “ É a abstração de infraestrutura que atua na virtualização em
nível de sistema operacional. Em termos simples, um contêiner é
capaz de isolar um processo do resto do sistema, de forma que ele
‘pense’ que está rodando em uma máquina completamente
separada, quando na verdade ele é só mais um processo sendo
executado pelo sistema operacional. ”
O que é?
4.
5. • Isolamento (limitações)
• Ganho de performance
• Utilização mais racional de recursos
• Rapidez no deployment (imagens Dockerfile)
• Menor dependência do ambiente
• Menor dependência do ambiente
Motivação para o uso
6. • Como escalar containers?
• Como garantir o trabalho coordenado entre os
diferentes containers de uma aplicação?
• Como detectar containers com falhas e corrigir
isso automaticamente?
Dificuldades
7.
8. “O Kubernetes (K8s ou kube) é um sistema de código
aberto para automatizar a implantação,
dimensionamento e gerenciamento de aplicativos em
contêiner. Ele agrupa contêineres que compõem um
aplicativo em unidades lógicas para facilitar o
gerenciamento e a descoberta ”
O que é?
10. Kubernetes: uma visão geral
• Também conhecido como K8s ou kube
• Desenvolvido originalmente pela Google
• Mantido pela Cloud Native Computing Foundation
• Escrito em Go
• Open source
11. Kubernetes: uma visão geral
• Cluster com máquina Master e Nodes
• Criação de objetos através de arquivos no formato YAML
• Diversas funcionalidades para gerenciamento
• kubectl (ferramenta de linha de comando)
• Minikube (ambiente de testes)
12. Kubernetes: gerenciamento de containers
• Orquestração
• Auto recuperação
• Reinício
• Replicação
• Escalonamento
13. Worker Node
Arquitetura
• Master
• Máquina que controla os Nodes (Nós)
• Responsável pelas atribuições de tarefas
aos Nodes
• Nodes
• Máquinas que realizam as tarefas
atribuídas pelo Master
Cluster
14. • Agente do nó primário (Primary node agent)
• Garante a inicialização e o correto funcionamento
dos containers
• É a “terceirização” do master
Kubelet
Arquitetura
Cluster
15. • Pods são instâncias de implantações , grupo de um ou mais containers implantados em um Node (Nó)
• Um Pod pode hospedar vários contêineres e volumes de armazenamento
• Uma implantação pode ter vários pods
• Podem ser interrompidos automaticamente com base no uso da CPU
• Os contêineres no mesmo pod têm acesso a volumes compartilhados
• Cada Pod tem seu IP exclusivo no cluster
• Os pods estão em funcionamento até
que alguém os destrua
• Todos os dados salvos no Pod
desaparecerão sem um armazenamento
persistente
Pod
Arquitetura
16. • Abstração de um Pod com recursos adicionais.
• É um modelo para a criação dos Pods.
• Conta com gerenciamento de estados.
• Lida com a atualização de seus respectivos Pods.
• Seu objetivo é manter os Pods em execução e
atualizá-los de uma maneira mais controlada.
• O Deployment pode aumentar as réplicas dos Pods.
Deployment
Arquitetura
17. • É um objeto, onde podemos armazenar informações confidenciais.
• Nos arquivos de secret, os valores são codificados em base64.
• Para usar um segredo, precisamos nos referir ao segredo em nosso Pod.
• Ou podemos colocá-lo dentro de um volume e montá-lo dinamicamente no contêiner.
• Segredos não são criptografados por padrão. Para criptografia, precisamos criar um EncryptionConfig.
Secret
Arquitetura
18. • Um serviço é responsável por tornar nossos Pods detectáveis dentro da rede ou expô-los à Internet
• Um serviço identifica os pods por seu LabelSelector
Existem 3 tipos de serviços:
• ClusterIP: Expõe o serviço em um IP interno do cluster. A escolha desse valor torna o Serviço acessível apenas
de dentro do cluster.
• NodePort : Expõe o serviço no IP de cada nó em uma porta estática. Um ClusterIP é criado automaticamente
para o qual o NodePort encaminha as solicitações. É possivel entrar em contato com o NodePort de fora do
cluster, solicitando <NodeIP>:<NodePort>
• Load Balancer: Expõe o serviço externamente usando o balanceador de carga do provedor do cluster. É criado
um NodePorte e ClusterIP automaticamente, para os quais o balanceador de carga externo é roteado.
Service
Arquitetura
19. • Controla quantas cópias idênticas de um Pod serão executadas e em
quais locais do cluster
Replication Controller
Arquitetura
21. Exemplo Prático
• API REST criada com o NodeJs
• Criação de um cluster através do Azure
Kubernetes Service (AKS)
github.com/astraube/kubernetes-nodejs
Ele não fornece uma VM, mas sim um ambiente virtual semelhante ao chroot, mas com um isolamento maior. Essa característica permite definir limitações de recursos por container, por exemplo, CPU, memória, I/O, entre outros.
Na prática, o SO convidado e o hypervisor são eliminados e o host entra em contato direto com as bibliotecas. Com essa ligação, os itens ficam portáveis para qualquer outro host que também possua o sistema de virtualização instalado. A consequência é a redução do tempo de deploy de uma aplicação ou infraestrutura.
Assim, é desnecessário ajustar o ambiente para que o serviço funcione corretamente. Ou seja, ele é sempre igual e é configurado uma vez. A partir disso, basta replicá-lo.
Ele não fornece uma VM, mas sim um ambiente virtual semelhante ao chroot, mas com um isolamento maior. Essa característica permite definir limitações de recursos por container, por exemplo, CPU, memória, I/O, entre outros.
Na prática, o SO convidado e o hypervisor são eliminados e o host entra em contato direto com as bibliotecas. Com essa ligação, os itens ficam portáveis para qualquer outro host que também possua o sistema de virtualização instalado. A consequência é a redução do tempo de deploy de uma aplicação ou infraestrutura.
Assim, é desnecessário ajustar o ambiente para que o serviço funcione corretamente. Ou seja, ele é sempre igual e é configurado uma vez. A partir disso, basta replicá-lo.
Kubectl:
uma ferramenta CLI para Kubernetes
Nó Mestre:
A máquina principal que controla os nós
Ponto de entrada principal para todas as tarefas administrativas
Ele lida com a orquestração dos nós do trabalhador
Nodes:
É uma máquina em Kubernetes
Esta máquina que executa as tarefas solicitadas. Cada nó é controlado pelo nó master
Executa contêineres dentro de PODs
É aqui que o mecanismo do Docker é executado e cuida do download de imagens e do início de contêineres
O master não tem acesso direto a todas as máquinas que compõem os nós do nosso cluster. Isso
seria um trabalho muito grande para um sistema que deve ser, em sua essência, simples e robusto.
Portanto, terceirizamos este trabalho para os kubelets, que vão ser responsáveis por receber estes
comandos e executá-los individualmente em suas próprias máquinas. Todo nó criado pelo master
deverá obrigatoriamente conter um kubelet funcional - isto faz parte da arquitetura do sistema e
não pode ser alterado.