Kubernetes Administration
medium

Kubernetes Administration Question #019e3a4f

Question Statement
Kubernetes Administration
#kubectl
#exec
#containers
#pods
Medium

Como executar um comando em um container em execução de um Pod?

A

kubectl exec --

Correct
B

docker exec

C

kubectl run --

D

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 CLI kubectl e 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), o docker exec opera 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 comando kubectl 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 comando kubectl attach anexa 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 -i torna a sessão interativa, mas ainda não permite executar comandos arbitrários como o exec faz.