View on GitHub

kubernetes-learning-gitbook

Kubernetes admin: Nodes

   
Title K8 Admin Nodes
Category Course
Level proficient
Duration ?
YouTube https://youtube.com/crankzone/xxx
Blog https://muellermh.wordpress.com/k8s-admin-training-nodes
Author Manuel H. “Onko” Müller
Mail mm@kubernauts.de
Resource https://kubernetes.io/docs/concepts/architecture/nodes/
Description Diese Lektion vermittelt alle Informationen zum Thema Node-Administration

Self-Registration of Nodes

Ein Node meldet sich im Regelfall selbst am Cluster an. Der kubelet-Prozess registriert sich beim Start mit dem Flag --register-node (Standard: true) automatisch als Node-Objekt am API-Server, mitsamt seiner Kapazität und seinen Labels. Ein Administrator muss den Node also nicht manuell als Objekt anlegen, sobald kubelet mit den passenden Zugangsdaten auf dem Node läuft, erscheint er von selbst im Cluster.

kubectl get nodes
kubectl describe node <node-name>

Soll die Selbstregistrierung nicht genutzt werden, etwa weil Nodes vorab zentral verwaltet werden, lässt sich --register-node=false setzen; das Node-Objekt muss dann vorher manuell angelegt werden.

Manual Node Administration

Bevor Wartungsarbeiten an einem Node anstehen (Neustart, Kernel-Update, Hardware-Tausch), sollte der Node aus der Scheduling-Rotation genommen werden:

kubectl cordon node-1
kubectl drain node-1 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon node-1

Technisch setzt cordon intern einen Taint (node.kubernetes.io/unschedulable) auf den Node. Ein Taint auf einem Node stößt Pods ab, die die passende Toleration nicht mitbringen — der Scheduler plant keine neuen Pods auf einen getainteten Node, es sei denn, der Pod toleriert diesen Taint explizit:

tolerations:
- key: "node.kubernetes.io/unschedulable"
  operator: "Exists"
  effect: "NoSchedule"

Node Capacity

Jeder Node meldet seine Kapazität in zwei Werten:

kubectl describe node <node-name>

Der Abschnitt Capacity und Allocatable in der Ausgabe von kubectl describe node zeigt beide Werte nebeneinander.

Für einen schnellen Überblick über die aktuelle Auslastung eines Nodes gibt es zusätzlich:

kubectl top node

Wichtig: kubectl top ist keine eingebaute Funktion des API-Servers. Sie setzt einen separat zu installierenden Metrics Server im Cluster voraus. Ohne laufenden Metrics Server liefert kubectl top node einen Fehler, unabhängig davon, wie viele Nodes im Cluster registriert sind.

https://kubernetes.io/docs/concepts/architecture/nodes/