Kubernetes Administration Question #019e3a4f
Como executar um comando em um container em execução de um Pod?
kubectl exec --
docker exec
kubectl run --
kubectl attach -i
Official Explanation / Community Explanations
O comando correto para executar um comando dentro de um container em execução de um Pod é kubectl exec --. Este comando permite executar comandos arbitrários em um container, similar ao docker exec, mas para pods do Kubernetes. O -- separa as opções do kubectl do comando a ser executado dentro do container.
Como Funciona
kubectl exec requer um nome de pod e opcionalmente um nome de container (se o pod tiver múltiplos containers). A sintaxe é:
kubectl exec <nome-do-pod> [-c <nome-do-container>] -- <comando> [args...]
O travessão duplo -- é usado para indicar o fim das opções do kubectl e o início do comando a ser executado dentro do container. Por exemplo:
kubectl exec my-pod -- ls /var/log
Isso executa ls /var/log dentro do primeiro container de my-pod.
Por que a Resposta Correta está Certa
kubectl exec --: Este é o comando padrão do Kubernetes para executar comandos em um container. Faz parte da CLIkubectle foi projetado para esse propósito.
Por que as Respostas Incorretas estão Erradas
docker exec: Este comando é usado para executar comandos em um container Docker, não em um pod do Kubernetes. Embora o Kubernetes use containers (frequentemente Docker), odocker execopera diretamente no daemon Docker e não entende as abstrações de pod do Kubernetes. Funcionaria apenas se você soubesse o ID do container subjacente, o que não é recomendado em um contexto Kubernetes.kubectl run --: O comandokubectl runé usado para criar e executar um novo pod ou deployment, não para executar comandos em um container existente. Ele serve para iniciar novas cargas de trabalho, não para interagir com containers em execução.kubectl attach -i: O comandokubectl attachanexa aos fluxos padrão de entrada/saída/erro de um container em execução. É usado para sessões interativas, mas não executa um novo comando; ele se conecta ao processo principal do container. A flag-itorna a sessão interativa, mas ainda não permite executar comandos arbitrários como oexecfaz.