Kubernetes: Resumo dos Principais Conceitos: Difference between revisions

From Wiki
No edit summary
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Principais Conceitos=
=Principais Conceitos=


'''Definição''':
=== Definição ===
: O Kubernetes é um orquestrador de contêineres para provisionar, gerenciar e dimensionar aplicativos. Em outras palavras, o Kubernetes permite gerenciar o ciclo de vida
: O Kubernetes é um orquestrador de contêineres para provisionar, gerenciar e dimensionar aplicativos. Em outras palavras, o Kubernetes permite gerenciar o ciclo de vida
: de aplicativos conteinerizados em um cluster de nós (que é uma coleção de máquinas de trabalho).
: de aplicativos conteinerizados em um cluster de nós (que é uma coleção de máquinas de trabalho).


'''O que o Kubernets prove?''':
'''O que o Kubernets prove?''':
: * Provisões e escalonamento de aplicativos
: * Provisonamento e escalonamento de aplicativos
: * Gerencia o ciclo de vida de aplicativos conteinerizados em um cluster de nós
: * Gerencia o ciclo de vida de aplicativos conteinerizados em um cluster de nós
: * Organiza a infraestrutura de computação, rede e armazenamento de cargas de trabalho do usuário
: * Organiza a infraestrutura de computação, rede e armazenamento de cargas de trabalho do usuário


'''Modelo Declarativo'''
=== Modelo Declarativo ===
: O principal paradigma do Kubernetes é seu modelo declarativo. O usuário fornece o estado desejado e o Kubernetes fará o melhor para que isso aconteça. Case você precise
: O principal paradigma do Kubernetes é seu modelo declarativo. O usuário fornece o estado desejado e o Kubernetes fará o melhor para que isso aconteça. Case você precise
: de cinco instâncias, não inicie cinco instâncias separadas, mas diga ao Kubernetes que precisa de cinco instâncias, e o Kubernetes irá reconciliar o estado automaticamente.
: de cinco instâncias, não inicie cinco instâncias separadas, mas diga ao Kubernetes que precisa de cinco instâncias, e o Kubernetes irá reconciliar o estado automaticamente.


'''Arquitetura do Kubernets'''
=== Arquitetura do Kubernets ===


: O Kubernetes é um armazém de dados ('''etcd'''). O modelo declarativo é armazenado no etcd como objetos, e isso significa que quando você deseja cinco instâncias de um
: O Kubernetes é um armazém de dados ('''etcd'''). O modelo declarativo é armazenado no etcd como objetos, e isso significa que quando você deseja cinco instâncias de um
Line 20: Line 20:
: e tentam agir para atingir o estado desejado, criando os recursos para execução da aplicação.
: e tentam agir para atingir o estado desejado, criando os recursos para execução da aplicação.


'''Kubernetes resource model'''
[[Ficheiro:K8s architecture.png]]
 
=== Kubernetes resource model ===


:O Kubernetes define um recurso para cada finalidade.
:O Kubernetes define um recurso para cada finalidade.


: * Config maps: holds configuration data for pods to consume
:* '''Pods''': o menor e mais simples objeto do Kubernetes. É a unidade de deployment no Kubernetes, que representa uma única instância do aplicativo.
: * Daemon sets: ensures that each node in the cluster runs this pod
::Um Pod é uma coleção lógica de um ou mais contêineres, que:
: * Deployments: defines a desired state of a deployment object
::* São schedulados no mesmo host
: * Events: provides life cycle events on pods and other deployment objects
::* Compartilham o mesmo network namespace
: * Endpoints: allows an inbound connections to reach the cluster services
::* Monte o mesmo storage externo (volumes).
: * Ingress: a collection of rules that allows inbound connections to reach the cluster services
 
: * Jobs: creates one or more pods and when they complete successfully, the job is marked as completed
:* '''ReplicationControllers (rc)''': é um controlador que faz parte do master-node. Ele garante que o número especificado de réplicas para um Pod esteja em execução em qualquer momento específico.
: * Node: a worker machine in Kubernetes
 
: * Namespaces: multiple virtual clusters backed by the same physical cluster
:* '''Replica sets (rs)''': garante que um número especificado de réplicas de pods esteja sendo executado a qualquer momento
: * Pods: the smallest deployable units of computing that can be created and managed in Kubernetes
 
: * Persistent volumes: provides an API for users and administrators to abstract details about how storage is provided from how it is consumed
:* '''Deployments''': define um estado desejado de um objeto de implantação, através de uma forma declarativa (deployment.yaml) para Pods e ReplicaSets.
: * Replica sets: ensures that a specified number of pod replicas are running at any given time
 
: * Secrets: holds sensitive information, such as passwords, OAuth tokens, and SSH keys
 
: * Service accounts: provides an identity for processes that run in a pod
:* '''Config maps''': holds configuration data for pods to consume
: * Services: an abstraction that defines a logical set of pods and a policy by which to access them, sometimes called a microservice
 
: * Stateful sets: the workload API object that manages stateful applications
:* '''Daemon sets''': ensures that each node in the cluster runs this pod
 
:* '''Events''': provides life cycle events on pods and other deployment objects
 
:* '''Endpoints''': allows an inbound connections to reach the cluster services
 
:* '''Ingress''': a collection of rules that allows inbound connections to reach the cluster services
:* '''Jobs''': creates one or more pods and when they complete successfully, the job is marked as completed
:* '''Node''': a worker machine in Kubernetes
:* '''Namespaces''': multiple virtual clusters backed by the same physical cluster
:* '''Persistent volumes''': provides an API for users and administrators to abstract details about how storage is provided from how it is consumed
 
:* '''Secrets''': holds sensitive information, such as passwords, OAuth tokens, and SSH keys
:* '''Service accounts''': provides an identity for processes that run in a pod
:* '''Services''': an abstraction that defines a logical set of pods and a policy by which to access them, sometimes called a microservice
:* '''Stateful sets''': the workload API object that manages stateful applications
 
=== Deploy de uma aplicação no Kubernetes ===


: 1) O usuário implanta um novo aplicativo usando o '''kubectl'''. O Kubectl envia a solicitação ao API Server.
: 2) O '''API Server''' recebe a solicitação e a armazena no armazenamento de dados (etcd). Depois que a solicitação é gravada no armazenamento de dados, o API Server
# responde a solicitação.
: 3) Os '''Watchers''' detectam as mudanças de recursos e enviam notificações para o Controller agir sobre essas mudanças.
: 4) O '''Controller''' detecta o novo aplicativo e cria novos pods para corresponder ao número desejado de instâncias. Alterações no modelo armazenado
: criam ou excluem pods.
: 5) O '''Scheduler''' escolhe o(s) node(s) onde esse novos pods serão executados. O Scheduler modifica o modelo com as informações do node.
: 6) Um '''Kubelet''' em um node detecta um pod com uma atribuição para si mesmo e implanta os contêineres solicitados por meio do tempo de execução do contêiner,
: por exemplo, Docker. Cada nó observa o armazenamento para ver quais pods ele está designado para executar. O nó executa ações necessárias nos recursos
: atribuídos a ele, como criar ou excluir pods.
: 7) O '''kube-proxy''' gerencia o tráfego de rede para os pods, incluindo ''service discovery'' e ''load balance''. Kubeproxy é responsável pela comunicação entre os pods que querem interagir.


= Ver também =
= Ver também =


* [[Kubernetes|  Mais Artigos sobre Kubernetes]]
* [[Docker: Trabalhando com Containers]]
* [[Docker: Trabalhando com Containers]]
* [[Cloud| Artigos sobre Cloud]]
* [[Cloud| Artigos sobre Cloud]]
* [[Tecnologias|  Mais Artigos sobre Cloud / WebDev / Tecnologias]]
* [[Tecnologias|  Mais Artigos sobre Cloud / WebDev / Tecnologias]]


[[Category:Docker]]
[[Category: Docker]]
[[Category:Kubernetes]]
[[Category: Kubernetes]]
[[Category:Cloud]]
[[Category: Cloud]]
[[Category:WebDev]]
[[Category: WebDev]]
[[Category:Tecnologias]]
[[Category: Tecnologias]]

Latest revision as of 02:26, 27 February 2019

Principais Conceitos

Definição

O Kubernetes é um orquestrador de contêineres para provisionar, gerenciar e dimensionar aplicativos. Em outras palavras, o Kubernetes permite gerenciar o ciclo de vida
de aplicativos conteinerizados em um cluster de nós (que é uma coleção de máquinas de trabalho).

O que o Kubernets prove?:

* Provisonamento e escalonamento de aplicativos
* Gerencia o ciclo de vida de aplicativos conteinerizados em um cluster de nós
* Organiza a infraestrutura de computação, rede e armazenamento de cargas de trabalho do usuário

Modelo Declarativo

O principal paradigma do Kubernetes é seu modelo declarativo. O usuário fornece o estado desejado e o Kubernetes fará o melhor para que isso aconteça. Case você precise
de cinco instâncias, não inicie cinco instâncias separadas, mas diga ao Kubernetes que precisa de cinco instâncias, e o Kubernetes irá reconciliar o estado automaticamente.

Arquitetura do Kubernets

O Kubernetes é um armazém de dados (etcd). O modelo declarativo é armazenado no etcd como objetos, e isso significa que quando você deseja cinco instâncias de um
contêiner, essa solicitação é armazenada no etcd. Um gatilho é disparado para os Controllers para executar uma ação. Em seguida, os controladores reagem ao modelo
e tentam agir para atingir o estado desejado, criando os recursos para execução da aplicação.

Ficheiro:K8s architecture.png

Kubernetes resource model

O Kubernetes define um recurso para cada finalidade.
  • Pods: o menor e mais simples objeto do Kubernetes. É a unidade de deployment no Kubernetes, que representa uma única instância do aplicativo.
Um Pod é uma coleção lógica de um ou mais contêineres, que:
  • São schedulados no mesmo host
  • Compartilham o mesmo network namespace
  • Monte o mesmo storage externo (volumes).
  • ReplicationControllers (rc): é um controlador que faz parte do master-node. Ele garante que o número especificado de réplicas para um Pod esteja em execução em qualquer momento específico.
  • Replica sets (rs): garante que um número especificado de réplicas de pods esteja sendo executado a qualquer momento
  • Deployments: define um estado desejado de um objeto de implantação, através de uma forma declarativa (deployment.yaml) para Pods e ReplicaSets.


  • Config maps: holds configuration data for pods to consume
  • Daemon sets: ensures that each node in the cluster runs this pod
  • Events: provides life cycle events on pods and other deployment objects
  • Endpoints: allows an inbound connections to reach the cluster services
  • Ingress: a collection of rules that allows inbound connections to reach the cluster services
  • Jobs: creates one or more pods and when they complete successfully, the job is marked as completed
  • Node: a worker machine in Kubernetes
  • Namespaces: multiple virtual clusters backed by the same physical cluster
  • Persistent volumes: provides an API for users and administrators to abstract details about how storage is provided from how it is consumed
  • Secrets: holds sensitive information, such as passwords, OAuth tokens, and SSH keys
  • Service accounts: provides an identity for processes that run in a pod
  • Services: an abstraction that defines a logical set of pods and a policy by which to access them, sometimes called a microservice
  • Stateful sets: the workload API object that manages stateful applications

Deploy de uma aplicação no Kubernetes

1) O usuário implanta um novo aplicativo usando o kubectl. O Kubectl envia a solicitação ao API Server.
2) O API Server recebe a solicitação e a armazena no armazenamento de dados (etcd). Depois que a solicitação é gravada no armazenamento de dados, o API Server
  1. responde a solicitação.
3) Os Watchers detectam as mudanças de recursos e enviam notificações para o Controller agir sobre essas mudanças.
4) O Controller detecta o novo aplicativo e cria novos pods para corresponder ao número desejado de instâncias. Alterações no modelo armazenado
criam ou excluem pods.
5) O Scheduler escolhe o(s) node(s) onde esse novos pods serão executados. O Scheduler modifica o modelo com as informações do node.
6) Um Kubelet em um node detecta um pod com uma atribuição para si mesmo e implanta os contêineres solicitados por meio do tempo de execução do contêiner,
por exemplo, Docker. Cada nó observa o armazenamento para ver quais pods ele está designado para executar. O nó executa ações necessárias nos recursos
atribuídos a ele, como criar ou excluir pods.
7) O kube-proxy gerencia o tráfego de rede para os pods, incluindo service discovery e load balance. Kubeproxy é responsável pela comunicação entre os pods que querem interagir.

Ver também