Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
1 contributor

Users who have contributed to this file

Kubernetes

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
  • Set active namespace
kubectl config set-context --current --namespace=namespace_name

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

Interacting with running pods

  • Run command in pod
kubectl exec pod_name -- command_name
  • Run command in pod with multiple containers
kubectl exec pod_name -c container_name -- command_name
  • Get terminal of pod
kubectl exec -it pod_name /bin/sh
  • Get terminal of a container running in pod with multiple containers
kubectl exec -it pod_name -c container_name /bin/sh