DevOps/Kubernetes/kubectl

< DevOps‎ | Kubernetes(Redirected from Kubectl)

Kubectl is a command line interface for running commands against Kubernetes clusters.[1]

To install in MacOS execute: brew install kubernetes-cli

kubectl info commandsEdit

  • Verify running Pods:
    • kubectl get pods
    • kubectl get pod PODNAME
    • kubectl get pod PODNAME -n MY_NAMESPACE
    • kubectl get pod PODNAME -n MY_NAMESPACE --watch
  • Fetch metrics for PODNAME pod kubectl top pod PODNAME

kubectl operation commandsEdit

  • Connect to a Pod: kubectl exec -it YOUR_POD_NANE -- /bin/bash

kubectl delete/destroy commandsEdit

  • kubectl delete namespace MY_NAMESPACE

kubectl Command ReferenceEdit

The following table includes short descriptions and the general syntax for all of the kubectl operations:[2]

  • Apply kubectl apply -f FILENAME [flags]. Apply a configuration change to a resource from a file or stdin. Allows to create a Pod.
  • Attach kubectl attach POD -c CONTAINER [-i] [-t] [flags]:Attach to a running container either to view the output stream or interact with the container (stdin)
  • Auto Scale kubectl autoscale (-f FILENAME \| TYPE NAME \| TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]: Automatically scale the set of pods that are managed by a replication controller


  • Cluster Info kubectl cluster-info [flags] :Display endpoint information about the master and services in the cluster
  • Create kubectl create -f FILENAME [flags]: Create one or more resources from a file or stdin
    • kubectl create namespace myexamplenamespace
    • kubectl create sa my_new_user (Create service account for your my_new_user)
    • kubectl create -f mypod.yaml


  • Config: kubectl config .../...
    • kubectl config view
  • Delete kubectl delete (-f FILENAME \| TYPE [NAME \| /NAME \| -l label \| --all]) [flags] :Delete resources
    • kubectl delete --all namespaces
  • Describe kubectl describe (-f FILENAME \| TYPE [NAME_PREFIX \| /NAME \| -l label]) [flags] : Detailed state of one or more resources.
    • kubectl describe pod MyPodName
    • kubectl describe pods
    • kubectl describe replicaset MyReplicaName
  • Edit kubectl edit (-f FILENAME \| TYPE NAME \| TYPE/NAME) [flags] : Edit and update the definition of one or more resources on the server by using the default editor.
  • Execute kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [-- COMMAND [args...]]: Execute a command against a container in a pod
  • Logs kubectl logs POD [-c CONTAINER] [--follow] [flags]: Print the logs for a container in a pod.
    • kubectl logs -l app=elasticsearch (using labels: -l)
  • Get:
    • kubectl get apiservices
    • kubectl get nodes
    • kubectl get pods
    • kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -[3]
  • Replace: kubectl replace --force -f yml_file_describing_pod.yml
  • Proxy: kubectl proxy --port=8080[4]
  • Rolling-update: kubectl rolling-update
  • Run kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]: Run a specified image on the cluster.
  • Scale: kubectl scale deployment YOUR_DEPLOYMENT_NAME
  • Stop kubectl stop
  • Version kubectl version [--client] [flags]: Display the Kubernetes version running on the client and server.


See alsoEdit

  1. https://kubernetes.io/docs/reference/kubectl/overview/
  2. https://kubernetes.io/docs/reference/kubectl/overview/
  3. https://stackoverflow.com/a/45046340/9269906
  4. https://kubernetes.io/docs/tasks/access-kubernetes-api/http-proxy-access-api/