Created
January 28, 2017 10:45
-
-
Save ipedrazas/95391ffd88190bea94ca188d3d2c1cbe to your computer and use it in GitHub Desktop.
kubernetes cheatsheet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Useful Commands | |
Get kubectl version | |
kubectl version | |
Get cluster info: | |
kubectl cluster-info | |
## Viewing, Finding Resources | |
### Columnar output | |
kubectl get services # List all services in the namespace | |
kubectl get pods --all-namespaces # List all pods in all namespaces | |
kubectl get pods -o wide # List all pods in the namespace, with more details | |
kubectl get rc <rc-name> # List a particular replication controller | |
kubectl get pods -l env=production # List all pods with a label env=production | |
### Verbose output | |
kubectl describe nodes <node-name> | |
kubectl describe pods <pod-name> | |
kubectl describe pods <rc-name> # Lists pods created by <rc-name> using common prefix | |
### List Services Sorted by Name | |
kubectl get services --sort-by=.metadata.name | |
### List pods Sorted by Restart Count | |
kubectl get pods --sort-by=.status.containerStatuses[0].restartCount | |
### Get the version label of all pods with label app=cassandra | |
kubectl get pods --selector=app=cassandra rc -o 'jsonpath={.items[*].metadata.labels.version}' | |
### Get ExternalIPs of all nodes | |
kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=ExternalIP)].address}' | |
### Check which nodes are ready | |
kubectl get nodes -o jsonpath='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'| tr ';' "\n" | grep "Ready=True" | |
## Creating Objects | |
kubectl create -f ./file.yml | |
kubectl create -f ./file1.yml -f ./file2.yaml | |
kubectl create -f ./dir | |
kubectl create -f http://www.fpaste.org/279276/48569091/raw/ | |
### Create multiple YAML objects from stdin | |
cat <<EOF | kubectl create -f - | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: busybox-sleep | |
spec: | |
containers: | |
- name: busybox | |
image: busybox | |
args: | |
- sleep | |
- "1000000" | |
--- | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
name: busybox-sleep-less | |
spec: | |
containers: | |
- name: busybox | |
image: busybox | |
args: | |
- sleep | |
- "1000" | |
EOF | |
# Create a secret with several keys | |
cat <<EOF | kubectl create -f - | |
apiVersion: v1 | |
kind: Secret | |
metadata: | |
name: mysecret | |
type: Opaque | |
data: | |
password: $(echo -n "Sup3rS3cr3t" | base64) | |
username: $(echo -n "superuser" | base64) | |
EOF | |
## Modifying and Deleting Resources | |
kubectl label pods <pod-name> new-label=awesome # Add a Label | |
kubectl annotate pods <pod-name> icon-url=http://goo.gl/XXBTWq # Add an annotation | |
kubectl delete pod pingredis-XXXXX | |
## Scaling up & down | |
kubectl scale --replicas=3 deployment nginx | |
### Interacting with running Pods | |
kubectl logs <pod-name> | |
kubectl logs -f <pod-name> | |
kubectl run -i --tty busybox --image=busybox -- sh # Run pod as interactive shell | |
kubectl attach <podname> -i # Attach to Running Container | |
kubectl port-forward <podname> <local-and-remote-port> # Forward port of Pod to your local machine | |
kubectl port-forward <servicename> <port> # Forward port to service | |
kubectl exec <pod-name> -- ls / # Run command in existing pod (1 container case) | |
kubectl exec <pod-name> -c <container-name> -- ls / # Run command in existing pod (multi-container case) | |
## Checking that the DNS works: | |
kubectl exec busybox -- nslookup kubernetes | |
kubectl exec busybox -- nslookup kubernetes.default | |
kubectl exec busybox -- nslookup kubernetes.default.svc.cluster.local | |
## Create an expose a deployment | |
kubectl run nginx --image=nginx:1.9.12 | |
kubectl expose deployment nginx --port=80 --type=LoadBalancer | |
## Create a ConfigMap from a file | |
kubectl create configmap nginx-ghost --from-file=configs/ghost.conf --namespace=ghost | |
## Create a secret from a file | |
kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt | |
## Handy bash Aliases | |
alias k="kubectl" | |
alias kc="kubectl create -f" | |
alias kg="kubectl get" | |
alias pods="kubectl get pods" | |
alias allpods="kubectl get pods --all-namespaces" | |
alias rcs="kubectl get rc" | |
alias svcs="kubectl get services" | |
alias dep="kubectl get deployment" | |
alias kd="kubectl describe" | |
alias kdp="kubectl describe pod " | |
alias kds="kubectl describe service " | |
alias nodes="kubectl get nodes" | |
alias klogs="kubectl logs" | |
alias ns="kubectl get ns" | |
alias deploys="kubectl get deployment" | |
alias events="kubectl get events" | |
alias kexec="kubectl exec -it " | |
alias secrets="kubectl get secrets" | |
alias igs="kubectl get ingress" | |
alias contexts="kubectl config get-contexts" | |
alias ktop="kubectl top nodes" | |
## Handy bash functions | |
### Delete pod, don't wait | |
function dp(){ | |
kubectl delete pod $1 --grace-period=0 | |
} | |
### Secrets related functions | |
function encode(){ | |
echo -n "$1" | base64 | |
} | |
function decode(){ | |
echo -n "$1" | base64 -D | |
} | |
function gettoken(){ | |
kubectl get secret $(kubectl get secret | grep default | awk '{print $1}') -o yaml | grep "token:" | awk '{print $2}' | base64 -D | |
} | |
### set context quickly | |
function context(){ | |
kubectl config use-context $1 | |
} | |
### run bash in a pod | |
function dex(){ | |
docker exec -it $1 bash | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment