Skip to content

Commit 61ab2f7

Browse files
committed
feat: adding pt-br translation for install kubeadm page
1 parent afac60e commit 61ab2f7

File tree

1 file changed

+291
-0
lines changed

1 file changed

+291
-0
lines changed
Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
---
2+
title: Instalando a ferramenta kubeadm
3+
content_type: task
4+
weight: 10
5+
---
6+
7+
<!-- overview -->
8+
9+
<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`.
10+
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/).
11+
12+
13+
## {{% heading "prerequisites" %}}
14+
15+
* 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.
16+
* 2 GB ou mais de RAM por máquina (menos que isso deixará pouca memória para as suas aplicações).
17+
* 2 CPUs ou mais.
18+
* Conexão de rede entre todas as máquinas no cluster. Seja essa pública ou privada.
19+
* Nome da máquina na rede, endereço MAC e producy_uuid únicos para cada nó. Mais detalhes podem ser lidos [aqui](#veficiar-endereco-mac).
20+
* Portas específicas abertas nas suas máquinas. Você poderá ler quais são [aqui](#verificar-portas-necessarias).
21+
* Swap desabilitado. Você *precisa* desabilitar a funcionalidade de swap para que o kubelet funcione de forma correta.
22+
23+
<!-- steps -->
24+
25+
## Verificando se o endereço MAC e o product_uiid são únicos para cada nó {#veficiar-endereco-mac}
26+
27+
* Você pode verificar o endereço MAC da interface de rede utilizando o comando `ip link` ou o comando `ipconfig -a`.
28+
* O product_uuid pode ser verificado utilizando o comando `sudo cat /sys/class/dmi/I'd/product_uuid`.
29+
30+
É 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).
31+
32+
## Verificando os adaptadores de rede
33+
34+
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.
35+
36+
## Fazendo com que o iptables enxergue o tráfego agregado
37+
38+
Se assegure de que o módulo `br_netfilter` está carregado. Isso pode ser feito executando o comando `lsmod | grep br_netfilter`. Para carrega-lo explicitamente execute `sudo modprobe br_netfilter`.
39+
40+
Você também deve se assegurar de que o valor da configuração `net.bridge.bridge-nf-call-iptables` no seu `sysctl` está com o valor 1. Um requerimento para que as iptables dos seus nós enxerguem o tráfego agregado corretamente. Como no exemplo abaixo:
41+
42+
```bash
43+
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
44+
br_netfilter
45+
EOF
46+
47+
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
48+
net.bridge.bridge-nf-call-ip6tables = 1
49+
net.bridge.bridge-nf-call-iptables = 1
50+
EOF
51+
sudo sysctl --system
52+
```
53+
54+
Para mais detalhes veja a página [Requisitos do plugin de rede](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/#network-plugin-requirements).
55+
56+
## Verificando as portas necessárias
57+
58+
### Nós da camada de gerenciamento
59+
60+
| Protocolo | Direção | Intervalo de portas | Propósito | Utilizada por |
61+
|----------|-----------|------------|-------------------------|---------------------------|
62+
| TCP | Entrada | 6443\* | API do Kubernetes | Todos |
63+
| TCP | Entrada | 2379-2380 | API servidor cliente do etcd | kube-apiserver, etcd |
64+
| TCP | Entrada | 10250 | API do kubelet | kubeadm, Camada de gerenciamento |
65+
| TCP | Entrada | 10251 | kube-scheduler | kubeadm |
66+
| TCP | Entrada | 10252 | kube-controller-manager | kubeadm |
67+
68+
### Nós de processamento
69+
70+
| Protocolo | Direção | Intervalo de portas | Propósito | Utilizada por |
71+
|----------|-----------|-------------|-----------------------|-------------------------|
72+
| TCP | Entrada | 10250 | API do kubelet | kubeadm, Camada de gerenciamento |
73+
| TCP | Entrada | 30000-32767 | Serviços NodePort† | Todos |
74+
75+
† Intervalo padrão de portas para o [Serviços NodePort](/docs/concepts/services-networking/service/).
76+
77+
Quaisquer portas marcadas com * podem ser substituídas. Dito isso, tenha certeza de que qualquer porta que você tenha customizado esteja aberta.
78+
79+
Embora portas etcd sejam inclusas nos nós da camada de gerenciamento, você também pode hospedar seu próprio cluster etcd externamente, ou em portas customizadas.
80+
81+
O plugin de rede dos pods que você utiliza também pode requer que algumas portas estejam abertas. Dito que essas portas podem diferir dependendo do plugin, por favor leia a documentação dos plugins sobre quais portas serão necessárias abrir.
82+
83+
## Instalando agente de execução {#instalando-agente-de-execucao}
84+
85+
Para executar os contêineres nos Pods, o Kubernetes utiliza um
86+
{{< glossary_tooltip term_id="container-runtime" text="agente de execução" >}}.
87+
88+
{{< tabs name="container_runtime" >}}
89+
{{% tab name="Nós Linux" %}}
90+
91+
Por padrão, o Kubernetes utiliza a {{< glossary_tooltip term_id="cri" text="interface do agente de execução">}} (CRI) para interagir com o seu agente de execução de contêiner escolhido.
92+
93+
Se você não especificar nenhum agente de execução, o kubeadm irá tentar identifica-lo automaticamente através de uma lista dos sockets Unix mais utilizados. A tabela a seguir lista os agentes de execução e os caminhos dos sockets a eles associados.
94+
95+
{{< table caption = "Agentes de execução e seus caminhos de socket" >}}
96+
| Agente de execução | Caminho do socket Unix |
97+
|------------|-----------------------------------|
98+
| Docker | `/var/run/dockershim.sock` |
99+
| containerd | `/run/containerd/containerd.sock` |
100+
| CRI-O | `/var/run/crio/crio.sock` |
101+
{{< /table >}}
102+
103+
<br />
104+
Se tanto o Docker quanto o containerd forem detectados no sistema, o Docker terá precedência. Isso acontece porque o Docker, desde a versão 18.09, já incluí o containerd e ambos são detectaveis mesmo que você só tenha instalado o Docker. Se outros dois ou mais agentes de execução forem detectados, o kubeadm é encerrado com um erro.
105+
106+
O kubelet se integra com o Docker através da implementação CRI `dockershim` já inclusa.
107+
108+
Veja [agente de execução](/docs/setup/production-environment/container-runtimes/)
109+
para mais detalhes.
110+
{{% /tab %}}
111+
{{% tab name="outros sistemas operacionais" %}}
112+
Por padrão, o kubeadm utiliza o {{< glossary_tooltip term_id="docker" >}} como agente de execução.
113+
O kubelet se integra com o Docker através da implementação CRI `dockershim` já inclusa.
114+
115+
Veja [agente de execução](/docs/setup/production-environment/container-runtimes/)
116+
para mais detalhes.
117+
{{% /tab %}}
118+
{{< /tabs >}}
119+
120+
121+
## Instalando o kubeadm, kubelet e o kubectl
122+
123+
Você instalará esses pacotes em todas as suas máquinas:
124+
125+
* `kubeadm`: o comando para iniciar o cluster.
126+
127+
* `kubelet`: o componente que executa em todas as máquinas no seu cluster e cuida de coisas como a inicialização de pods e contêineres.
128+
129+
* `kubectl`: a ferramenta de linha de comando para interação com o cluster.
130+
131+
O kubeadm **não irá** instalar ou gerenciar o `kubelet` ou o `kubectl` para você, então você
132+
precisará garantir que as versões deles são as mesmas da versão da camada de gerenciamento do Kubernetes
133+
que você quer que o kubeadm instale. Caso isso não seja feito, surge o risco de que uma diferença nas versões
134+
leve a bugs e comportamentos inesperados. Dito isso, _uma_ diferença de menor grandeza nas versões entre o kubelet e a
135+
camada de gerenciamento é suportada, mas a versão do kubelet nunca poderá ser superior a versão do servidor da API.
136+
Por exemplo, um kubelet com a versão 1.7.0 será totalmente compatível com a versão 1.8.0 do servidor da API, mas o contrário não será verdadeiro.
137+
138+
Para mais informações acerca da instalação do `kubectl`, veja [Instale e configure o kubectl](/docs/tasks/tools/).
139+
140+
{{< warning >}}
141+
Essas instruções removem todos os pacotes Kubernetes de quaisquer atualizações de sistema.
142+
Isso ocorre porque o kubeadm e o Kubernetes requerem alguns [cuidados especiais para serem atualizados](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/).
143+
{{</ warning >}}
144+
145+
para mais detalhes da compatibilidade entre as versões, veja:
146+
147+
* [Políticas de versão e compatibilidade entre versões](/docs/setup/release/version-skew-policy/) do Kubernetes.
148+
* [Compatibilidade entre versões](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#version-skew-policy) do Kubeadm.
149+
150+
{{< tabs name="k8s_install" >}}
151+
{{% tab name="Distribuições Debian" %}}
152+
153+
1. Atualize o índice de pacotes `apt` e instale os pacotes necessários para utilizar o repositório `apt` do Kubernetes:
154+
155+
```shell
156+
sudo apt-get update
157+
sudo apt-get install -y apt-transport-https ca-certificates curl
158+
```
159+
160+
2. Faça o download da chave de assinatura pública da Google Cloud:
161+
162+
```shell
163+
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
164+
```
165+
166+
3. Adicione o repositório `apt` do Kubernetes:
167+
168+
```shell
169+
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
170+
```
171+
172+
4. Atualize o índice de pacotes `apt`, instale o kubelet, o kubeadm e o kubectl, e fixe suas versões:
173+
174+
```shell
175+
sudo apt-get update
176+
sudo apt-get install -y kubelet kubeadm kubectl
177+
sudo apt-mark hold kubelet kubeadm kubectl
178+
```
179+
180+
{{% /tab %}}
181+
{{% tab name="Distribuições Red Hat" %}}
182+
```bash
183+
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
184+
[kubernetes]
185+
name=Kubernetes
186+
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
187+
enabled=1
188+
gpgcheck=1
189+
repo_gpgcheck=1
190+
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
191+
exclude=kubelet kubeadm kubectl
192+
EOF
193+
194+
# Set SELinux in permissive mode (effectively disabling it)
195+
sudo setenforce 0
196+
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
197+
198+
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
199+
200+
sudo systemctl enable --now kubelet
201+
```
202+
203+
**Avisos:**
204+
205+
- Colocar o SELinux em modo permissivo ao executar `setenforce 0` e `sed ...` efetivamente o desabilita.
206+
Isso é necessário para permitir que os contêineres acessem o sistema de arquivos do hospedeiro, que é utilizado pelas redes dos pods por exemplo.
207+
Você precisará disso até que o suporte ao SELinux seja melhorado no kubelet.
208+
209+
- Você pode deixar o SELinux habilitado se você souber como configura-lo, mas isso pode exegir configurações que não são suportadas pelo kubeadm.
210+
211+
{{% /tab %}}
212+
{{% tab name="Sem um gerenciador de pacotes" %}}
213+
Instale os plugins CNI (utilizados por grande parte das redes de pods):
214+
215+
```bash
216+
CNI_VERSION="v0.8.2"
217+
ARCH="amd64"
218+
sudo mkdir -p /opt/cni/bin
219+
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz
220+
```
221+
222+
Escolha o diretório para baixar os arquivos de comandos.
223+
224+
{{< note >}}
225+
A variável `DOWNLOAD_DIR` precisa estar configurada para um diretório que permita escrita.
226+
Se você estiver utilizando o Flatcar Container Linux, veja `DOWNLOAD_DIR=/opt/bin`.
227+
{{< /note >}}
228+
229+
```bash
230+
DOWNLOAD_DIR=/usr/local/bin
231+
sudo mkdir -p $DOWNLOAD_DIR
232+
```
233+
234+
Instale o crictl (utilizado pelo kubeadm e pela Interface do Agente de execução do Kubelet (CRI))
235+
236+
```bash
237+
CRICTL_VERSION="v1.17.0"
238+
ARCH="amd64"
239+
curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-${ARCH}.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz
240+
```
241+
242+
Instale o `kubeadm`, o `kubelet`, e o `kubectl` e adicione o serviço systemd `kubelet`:
243+
244+
```bash
245+
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
246+
ARCH="amd64"
247+
cd $DOWNLOAD_DIR
248+
sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet,kubectl}
249+
sudo chmod +x {kubeadm,kubelet,kubectl}
250+
251+
RELEASE_VERSION="v0.4.0"
252+
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service
253+
sudo mkdir -p /etc/systemd/system/kubelet.service.d
254+
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
255+
```
256+
257+
Habilite e inicie o `kubelet`:
258+
259+
```bash
260+
systemctl enable --now kubelet
261+
```
262+
263+
{{< note >}}
264+
A distribuição Linux Flatcar Container instala o diretório `/usr` como um sistema de arquivos apenas para leitura.
265+
Antes de inicializar o seu cluster, você precisa de alguns passos adicionais para configurar um diretório com escrita.
266+
Veja o [Guia de solução de problemas do Kubeadm](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only/) para aprender como configurar um diretório com escrita.
267+
{{< /note >}}
268+
{{% /tab %}}
269+
{{< /tabs >}}
270+
271+
O kubelet agora ficará reiniciando de alguns em alguns segundos, enquanto espera por instruções vindas do kubeadm.
272+
273+
## Configurando um driver cgroup
274+
275+
Tanto o agente de execução quanto o kubelet possuem uma propriedade chamada
276+
["driver cgroup"](/docs/setup/production-environment/container-runtimes/), que é importante
277+
para o gerenciamento dos cgroups em máquinas Linux.
278+
279+
{{< warning >}}
280+
A compatibilidade entre os drivers cgroup e o agente de execução é necessária. Sem ela o processo do kubelet irá falhar.
281+
282+
Veja [configurando um driver cgroup](/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/) para mais detalhes.
283+
{{< /warning >}}
284+
285+
## Solucionando problemas
286+
287+
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/).
288+
289+
## {{% heading "whatsnext" %}}
290+
291+
* [Utilizando o kubeadm para criar um cluster](/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/).

0 commit comments

Comments
 (0)