kubeadm - nlpie/nlp-adapt-kube GitHub Wiki

PREREQUISITES

Requirements: TODO

Install kubeadm:

  • see Installing kubeadm (see specific instructions for your OS here)
  • run kubeadm init to create configuration (only on new nodes before joining cluster)

On each node

Odds and ends:

  1. sudo su -
  2. systemctl enable kubelet && systemctl start kubelet
  3. echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Disable swap:

  • sudo swapoff -a (or for permanent solution:)
  • sudo vi /etc/fstab and edit out swap drive`

On master node only:

  1. sudo iptables -I INPUT -p tcp -m tcp --dport 6443 -j ACCEPT (NB: may need OVERRIDE rule, depending on policy)
  2. sudo /sbin/service iptables save
  3. sudo service iptables restart

On worker nodes:

  1. sudo iptables -I INPUT -p tcp -m tcp --dport 10250 -j ACCEPT (NB: may need OVERRIDE rule, depending on policy)
  2. sudo /sbin/service iptables save 3 sudo service iptables restart

Limit resources:

On node you wish to limit resources used by kubernetes, add --system-reserved=cpu=500m,memory=1Gi to the file /etc/systemd/system/kubelet.service.d/10-kubeadm.conf`

CLUSTER SETUP

Build cluster (NB: assuming Calico is the CNI):

(Install details here)

  1. kubeadm init --pod-network-cidr=192.168.0.0/16 (initialize)
  2. kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
  3. kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

-- for calico cni (to be done on all nodes post installation of Calico) --

  1. sudo iptables -I cali-failsafe-in -p tcp --match multiport --dport 179 -j ACCEPT
  2. sudo /sbin/service iptables save
  3. sudo service iptables restart

Set permissions to run kubectl as non-root:

  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config

Joining nodes to master:

  1. run command returned by kubeinit (sudo kubeadm join (token and csr output here)) with token output on all nodes to join
  • to add new nodes in existing cluster: kubeadm token create --print-join-command

To cordon nodes:

  1. kubectl get nodes
  2. kubectl drain <node name> --delete-local-data --force --ignore-daemonsets

To destroy nodes:

  1. kubectl delete node <node name>
  2. kubeadm reset (do on node)

Node selector

  1. kubectl get nodes --show-labels
  2. kubectl label --overwrite=true nodes atlas0.ahc.umn.edu node=atlas0 # add label

Dashboard UI:

  1. Install: https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html
  2. Accessing: https://docs.oracle.com/cd/E52668_01/E88884/html/kube_admin_dashboard.html

TODO:

  • Add example workflows
  • Monitoring commands (get/describe/top/etc.)
⚠️ **GitHub.com Fallback** ⚠️