# Instalando a ferramenta kubeadm

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

<img src="https://raw.githubusercontent.com/kubernetes/kubeadm/master/logos/stacked/color/kubeadm-stacked-color.png" align="right" width="150px">Essa página mostra o processo de instalação do conjunto de ferramentas `kubeadm`. 
Para mais informações sobre como criar um cluster com o kubeadm após efetuar a instalação, veja a página [Utilizando kubeadm para criar um cluster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).







<div class="version-list">
    <p>
        Este(a) installation guide cobre a versão v1.36 do Kubernetes. Se você deseja usar uma versão diferente do Kubernetes, consulte as seguintes páginas:
    </p>
    <ul>
        
            
        
            
            <li>
                <a href="https://v1-35.docs.kubernetes.io/pt-br/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Instalando a ferramenta kubeadm (Kubernetes v1.35)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-34.docs.kubernetes.io/pt-br/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Instalando a ferramenta kubeadm (Kubernetes v1.34)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-33.docs.kubernetes.io/pt-br/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Instalando a ferramenta kubeadm (Kubernetes v1.33)</a>
            </li>
            
        
            
            <li>
                <a href="https://v1-32.docs.kubernetes.io/pt-br/docs/setup/production-environment/tools/kubeadm/install-kubeadm/">Instalando a ferramenta kubeadm (Kubernetes v1.32)</a>
            </li>
            
        
    </ul>
</div>


## Antes de você começar

* Uma máquina com sistema operacional Linux compatível. O projeto Kubernetes provê instruções para distribuições Linux baseadas em Debian e Red Hat, bem como para distribuições sem um gerenciador de pacotes.
* 2 GB ou mais de RAM por máquina (menos que isso deixará pouca memória para as suas aplicações).
* 2 CPUs ou mais.
* Conexão de rede entre todas as máquinas no cluster. Seja essa pública ou privada.
* Nome de host único, endereço MAC e product_uuid para cada nó. Veja [aqui](#verify-mac-address) para mais detalhes.
* Certas portas estão abertas em suas máquinas. Veja [aqui](#check-required-ports) para mais detalhes.
* Configuração de swap. O comportamento padrão do kubelet era falhar ao iniciar se a memória swap fosse detectada em um nó.
  O suporte a swap foi introduzido a partir da v1.22. E desde a v1.28, o swap é suportado apenas para cgroup v2; o recurso NodeSwap
  do kubelet está em beta, mas desativado por padrão.
  * Você **DEVE** desabilitar o swap se o kubelet não estiver configurado corretamente para usar swap. Por exemplo, `sudo swapoff -a`
    desabilitará a troca temporariamente. Para tornar essa mudança persistente entre reinicializações, certifique-se de que o swap esteja desabilitado em
    arquivos de configuração como `/etc/fstab`, `systemd.swap`, dependendo de como foi configurado em seu sistema.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>A instalação do <code>kubeadm</code> é feita via binários que usam linkagem dinâmica e assume que seu sistema alvo fornece <code>glibc</code>.
Essa é uma suposição razoável em muitas distribuições Linux (incluindo Debian, Ubuntu, Fedora, CentOS, etc.)
mas nem sempre é o caso com distribuições personalizadas e leves que não incluem <code>glibc</code> por padrão, como o Alpine Linux.
A expectativa é que a distribuição inclua <code>glibc</code> ou uma <a href="https://wiki.alpinelinux.org/wiki/Running_glibc_programs">camada de compatibilidade</a>
que forneça os símbolos esperados.</div>


<!-- steps -->


## Verifique se o endereço MAC e o product_uuid são únicos para cada nó {#verify-mac-address}

* Você pode obter o endereço MAC das interfaces de rede usando o comando `ip link` ou `ifconfig -a`.
* O product_uuid pode ser verificado utilizando o comando `sudo cat /sys/class/dmi/id/product_uuid`.

É provável que dispositivos físicos possuam endereços únicos. No entanto, é possível que algumas máquinas virtuais possuam endereços iguais. O Kubernetes utiliza esses valores para identificar unicamente os nós em um cluster. Se esses valores não forem únicos para cada nó, o processo de instalação pode [falhar](https://github.com/kubernetes/kubeadm/issues/31).

## Verificando os adaptadores de rede

Se você possuir mais de um adaptador de rede, e seus componentes Kubernetes não forem acessíveis através da rota padrão, recomendamos adicionar o IP das rotas para que os endereços do cluster Kubernetes passem pelo adaptador correto.

## Verifique as portas necessárias {#check-required-ports}

Essas [portas necessárias](/docs/reference/networking/ports-and-protocols/)
precisam estar abertas para que os componentes do Kubernetes se comuniquem entre si.
Você pode usar ferramentas como [netcat](https://netcat.sourceforge.net) para verificar se uma porta está aberta. Por exemplo:

```shell
nc 127.0.0.1 6443 -zv -w 2
```

O plugin de rede de Pods que você usa também pode exigir que certas portas estejam
abertas. Como isso varia com cada plugin de rede de Pods, consulte a
documentação dos plugins sobre quais portas precisam estar abertas.

## Instalando um runtime de contêiner {#installing-runtime}

Para executar contêiners em Pods, o Kubernetes usa um
<a class='glossary-tooltip' title='O agente de execução de contêiner é o software responsável por executar os contêineres.' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/setup/production-environment/container-runtimes' target='_blank' aria-label='runtime de container'>runtime de container</a>.

Por padrão, o Kubernetes usa a
<a class='glossary-tooltip' title='Uma API para agentes de execução de contêineres se integrarem com o kubelet' data-bs-toggle='tooltip' data-bs-placement='top' href='/pt-br/docs/concepts/overview/components/#container-runtime' target='_blank' aria-label='Interface de Runtime de Contêiner'>Interface de Runtime de Contêiner</a> (CRI)
para se comunicar com o runtime de contêiner escolhido.

Se você não especificar um runtime, o kubeadm tentará detectar automaticamente um runtime de contêiner instalado
varrendo uma lista de endpoints conhecidos.

Se múltiplos ou nenhum runtime de contêiner forem detectados, o kubeadm lançará um erro
e solicitará que você especifique qual deles deseja usar.

Veja [runtimes de container](/docs/setup/production-environment/container-runtimes/)
para mais informações.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>O Docker Engine não implementa a <a href="/docs/concepts/architecture/cri/">CRI</a>
que é um requisito para um runtime de contêiner trabalhar com o Kubernetes.
Por essa razão, um serviço adicional <a href="https://mirantis.github.io/cri-dockerd/">cri-dockerd</a>
deve ser instalado. cri-dockerd é um projeto baseado no suporte integrado legado
do Docker Engine que foi <a href="/dockershim">removido</a> do kubelet na versão 1.24.</div>


As tabelas abaixo incluem os endpoints conhecidos para sistemas operacionais suportados:

<ul class="nav nav-tabs" id="tabs-container-runtime" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-container-runtime-0" role="tab" aria-controls="tabs-container-runtime-0" aria-selected="true">Linux</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-container-runtime-1" role="tab" aria-controls="tabs-container-runtime-1">Windows</a></li></ul>

<div class="tab-content" id="tabs-container-runtime-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-container-runtime-0" role="tabpanel" aria-labelledby="tabs-container-runtime-0-tab" tabindex="container-runtime"><table><caption style="display: none;">Runtimes de contêiner para Linux</caption>
	<thead>
			<tr>
					<th>Agente de execução</th>
					<th>Caminho para o socket de domínio Unix</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>unix:///var/run/containerd/containerd.sock</code></td>
			</tr>
			<tr>
					<td>CRI-O</td>
					<td><code>unix:///var/run/crio/crio.sock</code></td>
			</tr>
			<tr>
					<td>Docker Engine (usando cri-dockerd)</td>
					<td><code>unix:///var/run/cri-dockerd.sock</code></td>
			</tr>
	</tbody>
</table>
</div><div class="tab-body tab-pane fade"
        id="tabs-container-runtime-1" role="tabpanel" aria-labelledby="tabs-container-runtime-1-tab" tabindex="container-runtime"><table><caption style="display: none;">Runtimes de contêiner para Windows</caption>
	<thead>
			<tr>
					<th>Runtime</th>
					<th>Caminho para o pipe nomeado do Windows</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>containerd</td>
					<td><code>npipe:////./pipe/containerd-containerd</code></td>
			</tr>
			<tr>
					<td>Docker Engine (usando cri-dockerd)</td>
					<td><code>npipe:////./pipe/cri-dockerd</code></td>
			</tr>
	</tbody>
</table>
</div></div>



## Instalando o kubeadm, kubelet e o kubectl

Você instalará esses pacotes em todas as suas máquinas:

* `kubeadm`: o comando para iniciar o cluster.

* `kubelet`: o componente que executa em todas as máquinas do seu cluster
  e faz coisas como iniciar Pods e contêiners.

* `kubectl`: o utilitário de linha de comando para interagir com o cluster.

O kubeadm **não irá** instalar ou gerenciar o `kubelet` ou o `kubectl` para você, então você
precisará garantir que eles correspondam à versão da camada de gerenciamento do Kubernetes 
que você deseja que o `kubeadm` instale para você. Caso isso não seja feito, surge o risco de que uma diferença nas versões 
leve a bugs e comportamentos inesperados. Dito isso, _uma_ diferença de menor grandeza nas versões entre o kubelet e a 
camada de gerenciamento é suportada, mas a versão do kubelet nunca poderá ser superior à versão do servidor da API.
Por exemplo, o kubelet executando 1.7.0 deve ser totalmente compatível com um servidor da API 1.8.0,
mas não o contrário.

Para mais informações acerca da instalação do `kubectl`, veja [Instale e configure o kubectl](/docs/tasks/tools/).

<div class="alert alert-danger" role="note"><h4 class="alert-heading">Aviso</h4>Essas instruções removem todos os pacotes Kubernetes de quaisquer atualizações de sistema.
Isso ocorre porque o kubeadm e o Kubernetes requerem alguns <a href="/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/">cuidados especiais para serem atualizados</a>.</div>


Para mais detalhes sobre compatibilidade entre as versões, veja:

* [Políticas de versão e compatibilidade entre versões](/docs/setup/release/version-skew-policy/) do Kubernetes
* [Política de descompasso de versão específica do Kubeadm](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy)

<div class="alert alert-secondary callout note" role="note">
  <strong>Nota</strong> Os repositórios legados de pacotes (<code>apt.kubernetes.io</code> e <code>yum.kubernetes.io</code>) foram
<a href="/blog/2023/08/31/legacy-package-repository-deprecation/">descontinuados e congelados a partir de 13 de setembro de 2023</a>.
<strong>A utilização dos <a href="/blog/2023/08/15/pkgs-k8s-io-introduction/">novos repositórios de pacotes hospedados em <code>pkgs.k8s.io</code></a>
é fortemente recomendada e requerida para instalar versões do Kubernetes lançadas após 13 de setembro de 2023.</strong>
Os repositórios legados descontinuados e seus conteúdos podem ser removidos a qualquer momento no futuro e sem
um período de aviso prévio. Os novos repositórios de pacotes fornecem downloads para versões do Kubernetes a partir da v1.24.0.
</div>



<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>Existe um repositório de pacotes dedicado para cada versão menor do Kubernetes. Se você deseja instalar
uma versão menor diferente da v1.36, por favor, veja o guia de instalação para
a sua versão menor desejada.</div>


<ul class="nav nav-tabs" id="tabs-k8s-install" role="tablist"><li class="nav-item"><a data-bs-toggle="tab" class="nav-link active" href="#tabs-k8s-install-0" role="tab" aria-controls="tabs-k8s-install-0" aria-selected="true">Distribuições baseadas em Debian</a></li>
	  
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-1" role="tab" aria-controls="tabs-k8s-install-1">Distribuições baseadas em Red Hat</a></li>
		<li class="nav-item"><a data-bs-toggle="tab" class="nav-link" href="#tabs-k8s-install-2" role="tab" aria-controls="tabs-k8s-install-2">Sem um gerenciador de pacotes</a></li></ul>

<div class="tab-content" id="tabs-k8s-install-content"><div class="tab-body tab-pane fadeshow active"
        id="tabs-k8s-install-0" role="tabpanel" aria-labelledby="tabs-k8s-install-0-tab" tabindex="k8s-install"><p>Essas instruções são para o Kubernetes v1.36.</p>
<ol>
<li>
<p>Atualize o índice de pacotes <code>apt</code> e instale os pacotes necessários para usar o repositório <code>apt</code> do Kubernetes:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl"><span class="c1"># apt-transport-https pode ser um pacote fictício; se for, você pode pular esse pacote</span>
</span></span><span class="line"><span class="cl">sudo apt-get install -y apt-transport-https ca-certificates curl gpg
</span></span></code></pre></div></li>
<li>
<p>Baixe a chave pública de assinatura para os repositórios de pacotes do Kubernetes.
A mesma chave de assinatura é usada para todos os repositórios, então você pode ignorar a versão na URL:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Se o diretório `/etc/apt/keyrings` não existir, ele deve ser criado antes do comando curl, leia a nota abaixo.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># sudo mkdir -p -m 755 /etc/apt/keyrings</span>
</span></span><span class="line"><span class="cl">curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.36/deb/Release.key <span class="p">|</span> sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>Em lançamentos anteriores ao Debian 12 e Ubuntu 22.04, o diretório <code>/etc/apt/keyrings</code> não existe por padrão, e deve ser criado antes do comando curl.</div>
<ol start="3">
<li>
<p>Adicione o repositório <code>apt</code> apropriado do Kubernetes. Por favor, note que este repositório tem pacotes
apenas para o Kubernetes 1.36; para outras versões menores do Kubernetes, você precisa
mudar a versão menor do Kubernetes na URL para corresponder à sua versão menor desejada
(você também deve verificar se está lendo a documentação para a versão do Kubernetes
que você planeja instalar).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Isso sobrescreve qualquer configuração existente em /etc/apt/sources.list.d/kubernetes.list</span>
</span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.36/deb/ /&#39;</span> <span class="p">|</span> sudo tee /etc/apt/sources.list.d/kubernetes.list
</span></span></code></pre></div></li>
<li>
<p>Atualize o índice de pacotes <code>apt</code>, instale o kubelet, o kubeadm e o kubectl, e fixe suas versões:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo apt-get update
</span></span><span class="line"><span class="cl">sudo apt-get install -y kubelet kubeadm kubectl
</span></span><span class="line"><span class="cl">sudo apt-mark hold kubelet kubeadm kubectl
</span></span></code></pre></div></li>
<li>
<p>(Opcional) Habilite o serviço kubelet antes de executar o kubeadm:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-1" role="tabpanel" aria-labelledby="tabs-k8s-install-1-tab" tabindex="k8s-install"><ol>
<li>
<p>Configure o SELinux em modo <code>permissivo</code>:</p>
<p>Essas instruções são para o Kubernetes 1.36.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Configure o SELinux em modo permissivo (efetivamente desabilitando-o)</span>
</span></span><span class="line"><span class="cl">sudo setenforce <span class="m">0</span>
</span></span><span class="line"><span class="cl">sudo sed -i <span class="s1">&#39;s/^SELINUX=enforcing$/SELINUX=permissive/&#39;</span> /etc/selinux/config
</span></span></code></pre></div></li>
</ol>
<div class="alert alert-caution" role="note"><h4 class="alert-heading">Cuidado</h4><ul>
<li>Configurar o SELinux em modo permissivo ao executar <code>setenforce 0</code> e <code>sed ...</code>
efetivamente o desabilita. Isso é necessário para permitir que os contêineres acessem o sistema de arquivos do hospedeiro; por exemplo, alguns plugins de rede de cluster requerem isso. Você deve
fazer isso até que o suporte ao SELinux seja melhorado no kubelet.</li>
<li>Você pode manter o SELinux habilitado se souber como configurá-lo, mas pode ser necessário
configurações que não são suportadas pelo kubeadm.</li>
</ul>
</div>
<ol start="2">
<li>
<p>Adicione o repositório <code>yum</code> do Kubernetes. O parâmetro <code>exclude</code> na
definição do repositório garante que os pacotes relacionados ao Kubernetes não
sejam atualizados ao executar <code>yum update</code>, já que existe um procedimento especial que
deve ser seguido para atualizar o Kubernetes. Por favor, note que este repositório
tem pacotes apenas para o Kubernetes 1.36; para outras
versões menores do Kubernetes, você precisa mudar a versão menor do Kubernetes
na URL para corresponder à sua versão menor desejada (você também deve verificar se
está lendo a documentação para a versão do Kubernetes que você planeja instalar).</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># Isso sobrescreve qualquer configuração existente em /etc/yum.repos.d/kubernetes.repo</span>
</span></span><span class="line"><span class="cl">cat <span class="s">&lt;&lt;EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
</span></span></span><span class="line"><span class="cl"><span class="s">[kubernetes]
</span></span></span><span class="line"><span class="cl"><span class="s">name=Kubernetes
</span></span></span><span class="line"><span class="cl"><span class="s">baseurl=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/
</span></span></span><span class="line"><span class="cl"><span class="s">enabled=1
</span></span></span><span class="line"><span class="cl"><span class="s">gpgcheck=1
</span></span></span><span class="line"><span class="cl"><span class="s">gpgkey=https://pkgs.k8s.io/core:/stable:/v1.36/rpm/repodata/repomd.xml.key
</span></span></span><span class="line"><span class="cl"><span class="s">exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
</span></span></code></pre></div></li>
<li>
<p>Instale o kubelet, kubeadm e kubectl:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo yum install -y kubelet kubeadm kubectl --disableexcludes<span class="o">=</span>kubernetes
</span></span></code></pre></div></li>
<li>
<p>(Opcional) Habilite o serviço kubelet antes de executar kubeadm:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div></li>
</ol>
</div><div class="tab-body tab-pane fade"
        id="tabs-k8s-install-2" role="tabpanel" aria-labelledby="tabs-k8s-install-2-tab" tabindex="k8s-install"><p>Instale os plugins CNI (utilizados por grande parte das redes de Pods):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CNI_PLUGINS_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.3.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">DEST</span><span class="o">=</span><span class="s2">&#34;/opt/cni/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/containernetworking/plugins/releases/download/</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">/cni-plugins-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">-</span><span class="si">${</span><span class="nv">CNI_PLUGINS_VERSION</span><span class="si">}</span><span class="s2">.tgz&#34;</span> <span class="p">|</span> sudo tar -C <span class="s2">&#34;</span><span class="nv">$DEST</span><span class="s2">&#34;</span> -xz
</span></span></code></pre></div><p>Escolha o diretório para baixar os arquivos de comandos.</p>
<div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>A variável <code>DOWNLOAD_DIR</code> deve ser definida para um diretório que permita escrita.
Se você está executando o Flatcar Container Linux, defina <code>DOWNLOAD_DIR=&quot;/opt/bin&quot;</code>.</div>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">DOWNLOAD_DIR</span><span class="o">=</span><span class="s2">&#34;/usr/local/bin&#34;</span>
</span></span><span class="line"><span class="cl">sudo mkdir -p <span class="s2">&#34;</span><span class="nv">$DOWNLOAD_DIR</span><span class="s2">&#34;</span>
</span></span></code></pre></div><p>Instale o crictl (utilizado pelo kubeadm e pela Interface do Agente de execução do Kubelet (CRI))</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">CRICTL_VERSION</span><span class="o">=</span><span class="s2">&#34;v1.30.0&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl">curl -L <span class="s2">&#34;https://github.com/kubernetes-sigs/cri-tools/releases/download/</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">/crictl-</span><span class="si">${</span><span class="nv">CRICTL_VERSION</span><span class="si">}</span><span class="s2">-linux-</span><span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span><span class="s2">.tar.gz&#34;</span> <span class="p">|</span> sudo tar -C <span class="nv">$DOWNLOAD_DIR</span> -xz
</span></span></code></pre></div><p>Instale o <code>kubeadm</code>, o <code>kubelet</code>, e o <code>kubectl</code> e adicione um serviço systemd <code>kubelet</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">RELEASE</span><span class="o">=</span><span class="s2">&#34;</span><span class="k">$(</span>curl -sSL https://dl.k8s.io/release/stable.txt<span class="k">)</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nv">ARCH</span><span class="o">=</span><span class="s2">&#34;amd64&#34;</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> <span class="nv">$DOWNLOAD_DIR</span>
</span></span><span class="line"><span class="cl">sudo curl -L --remote-name-all https://dl.k8s.io/release/<span class="si">${</span><span class="nv">RELEASE</span><span class="si">}</span>/bin/linux/<span class="si">${</span><span class="nv">ARCH</span><span class="si">}</span>/<span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">sudo chmod +x <span class="o">{</span>kubeadm,kubelet<span class="o">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nv">RELEASE_VERSION</span><span class="o">=</span><span class="s2">&#34;v0.16.2&#34;</span>
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubelet/kubelet.service&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service
</span></span><span class="line"><span class="cl">sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
</span></span><span class="line"><span class="cl">curl -sSL <span class="s2">&#34;https://raw.githubusercontent.com/kubernetes/release/</span><span class="si">${</span><span class="nv">RELEASE_VERSION</span><span class="si">}</span><span class="s2">/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf&#34;</span> <span class="p">|</span> sed <span class="s2">&#34;s:/usr/bin:</span><span class="si">${</span><span class="nv">DOWNLOAD_DIR</span><span class="si">}</span><span class="s2">:g&#34;</span> <span class="p">|</span> sudo tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>Por favor, consulte a nota na seção <a href="#before-you-begin">Antes de começar</a> para distribuições Linux que não incluem <code>glibc</code> por padrão.</div>
<p>Instale <code>kubectl</code> seguindo as instruções na <a href="/pt-br/docs/tasks/tools/#kubectl">página de Instalação de Ferramentas</a>.</p>
<p>Opcionalmente, habilite o serviço kubelet antes de executar o kubeadm:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo systemctl <span class="nb">enable</span> --now kubelet
</span></span></code></pre></div><div class="alert alert-info" role="note"><h4 class="alert-heading">Nota</h4>A distribuição Flatcar Container Linux monta o diretório <code>/usr</code> como um sistema de arquivos somente leitura.
Antes de iniciar seu cluster, você precisa tomar passos adicionais para configurar um diretório gravável.
Veja o <a href="/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only">Guia de Solução de Problemas do Kubeadm</a>
para aprender como configurar um diretório gravável.</div>
</div></div>


O kubelet agora ficará reiniciando de alguns em alguns segundos, enquanto espera por instruções vindas do kubeadm.

## Configurando um driver cgroup

Tanto o agente de execução quanto o kubelet possuem uma propriedade chamada
["driver cgroup"](/docs/setup/production-environment/container-runtimes/), que é importante
para o gerenciamento dos cgroups em máquinas Linux.

<div class="alert alert-danger" role="note"><h4 class="alert-heading">Aviso</h4><p>A compatibilidade entre os drivers cgroup e o agente de execução é necessária. Sem ela o processo do kubelet irá falhar.</p>
<p>Veja <a href="/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/">configurando um driver cgroup</a> para mais detalhes.</p>
</div>


## Solucionando problemas

Se você encontrar problemas com o kubeadm, por favor consulte a nossa [documentação de solução de problemas](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/).

## Próximos passos

* [Utilizando o kubeadm para criar um cluster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).
