From 3a6243142c8af0b08e907c56b230df009abb6bce Mon Sep 17 00:00:00 2001 From: pierretou Date: Fri, 15 May 2020 17:38:51 +0200 Subject: [PATCH 1/2] Create kubectl.md sheetcheat add kubectl sheetcheat based on official https://kubernetes.io/docs/reference/kubectl/cheatsheet/ --- kubectl.md | 366 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 kubectl.md diff --git a/kubectl.md b/kubectl.md new file mode 100644 index 00000000000..d286720b737 --- /dev/null +++ b/kubectl.md @@ -0,0 +1,366 @@ +## Getting started + +### Kubectl Autocomplete + +#### BASH + +```bash +source <(kubectl completion bash) # active l'auto-complétion pour bash dans le shell courant, le paquet bash-completion devant être installé au préalable +echo "source <(kubectl completion bash)" >> ~/.bashrc # ajoute l'auto-complétion de manière permanente à votre shell bash +``` + +You can also use a shorthand alias for `kubectl` that also works with completion: + +```bash +alias k=kubectl +complete -F __start_kubectl k +``` + +#### ZSH + +```zsh +source <(kubectl completion zsh) # active l'auto-complétion pour zsh dans le shell courant +echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc # ajoute l'auto-complétion de manière permanente à votre shell zsh +``` + +### Kubectl Context and Configuration + +Set which Kubernetes cluster `kubectl` communicates with and modifies configuration information. See [Authenticating Across Clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) with kubeconfig documentation for detailed config file information. + +```bash +kubectl config view # Show Merged kubeconfig settings. + +# use multiple kubeconfig files at the same time and view merged config +KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 + +kubectl config view + +# get the password for the e2e user +kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' + +kubectl config view -o jsonpath='{.users[].name}' # display the first user +kubectl config view -o jsonpath='{.users[*].name}' # get a list of users +kubectl config get-contexts # display list of contexts +kubectl config current-context # display the current-context +kubectl config use-context my-cluster-name # set the default context to my-cluster-name + +# add a new user to your kubeconf that supports basic auth +kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword + +# permanently save the namespace for all subsequent kubectl commands in that context. +kubectl config set-context --current --namespace=ggckad-s2 + +# set a context utilizing a specific username and namespace. +kubectl config set-context gce --user=cluster-admin --namespace=foo \ + && kubectl config use-context gce + +kubectl config unset users.foo # delete user foo +``` + +### Apply + +`apply` manages applications through files defining Kubernetes resources. It creates and updates resources in a cluster through running `kubectl apply`. This is the recommended way of managing Kubernetes applications on production. See [Kubectl Book](https://kubectl.docs.kubernetes.io/). + +### Creating Objects + +Kubernetes manifests can be defined in YAML or JSON. The file extension `.yaml`, `.yml`, and `.json` can be used. + +```bash +kubectl apply -f ./my-manifest.yaml # create resource(s) +kubectl apply -f ./my1.yaml -f ./my2.yaml # create from multiple files +kubectl apply -f ./dir # create resource(s) in all manifest files in dir +kubectl apply -f https://git.io/vPieo # create resource(s) from url +kubectl create deployment nginx --image=nginx # start a single instance of nginx +kubectl explain pods # get the documentation for pod manifests + +# Create multiple YAML objects from stdin +cat < pod.yaml + +kubectl attach my-pod -i # Attach to Running Container +kubectl port-forward my-pod 5000:6000 # Listen on port 5000 on the local machine and forward to port 6000 on my-pod +kubectl exec my-pod -- ls / # Run command in existing pod (1 container case) +kubectl exec my-pod -c my-container -- ls / # Run command in existing pod (multi-container case) +kubectl top pod POD_NAME --containers # Show metrics for a given pod and its containers +``` + +### Interacting with Nodes and Cluster + +```bash +kubectl cordon my-node # Mark my-node as unschedulable +kubectl drain my-node # Drain my-node in preparation for maintenance +kubectl uncordon my-node # Mark my-node as schedulable +kubectl top node my-node # Show metrics for a given node +kubectl cluster-info # Display addresses of the master and services +kubectl cluster-info dump # Dump current cluster state to stdout +kubectl cluster-info dump --output-directory=/path/to/cluster-state # Dump current cluster state to /path/to/cluster-state + +# If a taint with that key and effect already exists, its value is replaced as specified. +kubectl taint nodes foo dedicated=special-user:NoSchedule +``` + +#### Resource types + +List all supported resource types along with their shortnames, [API group](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-groups), whether they are [namespaced](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces), and [Kind](https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects): + +```bash +kubectl api-resources +``` + +Other operations for exploring API resources: + +```bash +kubectl api-resources --namespaced=true # All namespaced resources +kubectl api-resources --namespaced=false # All non-namespaced resources +kubectl api-resources -o name # All resources with simple output (just the resource name) +kubectl api-resources -o wide # All resources with expanded (aka "wide") output +kubectl api-resources --verbs=list,get # All resources that support the "list" and "get" request verbs +kubectl api-resources --api-group=extensions # All resources in the "extensions" API group +``` + +#### Formatting output + +To output details to your terminal window in a specific format, add the `-o` (or `--output`) flag to a supported `kubectl` command. + +| Output format | Description | +| ----------------------------------- | -------------------------------- | +| `-o=custom-columns=` | Print a table using a comma separated list of custom columns files | +| `-o=custom-columns-file=` | Print a table using the custom columns template in the file | +| `-o=json` | Output a JSON formatted API object | +| `-o=jsonpath=