diff --git a/content/pt/docs/concepts/containers/runtime-class.md b/content/pt/docs/concepts/containers/runtime-class.md new file mode 100644 index 0000000000..70e42a78f0 --- /dev/null +++ b/content/pt/docs/concepts/containers/runtime-class.md @@ -0,0 +1,179 @@ +--- +title: Classes de execução +content_type: concept +weight: 20 +--- + + + +{{< feature-state for_k8s_version="v1.20" state="stable" >}} + +Essa página descreve o recurso _RuntimeClass_ e a seleção do mecanismo do agente de execução. + +RuntimeClass é uma funcionalidade para selecionar as configurações do agente de execução do contêiner. +A configuração do agente de execução de contêineres é usada para executar os contêineres de um Pod. + + + + +## Motivação + +Você pode configurar um _RuntimeClass_ diferente entre os diferentes Pods para prover +um equilíbrio entre performance versus segurança. Por exemplo, se parte de sua carga de +trabalho necessita de um alto nível de garantia de segurança da informação, você pode +optar em executar esses Pods em um agente de execução que usa virtualização de hardware. +Você então terá o benefício do isolamento extra de um agente de execução alternativo, ao +custo de uma latência adicional. + +Você pode ainda usar um _RuntimeClass_ para executar diferentes Pods com o mesmo agente +de execução de contêineres mas com diferentes configurações. + +## Configuração + +1. Configure a implementação do CRI nos nós (depende do agente de execução) +2. Crie o recurso RuntimeClass correspondente. + +### 1. Configure a implementação do CRI nos nós + +As configurações disponíveis através do RuntimeClass sáo dependentes da implementação do +_Container Runtime Interface_ ({{< glossary_tooltip term_id="cri" >}}). Veja a documentação correspondente [abaixo](#configuração-do-cri) para a +sua implementação CRI para verificar como configurar. + +{{< note >}} +RuntimeClass assume uma configuração homogênea de nós entre todo o cluster por padrão +(o que significa que todos os nós estão configurados do mesmo jeito referente aos agentes de +execução). Para suportar configurações heterogêneas, veja [Associação](#associação) abaixo. +{{< /note >}} + +As configurações possuem um nome `handler` correspondente, referenciado pelo RuntimeClass. +Esse nome deve ser um valor DNS 1123 válido (letras, números e o carácter `-`). + +### 2. Crie o recurso RuntimeClass correspondente + +As etapas de configuração no passo 1 devem todas estar associadas a um nome para o campo `handler` +que identifica a configuração. Para cada um, crie o objeto RuntimeClass correspondente. + +O recurso RuntimeClass atualmente possui apenas 2 campos significativos: o nome do RuntimeClass +(`metadata.name`) e o agente (`handler`). A definição do objeto se parece conforme a seguir: + +```yaml +apiVersion: node.k8s.io/v1 # RuntimeClass é definido no grupo de API node.k8s.io +kind: RuntimeClass +metadata: + name: myclass # O nome que o RuntimeClass será chamado como + # RuntimeClass é um recurso global, e não possui namespace. +handler: myconfiguration # Nome da configuração CRI correspondente +``` + +O nome de um objeto RuntimeClass deve ser um +[nome de subdomínio DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) válido. + +{{< note >}} +É recomendado que operações de escrita no objeto RuntimeClass (criar/atualizar/patch/apagar) +sejam restritas a administradores do cluster. Isso geralmente é o padrão. Veja [Visão Geral +de autorizações](/docs/reference/access-authn-authz/authorization/) para maiores detalhes. +{{< /note >}} + +## Uso + +Uma vez que as classes de execução estão configuradas no cluster, usar elas é relativamente +simples. Especifique um `runtimeClassName` na especificação do Pod. Por exemplo: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: mypod +spec: + runtimeClassName: myclass + # ... +``` + +Isso irá instruir o kubelet a usar o RuntimeClass nomeado acima (myclass) para esse Pod. Se +o nome do RuntimeClass não existir, ou o CRI não puder executar a solicitação, o Pod entrará na [fase +final](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase) `Failed`. Procure por um +[evento](/docs/tasks/debug-application-cluster/debug-application-introspection/) correspondente +para uma mensagem de erro. + +Se nenhum `runtimeClassName` for especificado, o RuntimeHandler padrão será utilizado, que é equivalente +ao comportamento quando a funcionalidade de RuntimeClass está desativada. + +### Configuração do CRI + +Para maiores detalhes de configuração dos agentes de execução CRI, veja [instalação do CRI](/docs/setup/production-environment/container-runtimes/). + +#### dockershim + +O CRI dockershim embutido no Kubernetes não suporta outros agentes de execução. + +#### {{< glossary_tooltip term_id="containerd" >}} + +Agentes de execução são configurados através da configuração do containerd em +`/etc/containerd/config.toml`. Agentes válidos são configurados sob a seção de `runtimes`: + +``` +[plugins.cri.containerd.runtimes.${HANDLER_NAME}] +``` + +Veja a documentação de configuração do containerd para maiores detalhes: +https://github.com/containerd/cri/blob/master/docs/config.md + +#### {{< glossary_tooltip term_id="cri-o" >}} + +Agentes de execução são configurados através da configuração do CRI-O em `/etc/crio/crio.conf`. +Agentes válidos são configurados na seção [crio.runtime +table](https://github.com/cri-o/cri-o/blob/master/docs/crio.conf.5.md#crioruntime-table): + +``` +[crio.runtime.runtimes.${HANDLER_NAME}] + runtime_path = "${PATH_TO_BINARY}" +``` + +Veja a [documentação de configuração](https://raw.githubusercontent.com/cri-o/cri-o/9f11d1d/docs/crio.conf.5.md) do CRI-O para maiores detalhes. + +## Associação + +{{< feature-state for_k8s_version="v1.16" state="beta" >}} + +Ao especificar o campo `scheduling` para um RuntimeClass, você pode colocar limites e +garantir que os Pods executando dentro de uma RuntimeClass sejam associados a nós que +suportem eles. Se o `scheduling` não estiver configurado, assume-se que esse RuntimeClass +é suportado por todos os nós. + +Para garantir que os Pods sejam executados em um nó que suporte um RuntimeClass específico, +aquele conjunto de nós deve possuir uma marca/label padrão que é selecionado pelo campo +`runtimeclass.scheduling.nodeSelector`. O nodeSelector do RuntimeClass é combinado com o +nodeSelector do Pod em tempo de admissão, obtendo a intersecção do conjunto de nós selecionado +por cada. Se existir um conflito, o pod será rejeitado. + +Se os nós suportados possuírem marcação de restrição para prevenir outros Pods com uma +classe de execução diferente de executar no nó, você pode adicionar o campo `tolerations` +ao objeto RuntimeClass. Assim como com o `nodeSelector`, o `tolerations` é combinado com +o campo `tolerations` do Pod em tempo de admissão, efetivamente pegando a intersecção do +conjunto de nós aplicáveis para cada. + +Para saber mais sobre a configuração de seleção de nós e tolerâncias, veja [Associando Pods a +Nós](/docs/concepts/scheduling-eviction/assign-pod-node/). + +### Sobrecarga de Pods + +{{< feature-state for_k8s_version="v1.18" state="beta" >}} + +Você pode especificar os recursos extra que estão associados à execução de um Pod. Declarar esses +recursos extra permite ao cluster (incluindo o agendador/scheduler de pods) contabilizar por +esses recursos quando estiver decidindo sobre Pods e recursos. Para usar a contabilização +desses recursos extras, você deve estar com o [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) +PodOverhead habilitado (ele já está habilitado por padrão). + +Os recursos extras utilizados são especificados no objeto RuntimeClass através do campo `overhead`. +Ao usar esses campos, você especifica o uso extra de recursos necessários para executar +Pods utilizando-se desse Runtimeclass e assim contabilizar esses recursos para o Kubernetes. + + +## {{% heading "whatsnext" %}} + + +- [RuntimeClass Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md) +- [RuntimeClass Scheduling Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/585-runtime-class/README.md#runtimeclass-scheduling) +- Leia mais sobre [Sobrecarga de Pods](/docs/concepts/scheduling-eviction/pod-overhead/) +- [PodOverhead Feature Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md) diff --git a/content/pt/docs/reference/glossary/containerd.md b/content/pt/docs/reference/glossary/containerd.md new file mode 100644 index 0000000000..0eee599829 --- /dev/null +++ b/content/pt/docs/reference/glossary/containerd.md @@ -0,0 +1,19 @@ +--- +title: containerd +id: containerd +date: 2019-05-14 +full_link: https://containerd.io/docs/ +short_description: > + Um agente de execução de contêiner com enfase em simplicidade, robustez e portabilidade + +aka: +tags: +- tool +--- + Um agente de execução de contêiner com enfase em simplicidade, robustez e portabilidade + + + +containerd é um agente de execução de {{< glossary_tooltip text="contêiner" term_id="container" >}} +que executa um serviço no Linux ou Windows. containerd é responsável por buscar e +armazenar as imagens de contêiner, executar contêineres, prover acesso à rede e mais. diff --git a/content/pt/docs/reference/glossary/cri-o.md b/content/pt/docs/reference/glossary/cri-o.md new file mode 100644 index 0000000000..37da1679a1 --- /dev/null +++ b/content/pt/docs/reference/glossary/cri-o.md @@ -0,0 +1,23 @@ +--- +title: CRI-O +id: cri-o +date: 2019-05-14 +full_link: https://cri-o.io/#what-is-cri-o +short_description: > + Um agente de execução leve de contêineres criado especificamente para o Kubernetes + +aka: +tags: +- tool +--- +Uma ferramenta que permite você usar agentes de execução de contêineres OCI com o CRI do Kubernetes + + + +CRI-O é uma implementação do {{< glossary_tooltip term_id="cri" >}} +que permite usar agentes de execução de {{< glossary_tooltip text="contêiner" term_id="container" >}} +compatíveis com as [especificações](https://www.github.com/opencontainers/runtime-spec) da Open Container Initiative (OCI). + +Usar o CRI-O permite ao Kubernetes utilizar-se de qualquer agente de execução compatível +com o OCI para executar {{< glossary_tooltip text="Pods" term_id="pod" >}}, e obter imagens +de contêineres de registros remotos. diff --git a/content/pt/docs/reference/glossary/cri.md b/content/pt/docs/reference/glossary/cri.md new file mode 100644 index 0000000000..cced4ad430 --- /dev/null +++ b/content/pt/docs/reference/glossary/cri.md @@ -0,0 +1,18 @@ +--- +title: Container runtime interface (CRI) +id: cri +date: 2019-03-07 +full_link: /docs/concepts/overview/components/#container-runtime +short_description: > + Uma API para agentes de execução de contêineres se integrarem com o kubelet + + +aka: +tags: +- fundamental +--- +A interface de execução de contêiner (CRI) é uma API para agentes de execução de +contêineres se integrarem com o kubelet em um nó. + + +Para maiores informações, veja as APIs e especificações do [CRI](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-node/container-runtime-interface.md).