Kubernetes: Resumo dos Principais Conceitos: Difference between revisions
(Criou a página com "=Principais Conceitos= '''Definição''': : O Kubernetes é um orquestrador de contêineres para provisionar, gerenciar e dimensionar aplicativos. Em outras palavras, o Kub...") |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
=Principais Conceitos= | =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 | : 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?''': | ||
: * 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 | : 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 === | |||
: 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 | ||
: 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 | : 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. | : 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 | |||
# 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.
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
- 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.