Skip to main content

Kubernetes cluster Administration notes


Show yaml

kubectl get deployments/bookstack -o yaml


kubectl scale deployment/name --replicas=2

Show all resources

for i in $(kubectl api-resources --verbs=list --namespaced -o name | grep -v "" | grep -v "events" | sort | uniq) 

do echo "Resource:" $i 
kubectl get $i


Drain nodes

Drain node

kubectl drain --ignore-daemonsets

Put node back to ready

kubectl uncordon

Replace a new node

Delete a node

kubectl delete node [node_name]

Generate a new token:

kubeadm token generate

List the tokens:

kubeadm token list

Print the kubeadm join command to join a node to the cluster:

kubeadm token create [token_name] --ttl 2h --print-join-command

Create etcd snapshot

Get the etcd binaries:


Unzip the compressed binaries:

tar xvf etcd-v3.3.12-linux-amd64.tar.gz

Move the files into /usr/local/bin:

mv etcd-v3.3.12-linux-amd64/etcd* /usr/local/bin

Take a snapshot of the etcd datastore using etcdctl:

ETCDCTL_API=3 etcdctl snapshot save snapshot.db --cacert /etc/kubernetes/pki/etcd/server.crt --cert /etc/kubernetes/pki/etcd/ca.crt --key /etc/kubernetes/pki/etcd/ca.key

View the help page for etcdctl:

ETCDCTL_API=3 etcdctl --help

Browse to the folder that contains the certificate files:

cd /etc/kubernetes/pki/etcd/

View that the snapshot was successful:

ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshot.db

Backup etcd snapshot

Zip up the contents of the etcd directory:

tar -zcvf etcd.tar.gz /etc/kubernetes/pki/etcd

Create pods on specific node(s) :

Create a DaemonSet from a YAML spec :

apiVersion: apps/v1beta2
kind: DaemonSet
  name: ssd-monitor
      app: ssd-monitor
        app: ssd-monitor
        disk: ssd 
      - name: main
        image: linuxacademycontent/ssd-monitor
kubectl create -f ssd-monitor.yaml

Label a node to identify it and create a pod on it :

kubectl label node disk=ssd

Remove a label from a node:

kubectl label node disk-

Change the label on a node from a given value to a new value :

kubectl label node disk=hdd --overwrite

If you override an existing label, pods running with the previous label will be terminated

Migration notes

Connect to bash

kubectl exec -it pod/nextcloud /bin/bash

Restore MySQL data

kubectl exec -it nextcloudsql-0 -- mysql -u root -pPASSWORD nextcloud_db < backup.sql