Created
January 28, 2017 10:45
-
-
Save ipedrazas/95391ffd88190bea94ca188d3d2c1cbe to your computer and use it in GitHub Desktop.
Revisions
-
ipedrazas created this gist
Jan 28, 2017 .There are no files selected for viewing
This file contains hidden or 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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,204 @@ ## 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 }