############################################################################## # KUBERNETES # PDF: https://sematext.com/kubernetes-cheat-sheet/ # WEBSITE: https://kubernetes.io/ # DOCUMENTATION: https://kubernetes.io/docs/home ############################################################################## ############################################################################## # CLIENT CONFIGURATION ############################################################################## # Setup autocomplete in bash; bash-completion package should be installed first source <(kubectl completion bash) # View Kubernetes config kubectl config view # View specific config items by json path kubectl config view -o jsonpath='{.users[?(@.name == "k8s")].user.password}' # Set credentials for foo.kuberntes.com kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword ############################################################################## # VIEWING, FINDING RESOURCES ############################################################################## # List all services in the namespace kubectl get services # List all pods in all namespaces in wide format kubectl get pods -o wide --all-namespaces # List all pods in json (or yaml) format kubectl get pods -o json # Describe resource details (node, pod, svc) kubectl describe nodes my-node # 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' # Rolling update pods for frontend-v1 kubectl rolling-update frontend-v1 -f frontend-v2.json # Scale a replicaset named 'foo' to 3 kubectl scale --replicas=3 rs/foo # Scale a resource specified in "foo.yaml" to 3 kubectl scale --replicas=3 -f foo.yaml # Execute a command in every pod / replica for i in 0 1; do kubectl exec foo-$i -- sh -c 'echo $(hostname) > /usr/share/nginx/html/index.html'; done ############################################################################## # MANAGE RESOURCES ############################################################################## # Get documentation for pod or service kubectl explain pods,svc # Create resource(s) like pods, services or daemonsets kubectl create -f ./my-manifest.yaml # Apply a configuration to a resource kubectl apply -f ./my-manifest.yaml # Start a single instance of Nginx kubectl run nginx --image=nginx # Create a secret with several keys cat <<EOF | kubectl create -f - apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: password: $(echo "s33msi4" | base64) username: $(echo "jane"| base64) EOF # Delete a resource kubectl delete -f ./my-manifest.yaml ############################################################################## # MONITORING & LOGGING ############################################################################## # Deploy Heapster from Github repository kubectl create -f deploy/kube-config/standalone/ # Show metrics for nodes kubectl top node # Show metrics for pods kubectl top pod # Show metrics for a given pod and its containers kubectl top pod pod_name --containers # Dump pod logs (stdout) kubectl logs pod_name # Stream pod container logs (stdout, multi-container case) kubectl logs -f pod_name -c my-container