Sobes.tech
Middle

Waarom wordt swap uitgeschakeld op Kubernetes knooppunten?

sobes.tech AI

Antwoord van AI

In Kubernetes wordt het uitschakelen van swap op werk- en masterknooppunten aanbevolen, en in sommige gevallen zelfs verplicht.

Belangrijkste redenen:

  • Onvoorspelbaar gedrag bij geheugentekort: Wanneer een knooppunt met ingeschakelde swap geen fysiek geheugen meer heeft, begint het besturingssysteem actief gebruik te maken van het swap-bestand/-partitie. Dit leidt tot een aanzienlijke vertraging van processen, inclusief Kubernetes-systeemcomponenten (kubelet, kube-proxy) en de containers zelf. kubelet kan de beschikbaarheid van bronnen voor pods verkeerd inschatten, wat kan leiden tot het 'doden' (OOMKilled) van pods door valse signalen van geheugen tekort of, omgekeerd, tot vastlopen van processen in plaats van herstarten.

  • Complexiteit in resourcebeheer: Kubernetes beheert efficiënt resources (CPU, geheugen) op pod- en container-niveau via cgroups. Het gebruik van swap voegt een extra abstractielaag toe en bemoeilijkt het monitoren en beperken van het geheugenverbruik door pods. kubelet heeft meer moeite om het daadwerkelijke geheugenverbruik te bepalen als delen van de gegevens naar swap worden verplaatst.

  • Vermindering van prestaties: Swap bevindt zich op de schijf (HDD/SSD), waarvan de toegang veel langzamer is dan RAM. Actief gebruik van swap vermindert de prestaties van applicaties en clustercomponenten aanzienlijk. Dit kan leiden tot timeouts, fouten en instabiliteit van het cluster.

  • Noodzaak van deterministisch gedrag: Voor de stabiliteit van het cluster en voorspelbaar gedrag van applicaties is het belangrijk dat het systeem deterministisch reageert op geheugentekort. Het uitschakelen van swap garandeert dat bij uitputting van het RAM-mechanismen zoals OOMKiller worden geactiveerd, die de minst prioritaire processen (pods) beëindigen en bronnen vrijmaken voor kritischer processen. Met ingeschakelde swap wordt het gedrag minder voorspelbaar.

  • Aanbevelingen van de gemeenschap en documentatie: De officiële Kubernetes-documentatie en best practices van de gemeenschap raden sterk aan om swap uit te schakelen op knooppunten waar Kubernetes-workloads worden uitgevoerd. Dit wordt beschouwd als een standaardpraktijk voor het behouden van stabiliteit en prestaties van het cluster.

# Voorbeeldcommando om swap uit te schakelen
sudo swapoff -a

# Voorbeeld om de swap-invoer uit /etc/fstab te verwijderen zodat de uitschakeling na herstart blijft bestaan
# Zoek de regel met 'swap' of het pad naar uw swap-apparaat/-bestand
# Commentarieer of verwijder die regel
sudo vi /etc/fstab