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: Command line tool (kubectl)
Ferramenta de linha de comando (kubectl)
Kubernetes fornece um ferramenta de linha de comando para se comunicar com a camada de gerenciamento de um cluster Kubernetes usando a API do Kubernetes.
Esta ferramenta é chamada kubectl.
Para configuração, kubectl procura por um arquivo chamado config no diretório $HOME/.kube.
Você pode especificar outros arquivos kubeconfig
definindo a variável de ambiente KUBECONFIG ou configurando a
flag --kubeconfig.
Esta visão geral abrange a sintaxe do kubectl, descreve as operações de comando e fornece exemplos comuns.
Para detalhes sobre cada comando, incluindo todas as opções e subcomandos suportados, consulte a
documentação de referência do kubectl.
Para instruções de instalação, consulte Instalando kubectl;
para um guia rápido, consulte a folha de dicas.
Se você está acostumado a usar a ferramenta de linha de comando docker,
kubectl para Usuários Docker explica alguns comandos equivalentes para Kubernetes.
Sintaxe
Use a seguinte sintaxe para executar comandos kubectl da janela do seu terminal:
kubectl [command] [TYPE] [NAME] [flags]
onde command, TYPE, NAME e flags são:
-
command: Especifica a operação que você deseja executar em um ou mais recursos, por exemplocreate,get,describe,delete. -
TYPE: Especifica o tipo de recurso. Tipos de recursos não diferenciam maiúsculas de minúsculas e você pode especificar as formas singular, plural ou abreviada. Por exemplo, os seguintes comandos produzem a mesma saída:kubectl get pod pod1 kubectl get pods pod1 kubectl get po pod1 -
NAME: Especifica o nome do recurso. Nomes diferenciam maiúsculas de minúsculas. Se o nome for omitido, detalhes para todos os recursos são exibidos, por exemplokubectl get pods.Ao realizar uma operação em vários recursos, você pode especificar cada recurso por tipo e nome ou especificar um ou mais arquivos:
-
Para especificar recursos por tipo e nome:
-
Para agrupar recursos se todos forem do mesmo tipo:
TYPE1 name1 name2 name<#>.
Exemplo:kubectl get pod example-pod1 example-pod2 -
Para especificar vários tipos de recursos individualmente:
TYPE1/name1 TYPE1/name2 TYPE2/name3 TYPE<#>/name<#>.
Exemplo:kubectl get pod/example-pod1 replicationcontroller/example-rc1
-
-
Para especificar recursos com um ou mais arquivos:
-f file1 -f file2 -f file<#>- Use YAML em vez de JSON
já que YAML tende a ser mais amigável ao usuário, especialmente para arquivos de configuração.
Exemplo:kubectl get -f ./pod.yaml
- Use YAML em vez de JSON
já que YAML tende a ser mais amigável ao usuário, especialmente para arquivos de configuração.
-
-
flags: Especifica flags opcionais. Por exemplo, você pode usar as flags-sou--serverpara especificar o endereço e porta do servidor de API do Kubernetes.
Cuidado:
Flags que você especifica da linha de comando sobrescrevem valores padrão e quaisquer variáveis de ambiente correspondentes.Se você precisar de ajuda, execute kubectl help da janela do terminal.
Autenticação dentro do cluster e sobrescritas de namespace
Por padrão, kubectl primeiro determinará se está sendo executado dentro de um pod, ou seja, em um cluster.
Ele começa verificando as variáveis de ambiente KUBERNETES_SERVICE_HOST e KUBERNETES_SERVICE_PORT
e a existência de um arquivo de token de conta de serviço em /var/run/secrets/kubernetes.io/serviceaccount/token.
Se todos os três forem encontrados, a autenticação dentro do cluster é assumida.
Para manter a retrocompatibilidade, se a variável de ambiente POD_NAMESPACE for definida
durante a autenticação dentro do cluster, ela sobrescreverá o namespace padrão do
token da conta de serviço. Quaisquer manifestos ou ferramentas que dependam do namespace padrão serão afetados por isso.
Variável de ambiente POD_NAMESPACE
Se a variável de ambiente POD_NAMESPACE for definida, operações de linha de comando em recursos com namespace
usarão por padrão o valor da variável. Por exemplo, se a variável for definida como seattle,
kubectl get pods retornaria pods no namespace seattle. Isso ocorre porque pods são
um recurso com namespace, e nenhum namespace foi fornecido no comando. Revise a saída
de kubectl api-resources para determinar se um recurso possui namespace.
O uso explícito de --namespace <value> sobrescreve este comportamento.
Como o kubectl lida com tokens de ServiceAccount
Se:
- há um arquivo de token de conta de serviço do Kubernetes montado em
/var/run/secrets/kubernetes.io/serviceaccount/token, e - a variável de ambiente
KUBERNETES_SERVICE_HOSTestá definida, e - a variável de ambiente
KUBERNETES_SERVICE_PORTestá definida, e - você não especifica explicitamente um namespace na linha de comando do kubectl
então o kubectl assume que está sendo executado no seu cluster. A ferramenta kubectl procura o namespace daquela ServiceAccount (que é o mesmo namespace do Pod) e atua com esse namespace. Isso é diferente do que acontece fora de um cluster; quando o kubectl é executado fora de um cluster e você não especifica um namespace, o comando kubectl atua com o namespace definido para o contexto atual na sua configuração do cliente. Para alterar o namespace padrão para seu kubectl você pode usar o seguinte comando:
kubectl config set-context --current --namespace=<namespace-name>
Operações
A seguinte tabela inclui descrições curtas e a sintaxe geral para todas as operações do kubectl:
| Operação | Sintaxe | Descrição |
|---|---|---|
alpha |
kubectl alpha SUBCOMMAND [flags] |
Lista os comandos disponíveis que correspondem às funcionalidades alfa, que não são habilitadas por padrão nos clusters Kubernetes. |
annotate |
kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] |
Adiciona ou atualiza as anotações de um ou mais recursos. |
api-resources |
kubectl api-resources [flags] |
Lista os recursos de API que estão disponíveis. |
api-versions |
kubectl api-versions [flags] |
Lista as versões de API que estão disponíveis. |
apply |
kubectl apply -f FILENAME [flags] |
Aplica uma alteração de configuração a um recurso de um arquivo ou stdin. |
attach |
kubectl attach POD -c CONTAINER [-i] [-t] [flags] |
Conecta a um contêiner em execução para visualizar o fluxo de saída ou interagir com o contêiner (stdin). |
auth |
kubectl auth [flags] [options] |
Inspeciona autorização. |
autoscale |
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags] |
Escalona automaticamente o conjunto de pods que são gerenciados por um controlador de replicação. |
certificate |
kubectl certificate SUBCOMMAND [options] |
Modifica recursos de certificado. |
cluster-info |
kubectl cluster-info [flags] |
Exibe informações de endpoint sobre o nó principal e serviços no cluster. |
completion |
kubectl completion SHELL [options] |
Gera código de completar automaticamente para o shell especificado (bash ou zsh). |
config |
kubectl config SUBCOMMAND [flags] |
Modifica arquivos kubeconfig. Consulte os subcomandos individuais para detalhes. |
convert |
kubectl convert -f FILENAME [options] |
Converte arquivos de configuração entre diferentes versões de API. Ambos os formatos YAML e JSON são aceitos. Nota - requer que o plugin kubectl-convert esteja instalado. |
cordon |
kubectl cordon NODE [options] |
Marca o nó como não agendável. |
cp |
kubectl cp <file-spec-src> <file-spec-dest> [options] |
Copia arquivos e diretórios "de" e "para" contêineres. |
create |
kubectl create -f FILENAME [flags] |
Cria um ou mais recursos de um arquivo ou stdin. |
delete |
kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | --all]) [flags] |
Exclui recursos de um arquivo, stdin, ou especificando seletores de rótulo, nomes, seletores de recursos, ou recursos. |
describe |
kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] |
Exibe o estado detalhado de um ou mais recursos. |
diff |
kubectl diff -f FILENAME [flags] |
Compara arquivo ou stdin contra a configuração ativa. |
drain |
kubectl drain NODE [options] |
Drena o nó em preparação para manutenção. |
edit |
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] |
Edita e atualiza a definição de um ou mais recursos no servidor usando o editor padrão. |
events |
kubectl events |
Lista eventos |
exec |
kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]] |
Executa um comando contra um contêiner em um pod. |
explain |
kubectl explain TYPE [--recursive=false] [flags] |
Obtém documentação de vários recursos. Por exemplo pods, nós, serviços, etc. |
expose |
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags] |
Expõe um controlador de replicação, service, ou pod como um novo serviço Kubernetes. |
get |
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags] |
Lista um ou mais recursos. |
kustomize |
kubectl kustomize <dir> [flags] [options] |
Lista um conjunto de recursos de API gerados a partir de instruções em um arquivo kustomization.yaml. O argumento deve ser o caminho para o diretório contendo o arquivo, ou uma URL de repositório git com um sufixo de caminho especificando o mesmo em relação à raiz do repositório. |
label |
kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags] |
Adiciona ou atualiza os rótulos de um ou mais recursos. |
logs |
kubectl logs POD [-c CONTAINER] [--follow] [flags] |
Imprime os logs de um contêiner em um pod. |
options |
kubectl options |
Lista de opções globais de linha de comando, que se aplicam a todos os comandos. |
patch |
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags] |
Atualiza um ou mais campos de um recurso usando o processo de merge estratégico de patch. |
plugin |
kubectl plugin [flags] [options] |
Fornece utilitários para interagir com plugins. |
port-forward |
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] |
Encaminha uma ou mais portas locais para um pod. |
proxy |
kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags] |
Executa um proxy para o servidor de API do Kubernetes. |
replace |
kubectl replace -f FILENAME |
Substitui um recurso de um arquivo ou stdin. |
rollout |
kubectl rollout SUBCOMMAND [options] |
Gerencia o rollout de um recurso. Tipos de recursos válidos incluem: deployments, daemonsets e statefulsets. |
run |
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client|none] [--overrides=inline-json] [flags] |
Executa uma imagem especificada no cluster. |
scale |
kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) --replicas=COUNT [--resource-version=version] [--current-replicas=count] [flags] |
Atualiza o tamanho do controlador de replicação especificado. |
set |
kubectl set SUBCOMMAND [options] |
Configura recursos de aplicação. |
taint |
kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N [options] |
Atualiza os taints em um ou mais nós. |
top |
kubectl top (POD | NODE) [flags] [options] |
Exibe o uso de recursos (CPU/Memória/Armazenamento) de pod ou nó. |
uncordon |
kubectl uncordon NODE [options] |
Marca o nó como agendável. |
version |
kubectl version [--client] [flags] |
Exibe a versão do Kubernetes em execução no cliente e servidor. |
wait |
kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available] [options] |
Experimental: Aguarda uma condição específica em um ou muitos recursos. |
Para saber mais sobre operações de comando, consulte a documentação de referência do kubectl.
Tipos de recursos
A seguinte tabela inclui uma lista de todos os tipos de recursos suportados e seus pseudônimos (aliases) abreviados.
(Esta saída pode ser obtida de kubectl api-resources, e estava precisa a partir do Kubernetes 1.25.0)
| NAME | SHORTNAMES | APIVERSION | NAMESPACED | KIND |
|---|---|---|---|---|
bindings |
v1 | true | Binding | |
componentstatuses |
cs |
v1 | false | ComponentStatus |
configmaps |
cm |
v1 | true | ConfigMap |
endpoints |
ep |
v1 | true | Endpoints |
events |
ev |
v1 | true | Event |
limitranges |
limits |
v1 | true | LimitRange |
namespaces |
ns |
v1 | false | Namespace |
nodes |
no |
v1 | false | Node |
persistentvolumeclaims |
pvc |
v1 | true | PersistentVolumeClaim |
persistentvolumes |
pv |
v1 | false | PersistentVolume |
pods |
po |
v1 | true | Pod |
podtemplates |
v1 | true | PodTemplate | |
replicationcontrollers |
rc |
v1 | true | ReplicationController |
resourcequotas |
quota |
v1 | true | ResourceQuota |
secrets |
v1 | true | Secret | |
serviceaccounts |
sa |
v1 | true | ServiceAccount |
services |
svc |
v1 | true | Service |
mutatingwebhookconfigurations |
admissionregistration.k8s.io/v1 | false | MutatingWebhookConfiguration | |
validatingwebhookconfigurations |
admissionregistration.k8s.io/v1 | false | ValidatingWebhookConfiguration | |
customresourcedefinitions |
crd,crds |
apiextensions.k8s.io/v1 | false | CustomResourceDefinition |
apiservices |
apiregistration.k8s.io/v1 | false | APIService | |
controllerrevisions |
apps/v1 | true | ControllerRevision | |
daemonsets |
ds |
apps/v1 | true | DaemonSet |
deployments |
deploy |
apps/v1 | true | Deployment |
replicasets |
rs |
apps/v1 | true | ReplicaSet |
statefulsets |
sts |
apps/v1 | true | StatefulSet |
tokenreviews |
authentication.k8s.io/v1 | false | TokenReview | |
localsubjectaccessreviews |
authorization.k8s.io/v1 | true | LocalSubjectAccessReview | |
selfsubjectaccessreviews |
authorization.k8s.io/v1 | false | SelfSubjectAccessReview | |
selfsubjectrulesreviews |
authorization.k8s.io/v1 | false | SelfSubjectRulesReview | |
subjectaccessreviews |
authorization.k8s.io/v1 | false | SubjectAccessReview | |
horizontalpodautoscalers |
hpa |
autoscaling/v2 | true | HorizontalPodAutoscaler |
cronjobs |
cj |
batch/v1 | true | CronJob |
jobs |
batch/v1 | true | Job | |
certificatesigningrequests |
csr |
certificates.k8s.io/v1 | false | CertificateSigningRequest |
leases |
coordination.k8s.io/v1 | true | Lease | |
endpointslices |
discovery.k8s.io/v1 | true | EndpointSlice | |
events |
ev |
events.k8s.io/v1 | true | Event |
flowschemas |
flowcontrol.apiserver.k8s.io/v1beta2 | false | FlowSchema | |
prioritylevelconfigurations |
flowcontrol.apiserver.k8s.io/v1beta2 | false | PriorityLevelConfiguration | |
ingressclasses |
networking.k8s.io/v1 | false | IngressClass | |
ingresses |
ing |
networking.k8s.io/v1 | true | Ingress |
networkpolicies |
netpol |
networking.k8s.io/v1 | true | NetworkPolicy |
runtimeclasses |
node.k8s.io/v1 | false | RuntimeClass | |
poddisruptionbudgets |
pdb |
policy/v1 | true | PodDisruptionBudget |
podsecuritypolicies |
psp |
policy/v1beta1 | false | PodSecurityPolicy |
clusterrolebindings |
rbac.authorization.k8s.io/v1 | false | ClusterRoleBinding | |
clusterroles |
rbac.authorization.k8s.io/v1 | false | ClusterRole | |
rolebindings |
rbac.authorization.k8s.io/v1 | true | RoleBinding | |
roles |
rbac.authorization.k8s.io/v1 | true | Role | |
priorityclasses |
pc |
scheduling.k8s.io/v1 | false | PriorityClass |
csidrivers |
storage.k8s.io/v1 | false | CSIDriver | |
csinodes |
storage.k8s.io/v1 | false | CSINode | |
csistoragecapacities |
storage.k8s.io/v1 | true | CSIStorageCapacity | |
storageclasses |
sc |
storage.k8s.io/v1 | false | StorageClass |
volumeattachments |
storage.k8s.io/v1 | false | VolumeAttachment |
Opções de saída
Use as seguintes seções para informações sobre como você pode formatar ou classificar a saída de determinados comandos. Para detalhes sobre quais comandos suportam as várias opções de saída, consulte a documentação de referência do kubectl.
Formatando a saída
O formato de saída padrão para todos os comandos kubectl é o formato de texto simples legível por humanos.
Para exibir detalhes na janela do seu terminal em um formato específico, você pode adicionar as flags -o
ou --output a um comando kubectl suportado.
Sintaxe
kubectl [command] [TYPE] [NAME] -o <output_format>
Dependendo da operação do kubectl, os seguintes formatos de saída são suportados:
| Formato de saída | Descrição |
|---|---|
-o custom-columns=<spec> |
Imprime uma tabela usando uma lista separada por vírgulas de colunas personalizadas. |
-o custom-columns-file=<filename> |
Imprime uma tabela usando o template de colunas personalizadas no arquivo <filename>. |
-o json |
Gera um objeto de API formatado em JSON. |
-o jsonpath=<template> |
Imprime os campos definidos em uma expressão jsonpath. |
-o jsonpath-file=<filename> |
Imprime os campos definidos pela expressão jsonpath no arquivo <filename>. |
-o kyaml |
Gera um objeto de API formatado em KYAML (alfa, requer variável de ambiente KUBECTL_KYAML="true"). |
-o name |
Imprime apenas o nome do recurso e nada mais. |
-o wide |
Saída no formato de texto simples com qualquer informação adicional. Para pods, o nome do nó é incluído. |
-o yaml |
Gera um objeto de API formatado em YAML. KYAML é um dialeto experimental específico do Kubernetes do YAML, e pode ser interpretado como YAML. |
Exemplo
Neste exemplo, o seguinte comando gera os detalhes para um único pod como um objeto formatado em YAML:
kubectl get pod web-pod-13je7 -o yaml
Lembre-se: Consulte a documentação de referência do kubectl para detalhes sobre qual formato de saída é suportado por cada comando.
Colunas personalizadas
Para definir colunas personalizadas e gerar apenas os detalhes que você deseja em uma tabela, você pode usar a opção custom-columns.
Você pode escolher definir as colunas personalizadas inline ou usar um arquivo de template: -o custom-columns=<spec> ou -o custom-columns-file=<filename>.
Exemplos
Inline:
kubectl get pods <pod-name> -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
Arquivo de template:
kubectl get pods <pod-name> -o custom-columns-file=template.txt
onde o arquivo template.txt contém:
NAME RSRC
metadata.name metadata.resourceVersion
O resultado da execução de qualquer comando é similar a:
NAME RSRC
submit-queue 610995
Colunas do lado do servidor
kubectl suporta receber informações específicas de colunas do servidor sobre objetos.
Isso significa que para qualquer recurso dado, o servidor retornará colunas e linhas relevantes para esse recurso, para o cliente imprimir.
Isso permite uma saída legível por humanos consistente entre clientes usados contra o mesmo cluster, fazendo com que o servidor encapsule os detalhes da impressão.
Esta funcionalidade está habilitada por padrão. Para desabilitá-la, adicione a
flag --server-print=false ao comando kubectl get.
Exemplos
Para imprimir informações sobre o status de um pod, use um comando como o seguinte:
kubectl get pods <pod-name> --server-print=false
A saída é similar a:
NAME AGE
pod-name 1m
Classificando objetos de lista
Para gerar objetos em uma lista classificada na janela do seu terminal, você pode adicionar a flag --sort-by
a um comando kubectl suportado. Classifique seus objetos especificando qualquer campo numérico ou string
com a flag --sort-by. Para especificar um campo, use uma expressão jsonpath.
Sintaxe
kubectl [command] [TYPE] [NAME] --sort-by=<jsonpath_exp>
Exemplo
Para imprimir uma lista de pods classificados por nome, você executa:
kubectl get pods --sort-by=.metadata.name
Exemplos: Operações comuns
Use o seguinte conjunto de exemplos para ajudar você a se familiarizar com a execução das operações kubectl comumente usadas:
kubectl apply - Aplica ou atualiza um recurso de um arquivo ou stdin.
# Cria um serviço usando a definição em example-service.yaml.
kubectl apply -f example-service.yaml
# Cria um controlador de replicação usando a definição em example-controller.yaml.
kubectl apply -f example-controller.yaml
# Cria os objetos que são definidos em qualquer arquivo .yaml, .yml ou .json dentro do diretório <directory>.
kubectl apply -f <directory>
kubectl get - Lista um ou mais recursos.
# Lista todos os pods em formato de saída de texto simples.
kubectl get pods
# Lista todos os pods em formato de saída de texto simples e inclui informações adicionais (como nome do nó).
kubectl get pods -o wide
# Lista o controlador de replicação com o nome especificado em formato de saída de texto simples. Dica: Você pode encurtar e substituir o tipo de recurso 'replicationcontroller' com o alias 'rc'.
kubectl get replicationcontroller <rc-name>
# Lista todos os controladores de replicação e services juntos em formato de saída de texto simples.
kubectl get rc,services
# Lista todos os daemon sets em formato de saída de texto simples.
kubectl get ds
# Lista todos os pods executando no nó server01
kubectl get pods --field-selector=spec.nodeName=server01
kubectl describe - Exibe o estado detalhado de um ou mais recursos, incluindo os não inicializados por padrão.
# Exibe os detalhes do nó com nome <node-name>.
kubectl describe nodes <node-name>
# Exibe os detalhes do pod com nome <pod-name>.
kubectl describe pods/<pod-name>
# Exibe os detalhes de todos os pods que são gerenciados pelo controlador de replicação chamado <rc-name>.
# Lembre-se: Qualquer pod que seja criado pelo controlador de replicação recebe um prefixo com o nome do controlador de replicação.
kubectl describe pods <rc-name>
# Descreve todos os pods
kubectl describe pods
Nota:
O comandokubectl get é geralmente usado para recuperar um ou mais
recursos do mesmo tipo de recurso. Ele possui um rico conjunto de flags que permite
personalizar o formato de saída usando a flag -o ou --output, por exemplo.
Você pode especificar a flag -w ou --watch para começar a observar atualizações para um
objeto específico. O comando kubectl describe é mais focado em descrever os muitos
aspectos relacionados de um recurso especificado. Ele pode realizar várias chamadas de API
para o servidor de API para construir uma visualização para o usuário. Por exemplo, o comando kubectl describe node
recupera não apenas as informações sobre o nó, mas também um resumo dos
pods executando nele, os eventos gerados para o nó, etc.kubectl delete - Exclui recursos de um arquivo, stdin, ou especificando seletores de rótulo, nomes, seletores de recursos, ou recursos.
# Exclui um pod usando o tipo e nome especificados no arquivo pod.yaml.
kubectl delete -f pod.yaml
# Exclui todos os pods e services que têm o rótulo '<label-key>=<label-value>'.
kubectl delete pods,services -l <label-key>=<label-value>
# Exclui todos os pods, incluindo os não inicializados.
kubectl delete pods --all
kubectl exec - Executa um comando contra um contêiner em um pod.
# Obtém saída da execução de 'date' do pod <pod-name>. Por padrão, a saída é do primeiro contêiner.
kubectl exec <pod-name> -- date
# Obtém saída da execução de 'date' no contêiner <container-name> do pod <pod-name>.
kubectl exec <pod-name> -c <container-name> -- date
# Obtém um TTY interativo e executa /bin/bash do pod <pod-name>. Por padrão, a saída é do primeiro contêiner.
kubectl exec -ti <pod-name> -- /bin/bash
kubectl logs - Imprime os logs de um contêiner em um pod.
# Retorna um snapshot dos logs do pod <pod-name>.
kubectl logs <pod-name>
# Inicia o streaming dos logs do pod <pod-name>. Isso é similar ao comando Linux 'tail -f'.
kubectl logs -f <pod-name>
kubectl diff - Visualiza um diff das atualizações propostas para um cluster.
# Compara recursos incluídos em "pod.json".
kubectl diff -f pod.json
# Compara arquivo lido do stdin.
cat service.yaml | kubectl diff -f -
Exemplos: Criando e usando plugins
Use o seguinte conjunto de exemplos para ajudar você a se familiarizar com a escrita e uso de plugins do kubectl:
# cria um plugin simples em qualquer linguagem e nomeia o arquivo executável resultante
# para que comece com o prefixo "kubectl-"
cat ./kubectl-hello
#!/bin/sh
# este plugin imprime as palavras "hello world"
echo "hello world"
Com um plugin escrito, vamos torná-lo executável:
chmod a+x ./kubectl-hello
# e movê-lo para um local no nosso PATH
sudo mv ./kubectl-hello /usr/local/bin
sudo chown root:root /usr/local/bin
# Você agora criou e "instalou" um plugin kubectl.
# Você pode começar a usar este plugin invocando-o do kubectl como se fosse um comando regular
kubectl hello
hello world
# Você pode "desinstalar" um plugin, removendo-o da pasta no seu
# $PATH onde você o colocou
sudo rm /usr/local/bin/kubectl-hello
Para visualizar todos os plugins que estão disponíveis para kubectl, use
o subcomando kubectl plugin list:
kubectl plugin list
A saída é similar a:
The following kubectl-compatible plugins are available:
/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
/usr/local/bin/kubectl-bar
kubectl plugin list também avisa sobre plugins que não são
executáveis, ou que são sombreados por outros plugins; por exemplo:
sudo chmod -x /usr/local/bin/kubectl-foo # remove permissão de execução
kubectl plugin list
The following kubectl-compatible plugins are available:
/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
- warning: /usr/local/bin/kubectl-foo identified as a plugin, but it is not executable
/usr/local/bin/kubectl-bar
error: one plugin warning was found
Você pode pensar em plugins como um meio de construir funcionalidades mais complexas sobre os comandos kubectl existentes:
cat ./kubectl-whoami
Os próximos exemplos assumem que você já fez kubectl-whoami ter
o seguinte conteúdo:
#!/bin/bash
# este plugin faz uso do comando `kubectl config` para gerar
# informações sobre o usuário atual, baseado no contexto atualmente selecionado
kubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}'
Executar o comando acima fornece uma saída contendo o usuário para o contexto atual no seu arquivo KUBECONFIG:
# torna o arquivo executável
sudo chmod +x ./kubectl-whoami
# e o move para o seu PATH
sudo mv ./kubectl-whoami /usr/local/bin
kubectl whoami
Current user: plugins-user
Próximos passos
- Leia a documentação de referência do
kubectl:- a referência de comandos kubectl
- a referência de argumentos de linha de comando
- Aprenda sobre convenções de uso do
kubectl - Leia sobre suporte ao JSONPath no kubectl
- Leia sobre como estender kubectl com plugins
- Para descobrir mais sobre plugins, veja plugin CLI de exemplo.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.