Este documento pode estar desatualizado
Este documento possui uma data de atualização mais antiga que o documento original. Portanto, este conteúdo pode estar desatualizado. Se você lê inglês, veja a versão em inglês para acessar a versão mais atualizada: Install and Set Up kubectl on Linux
Você deve usar uma versão do kubectl que esteja próxima da versão do seu cluster. Por exemplo, um cliente v1.35 pode se comunicar com as versões v1.34, v1.35 e v1.36 da camada de gerenciamento. Usar a versão compatível mais recente do kubectl ajuda a evitar problemas inesperados.
Existem os seguintes métodos para instalar o kubectl no Linux:
Faça download da versão mais recente com o comando:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
Para fazer o download de uma versão específica, substitua a parte $(curl -L -s https://dl.k8s.io/release/stable.txt) do comando pela versão específica.
Por exemplo, para fazer download da versão 1.35.0 no Linux x86-64, digite:
curl -LO https://dl.k8s.io/release/v1.35.0/bin/linux/amd64/kubectl
E para Linux ARM64, digite:
curl -LO https://dl.k8s.io/release/v1.35.0/bin/linux/arm64/kubectl
Valide o binário (opcional)
Faça download do arquivo checksum de verificação do kubectl:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl.sha256"
Valide o binário kubectl em relação ao arquivo de verificação:
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
Se válido, a saída será:
kubectl: OK
Se a verificação falhar, o sha256 exibirá o status diferente de zero e a saída será semelhante a:
kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
Instale o kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Se você não tiver acesso root no sistema de destino, ainda poderá instalar o kubectl no diretório ~/.local/bin:
chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl
# e depois adicione ~/.local/bin na variável $PATH
Teste para garantir que a versão que você instalou esteja atualizada:
kubectl version --client
Ou use isso para visualizar mais detalhes da versão:
kubectl version --client --output=yaml
Atualize o índice do apt e instale os pacotes necessários para utilizar o repositório apt do Kubernetes:
sudo apt-get update
# apt-transport-https pode ser um pacote simbólico; se for o caso, você pode ignorá-lo
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
Faça download da chave de assinatura pública para os repositórios de pacote do Kubernetes. A mesma chave de assinatura é usada para todos os repositórios, então você pode desconsiderar a versão na URL:
# Se a pasta `/etc/apt/keyrings` não existir, ela deve ser criada 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
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # permitir que programas APT sem acesso privilegiado leiam este keyring
/etc/apt/keyrings não existe por padrão, e ela deve ser criada antes do comando curl.Adicione o repositório apt do Kubernetes. Se você quiser usar uma versão do Kubernetes diferente de v1.35,
substitua v1.35 com a versão menor desejada no comando a seguir:
# Isto substitui qualquer configuração existente na pasta /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
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # ajuda ferramentas tais como command-not-found a funcionar corretamente
/etc/apt/sources.list.d/kubernetes.list antes de rodar apt-get update e apt-get upgrade. Este procedimento está descrito com mais detalhes em Mudando o Repositório de Pacotes do Kubernetes (em inglês).Atualize o índice do apt com o novo repositório e instale o kubectl:
sudo apt-get update
sudo apt-get install -y kubectl
Adicione o repositório yum do Kubernetes. Se você quiser usar uma versão do
Kubernetes diferente de v1.35, substitua v1.35
pela versão menor desejada no comando a seguir.
# Isto substitui qualquer configuração existente na pasta /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
EOF
/etc/yum.repos.d/kubernetes.repo antes de rodar yum update. Este procedimento está descrito com mais detalhes em Mudando o Repositório de Pacotes do Kubernetes (em inglês).Instale o kubectl usando yum:
sudo yum install -y kubectl
Adicione o repositório zypper do Kubernetes. Se você quiser instalar uma versão
diferente de v1.35, substitua v1.35 pela versão
menor desejada no comando a seguir.
# Isto substitui qualquer configuração existente no arquivo /etc/zypp/repos.d/kubernetes.repo
cat <<EOF | sudo tee /etc/zypp/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
EOF
/etc/zypp/repos.d/kubernetes.repo
antes de rodar zypper update. Este procedimento está descrito com mais detalhes em Mudando o Repositório de Pacotes do Kubernetes (em inglês).Atualize o zypper e confirme a adição do novo repositório:
sudo zypper update
Quando esta mensagem aparecer, pressione 't' ou 'a':
New repository or package signing key received:
Repository: Kubernetes
Key Fingerprint: 1111 2222 3333 4444 5555 6666 7777 8888 9999 AAAA
Key Name: isv:kubernetes OBS Project <isv:kubernetes@build.opensuse.org>
Key Algorithm: RSA 2048
Key Created: Thu 25 Aug 2022 01:21:11 PM -03
Key Expires: Sat 02 Nov 2024 01:21:11 PM -03 (expires in 85 days)
Rpm Name: gpg-pubkey-9a296436-6307a177
Note: Signing data enables the recipient to verify that no modifications occurred after the data
were signed. Accepting data with no, wrong or unknown signature can lead to a corrupted system
and in extreme cases even to a system compromise.
Note: A GPG pubkey is clearly identified by its fingerprint. Do not rely on the key's name. If
you are not sure whether the presented key is authentic, ask the repository provider or check
their web site. Many providers maintain a web page showing the fingerprints of the GPG keys they
are using.
Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
Instale o kubectl usando zypper:
sudo zypper install -y kubectl
Se você estiver no Ubuntu ou em outra distribuição Linux que suporte o gerenciador de pacotes snap, o kubectl está disponível como um aplicativo snap.
snap install kubectl --classic
kubectl version --client
Se você estiver no Linux e usando o gerenciador de pacotes Homebrew, o kubectl está disponível para instalação.
brew install kubectl
kubectl version --client
Para que o kubectl encontre e acesse um cluster Kubernetes, ele precisa de um
arquivo kubeconfig,
que é criado automaticamente quando você cria um cluster usando
kube-up.sh
ou instala com sucesso um cluster Minikube.
Por padrão, a configuração kubectl está localizada em ~/.kube/config.
Verifique se o kubectl está configurado corretamente obtendo o estado do cluster:
kubectl cluster-info
Se você receber uma URL de resposta, o kubectl está configurado corretamente para acessar seu cluster.
Se você receber uma mensagem semelhante à seguinte, o kubectl não está configurado corretamente ou não consegue se conectar a um cluster Kubernetes.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
Por exemplo, se você pretende executar um cluster Kubernetes no seu laptop (localmente), precisará que uma ferramenta como o Minikube seja instalada primeiro, para em seguida executar novamente os comandos indicados acima.
Se o comando kubectl cluster-info retornar a URL de resposta, mas você não conseguir
acessar seu cluster, use o comando abaixo para verificar se ele está configurado
corretamente:
kubectl cluster-info dump
No Kubernetes 1.26, o kubectl removeu os autenticadores embutidos para as distribuições de Kubernetes dos provedores de nuvem abaixo. Estes provedores lançaram plugins para o kubectl que fornecem autenticação específica para a nuvem. Para instruções, veja as seguintes documentações de cada provedor:
Também podem haver outras razões para que a mesma mensagem de erro ocorra, não relacionadas a esta mudança.
O kubectl oferece recursos de autocompletar para Bash, Zsh, Fish e PowerShell, o que pode economizar muita digitação.
Abaixo estão os procedimentos para configurar o autocompletar para Bash, Fish e Zsh.
O script de autocompletar do kubectl para Bash pode ser gerado com o comando kubectl completion bash. O script permite habilitar o autocompletar do kubectl no seu shell.
No entanto, o script autocompletar depende do bash-completion, o que significa que você precisa instalar este software primeiro (executando type _init_completion você pode testar se tem o bash-completion instalado).
O bash-completion é fornecido por muitos gerenciadores de pacotes (veja aqui). Você pode instalar com apt-get install bash-completion ou yum install bash-completion, etc.
Os comandos acima criam /usr/share/bash-completion/bash_completion, que é o script principal de bash-completion. Dependendo do seu gerenciador de pacotes, você tem que adicionar manualmente ao seu arquivo ~/.bashrc.
Para descobrir, recarregue seu shell e execute type _init_completion. Se o comando for bem-sucedido, já está definido, caso contrário, adicione o seguinte ao seu arquivo ~/.bashrc:
source /usr/share/bash-completion/bash_completion
Recarregue o seu shell e verifique se o bash-completion está instalado corretamente digitando type _init_completion.
Agora você precisa garantir que o autocompletar do kubectl esteja ativo em todas as suas sessões shell. Existem duas maneiras pelas quais você pode fazer isso:
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
sudo chmod a+r /etc/bash_completion.d/kubectl
Se você tiver um alias para kubectl, você pode estender o autocompletar do shell para trabalhar com esse alias:
echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
/etc/bash_completion.d.Todas as abordagens são equivalentes. Depois de recarregar seu shell, o autocompletar do kubectl deve estar funcionando. Para ativar o autocompletar do bash na sessão atual do shell, execute exec bash:
exec bash
O script de autocompletar do kubectl para Fish pode ser gerado com o comando kubectl completion fish. O script permite habilitar o autocompletar do kubectl no seu shell.
Para fazer isso em todas as suas sessões do shell, adicione a seguinte linha ao seu arquivo ~/.config/fish/config.fish:
kubectl completion fish | source
Depois de recarregar seu shell, o autocompletar do kubectl deve estar funcionando.
O script de autocompletar do kubectl para Zsh pode ser gerado com o comando kubectl completion zsh. Este script habilita o autocompletar do kubectl no seu shell.
Para fazer isso em todas as suas sessões de shell, adicione a seguinte linha no arquivo ~/.zshrc:
source <(kubectl completion zsh)
Se você tiver um alias para kubectl, o autocompletar funcionará automaticamente com ele.
Depois de recarregar seu shell, o autocompletar do kubectl deve estar funcionando.
Se você ver um erro similar a 2: command not found: compdef, adicione o seguinte bloco ao início do seu arquivo ~/.zshrc:
autoload -Uz compinit
compinit
kubectl convertUm plugin para a ferramenta Kubernetes de linha de comando kubectl, que permite converter manifestos entre diferentes versões da API.
Isso pode ser particularmente útil para migrar manifestos para uma versão não obsoleta com a versão mais recente da API Kubernetes.
Para mais informações, visite Migrar para APIs não obsoletas
Faça download da versão mais recente com o comando:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert"
Valide o binário (opcional)
Faça download do arquivo checksum de verificação do kubectl-convert:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl-convert.sha256"
Valide o binário kubectl-convert com o arquivo de verificação:
echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check
Se válido, a saída será:
kubectl-convert: OK
Se a verificação falhar, o sha256 exibirá o status diferente de zero e a saída será semelhante a:
kubectl-convert: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
Instale o kubectl-convert
sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert
Verifique se o plugin foi instalado com sucesso
kubectl convert --help
Se não for exibido um erro, isso significa que o plugin foi instalado com sucesso.
Depois de instalar o plugin, remova os arquivos de instalação:
rm kubectl-convert kubectl-convert.sha256