|
| 1 | +--- |
| 2 | +title: Entendendo os objetos do Kubernetes |
| 3 | +content_type: concept |
| 4 | +weight: 10 |
| 5 | +card: |
| 6 | + name: concepts |
| 7 | + weight: 40 |
| 8 | +--- |
| 9 | +<!-- overview --> |
| 10 | +Esta página explica como os objetos do Kubernetes são representados na API do Kubernetes e como você pode expressá-los no formato `.yaml`. |
| 11 | + |
| 12 | +<!-- body --> |
| 13 | +## Entendendo os objetos do Kubernetes {#kubernetes-objects} |
| 14 | + |
| 15 | +*Os objetos do Kubernetes* são entidades persistentes no Kubernetes. Kubernetes utiliza estas entidades para representar o estado do cluster. Especificamente, eles podem descrever: |
| 16 | + |
| 17 | +* Quais aplicativos estão sendo executados (e em quais nós). |
| 18 | +* Os recursos disponíveis para esses aplicativos |
| 19 | +* As políticas acerca de como esses aplicativos se comportam, como políticas de reinicialização e tolerâncias a falhas. |
| 20 | + |
| 21 | +Um objeto do Kubernetes é um “registro de intenção”-uma vez criado o objeto, o sistema do Kubernetes trabalha constantemente para garantir que este objeto existe. Ao criar um objeto, você está efetivamente falando para o sistema do Kubernetes como você quer que a carga do seu cluster seja. Este é o *estado desejado* do seu cluster. |
| 22 | + |
| 23 | +Para trabalhar com objetos do Kubernetes seja para criar, modificar ou deletar eles, você precisará usar a [API do Kubernetes](/docs/concepts/overview/kubernetes-api/). Quando você usa a interface de linha de comando do `kubectl`, por exemplo, o CLI faz as chamadas necessárias na API do Kubernetes para você. Você também pode usar a API do Kubernetes diretamente no seu próprio programa usando uma das [Bibliotecas](/docs/reference/using-api/client-libraries/). |
| 24 | + |
| 25 | +### Especificação e status do objeto |
| 26 | + |
| 27 | +Quase todos os objetos do Kubernetes incluem dois campos de objetos aninhados que governam a configuração do objeto: a *`especificação`* do objeto e o *`status`* do objeto. Para objetos que têm especificação, você tem que definir isso quando você cria o objeto, fornecendo uma descrição das características que você quer que o recurso tenha: o seu _estado desejado_. |
| 28 | + |
| 29 | +O `status` descreve o _estado atual_ do objeto, fornecido e atualizado pelo Kubernetes e seus componentes. A {{< glossary_tooltip text="camada de gerenciamento" term_id="control-plane" >}} do Kubernetes gerêncai continuamente e ativamente o real estado para corresponder ao estado desejado que você forneceu. |
| 30 | + |
| 31 | +Por exemplo, no Kubernetes, o {{< glossary_tooltip text="Deployment" term_id="deployment" >}} é um objeto que pode representar uma aplicação executando no seu cluster. Quando você cria o Deployment, você pode alterar a `especificação`para definir que você quer três réplicas da aplicação em execução simultânea. O Kubernetes lê as especificações do Deployment e inicia três instâncias do seu aplicativo desejado, atualizando o status para corresponder às suas especificações. Se uma dessas instâncias falhar (um status mudar), o Kubernetes responde as diferenças entre as especificações e o status fazendo uma correção-neste caso, iniciando uma instância de substituição. |
| 32 | + |
| 33 | +Para mais informações sobre especificações do objeto, status e metadados, veja [Kubernetes API Conventions](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md). |
| 34 | + |
| 35 | +### Descrevendo um objeto Kubernetes |
| 36 | + |
| 37 | +Quando se cria um objeto do Kubernetes, deve-se fornecer a especificação do objeto que descreve seu estado desejado, bem como algumas informações básicas sobre o objeto (como um nome, por exemplo). Quando utiliza a API Kubernetes para criar o objeto (diretamente ou via `kubectl`), essa solicitação de API deve incluir essa informação como JSON no corpo da solicitação. **Na maioria das vezes, você fornece as informações ao comando `kubectl` em um arquivo .yaml**. O comando`kubectl` converte a informação para JSON ao fazer a requisição para a API. |
| 38 | + |
| 39 | +Aqui está um exemplo de arquivo `.yaml` que mostra os campos necessários e as especificações de objeto para uma implatação Kubernetes: |
| 40 | + |
| 41 | +{{< codenew file="application/deployment.yaml" >}} |
| 42 | + |
| 43 | +Uma maneira de criar um Deployment usando um arquivo `.yaml` como o representado acima é usar o comando [`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands#apply |
| 44 | +) na interface de linha de comando `kubectl`, passando o arquivo `.yaml` como argumento. Aqui está um exemplo: |
| 45 | + |
| 46 | +```shell |
| 47 | +kubectl apply -f https://k8s.io/examples/application/deployment.yaml |
| 48 | +``` |
| 49 | + |
| 50 | +A saída será similar a esta: |
| 51 | + |
| 52 | +``` |
| 53 | +deployment.apps/nginx-deployment created |
| 54 | +``` |
| 55 | + |
| 56 | +### Campos obrigatórios |
| 57 | + |
| 58 | +No arquivo `.yaml` para o objeto Kubernetes que pretende criar, você precisará definir valores para os seguintes campos: |
| 59 | + |
| 60 | +* `apiVersion` - Qual a versão de API do objeto que será usado no Kubernetes para criar esse objeto. |
| 61 | +* `kind` - Qual tipo de objeto pretende criar. |
| 62 | +* `metadata` - Dados que ajudam a identificar de forma única o objeto, incluindo uma string `nome`, `UID` e um `namespace`. |
| 63 | +* `spec` - Que estado deseja para o objeto. |
| 64 | + |
| 65 | +O formato preciso do objeto `spec` é diferente para cada objeto Kubernetes, e contém campos aninhados específicos para aquele objeto. A documentação de [referência da API do Kubernetes](/docs/reference/kubernetes-api/) pode ajudar a encontrar o formato de especificação para todos os objetos que você pode criar usando Kubernetes. |
| 66 | + |
| 67 | +Por exemplo, veja o campo de [`spec` field](/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec) para a referência Pod API. |
| 68 | +Para cada Pod, o campo `.spec` especifica o pod e seu estado desejado (como o nome da imagem do contêiner para cada recipiente dentro daquela cápsula). |
| 69 | +Outro exemplo de especificação de um objeto é o |
| 70 | +[campo `spec` ](/docs/reference/kubernetes-api/workload-resources/stateful-set-v1/#StatefulSetSpec). |
| 71 | +Para o StatefulSet, o campo `.spec` especifica o StatefulSet e seu estado desejado. |
| 72 | +Dentro do `.spec` de um StatefulSet está um [template](/docs/concepts/workloads/pods/#pod-templates) |
| 73 | +para objetos de Pod. Esse modelo descreve os Pods que o controlador StatefulSet criará para |
| 74 | +satisfazer a especificação do StatefulSet. Diferentes tipos de objetos também podem ter diferentes |
| 75 | +`.status`; novamente, as páginas de referência API detalham a estrutura daquele campo `.status`, |
| 76 | +e seu conteúdo para cada tipo diferente de objeto. |
| 77 | + |
| 78 | +## {{% heading "whatsnext" %}} |
| 79 | + |
| 80 | +Aprenda sobre os mais importantes objetos básicos Kubernetes, como o [Pod](/docs/concepts/workloads/pods). |
| 81 | +Aprenda sobre as [controladoras](/docs/concepts/architecture/controller/) do Kubernetes. |
| 82 | +[Usando a API Kubernetes](/docs/reference/using-api) explica mais alguns conceitos da API. |
0 commit comments