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.
Este(a) installation guide cobre a versão v1.35 do Kubernetes. Se você deseja usar uma versão diferente do Kubernetes, consulte as seguintes páginas:
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.kubeadm é feita via binários que usam linkagem dinâmica e assume que seu sistema alvo fornece glibc.
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 glibc por padrão, como o Alpine Linux.
A expectativa é que a distribuição inclua glibc ou uma camada de compatibilidade
que forneça os símbolos esperados.ip link ou ifconfig -a.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.
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.
Essas portas necessárias precisam estar abertas para que os componentes do Kubernetes se comuniquem entre si. Você pode usar ferramentas como netcat para verificar se uma porta está aberta. Por exemplo:
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.
Para executar contêiners em Pods, o Kubernetes usa um runtime de container.
Por padrão, o Kubernetes usa a Interface de Runtime de Contêiner (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 para mais informações.
As tabelas abaixo incluem os endpoints conhecidos para sistemas operacionais suportados:
| Agente de execução | Caminho para o socket de domínio Unix |
|---|---|
| containerd | unix:///var/run/containerd/containerd.sock |
| CRI-O | unix:///var/run/crio/crio.sock |
| Docker Engine (usando cri-dockerd) | unix:///var/run/cri-dockerd.sock |
| Runtime | Caminho para o pipe nomeado do Windows |
|---|---|
| containerd | npipe:////./pipe/containerd-containerd |
| Docker Engine (usando cri-dockerd) | npipe:////./pipe/cri-dockerd |
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.
Para mais detalhes sobre compatibilidade entre as versões, veja:
apt.kubernetes.io e yum.kubernetes.io) foram
descontinuados e congelados a partir de 13 de setembro de 2023.
A utilização dos novos repositórios de pacotes hospedados em pkgs.k8s.io
é fortemente recomendada e requerida para instalar versões do Kubernetes lançadas após 13 de setembro de 2023.
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.
Essas instruções são para o Kubernetes v1.35.
Atualize o índice de pacotes apt e instale os pacotes necessários para usar o repositório apt do Kubernetes:
sudo apt-get update
# apt-transport-https pode ser um pacote fictício; se for, você pode pular esse pacote
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
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:
# Se o diretório `/etc/apt/keyrings` não existir, ele deve ser criado antes do comando curl, leia a nota abaixo.
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
/etc/apt/keyrings não existe por padrão, e deve ser criado antes do comando curl.Adicione o repositório apt apropriado do Kubernetes. Por favor, note que este repositório tem pacotes
apenas para o Kubernetes 1.35; 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).
# Isso sobrescreve qualquer configuração existente em /etc/apt/sources.list.d/kubernetes.list
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Atualize o índice de pacotes apt, instale o kubelet, o kubeadm e o kubectl, e fixe suas versões:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
(Opcional) Habilite o serviço kubelet antes de executar o kubeadm:
sudo systemctl enable --now kubelet
Configure o SELinux em modo permissivo:
Essas instruções são para o Kubernetes 1.35.
# Configure o SELinux em modo permissivo (efetivamente desabilitando-o)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
setenforce 0 e sed ...
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.Adicione o repositório yum do Kubernetes. O parâmetro exclude na
definição do repositório garante que os pacotes relacionados ao Kubernetes não
sejam atualizados ao executar yum update, 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.35; 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).
# Isso sobrescreve qualquer configuração existente em /etc/yum.repos.d/kubernetes.repo
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.35/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.35/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
Instale o kubelet, kubeadm e kubectl:
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
(Opcional) Habilite o serviço kubelet antes de executar kubeadm:
sudo systemctl enable --now kubelet
Instale os plugins CNI (utilizados por grande parte das redes de Pods):
CNI_PLUGINS_VERSION="v1.3.0"
ARCH="amd64"
DEST="/opt/cni/bin"
sudo mkdir -p "$DEST"
curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_PLUGINS_VERSION}/cni-plugins-linux-${ARCH}-${CNI_PLUGINS_VERSION}.tgz" | sudo tar -C "$DEST" -xz
Escolha o diretório para baixar os arquivos de comandos.
DOWNLOAD_DIR deve ser definida para um diretório que permita escrita.
Se você está executando o Flatcar Container Linux, defina DOWNLOAD_DIR="/opt/bin".DOWNLOAD_DIR="/usr/local/bin"
sudo mkdir -p "$DOWNLOAD_DIR"
Instale o crictl (utilizado pelo kubeadm e pela Interface do Agente de execução do Kubelet (CRI))
CRICTL_VERSION="v1.30.0"
ARCH="amd64"
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
Instale o kubeadm, o kubelet, e o kubectl e adicione um serviço systemd kubelet:
RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)"
ARCH="amd64"
cd $DOWNLOAD_DIR
sudo curl -L --remote-name-all https://dl.k8s.io/release/${RELEASE}/bin/linux/${ARCH}/{kubeadm,kubelet}
sudo chmod +x {kubeadm,kubelet}
RELEASE_VERSION="v0.16.2"
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubelet/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /usr/lib/systemd/system/kubelet.service
sudo mkdir -p /usr/lib/systemd/system/kubelet.service.d
curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/krel/templates/latest/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
glibc por padrão.Instale kubectl seguindo as instruções na página de Instalação de Ferramentas.
Opcionalmente, habilite o serviço kubelet antes de executar o kubeadm:
sudo systemctl enable --now kubelet
/usr 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 Guia de Solução de Problemas do Kubeadm
para aprender como configurar um diretório gravável.O kubelet agora ficará reiniciando de alguns em alguns segundos, enquanto espera por instruções vindas do kubeadm.
Tanto o agente de execução quanto o kubelet possuem uma propriedade chamada "driver cgroup", que é importante para o gerenciamento dos cgroups em máquinas Linux.
A compatibilidade entre os drivers cgroup e o agente de execução é necessária. Sem ela o processo do kubelet irá falhar.
Veja configurando um driver cgroup para mais detalhes.
Se você encontrar problemas com o kubeadm, por favor consulte a nossa documentação de solução de problemas.