Kubernetes cluster Administration notes
Kubectl
Show yaml
kubectl get deployments/bookstack -o yaml
Scale
kubectl scale deployment/name --replicas=2
Drain nodes
Drain node
kubectl drain host.name.local --ignore-daemonsets
Put node back to ready
kubectl uncordon host.name.local
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:
wget https://github.com/etcd-io/etcd/releases/download/v3.3.12/etcd-v3.3.12-linux-amd64.tar.gz
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
metadata:
name: ssd-monitor
spec:
selector:
matchLabels:
app: ssd-monitor
template:
metadata:
labels:
app: ssd-monitor
spec:
nodeSelector:
disk: ssd
containers:
- 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 node02.myhypervisor.ca disk=ssd
Remove a label from a node:
kubectl label node node02.myhypervisor.ca disk-
Change the label on a node from a given value to a new value :
kubectl label node node02.myhypervisor.ca 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