Linux-sysctls gebruiken in Kubernetes

Linux Sysctls Gebruiken In Kubernetes



In dit bericht wordt besproken wat Linux sysctl is in Kubernetes en hoe het kan worden gebruikt binnen een cluster van Kubernetes. De sysctl is een interface in het Linux-besturingssysteem waarmee de beheerder de parameters van de kernel tijdens runtime kan wijzigen. Hier laten we zien hoe u de Linux sysctls in het Kubernetes-platform kunt gebruiken. We zullen een eenvoudig voorbeeld demonstreren om u te helpen begrijpen wat voor soort uitvoer u kunt verwachten bij het implementeren van de kubectl-opdrachten voor het gebruik van de sysctls in Kubernetes.

Wat zijn sysctl's?

De sysctls is een interface in Linux die wordt gebruikt om kernelparameters tijdens runtime aan te passen voor de naamruimte in een container. Deze parameters zijn te vinden in het /proc/sys/ virtuele procesbestand en ze dekken verschillende subsystemen zoals virtueel geheugen, netwerken, kernel, enz. Alleen sysctls met naamruimte kunnen onafhankelijk worden ingesteld op pods en Kubernetes geeft de sysctl-instellingen weer. De sysctls op knooppuntniveau die geen naamruimte hebben, moeten worden ingesteld met een andere methode voor het instellen van sysctls, zoals de operator voor het afstemmen van knooppunten. Bovendien staan ​​alleen veilige sysctls standaard op de witte lijst, terwijl de onveilige sysctls handmatig moeten worden ingeschakeld op het knooppunt, zodat ze beschikbaar kunnen zijn voor de gebruiker. Laten we nu eens kijken hoe we Linux sysctls in Kubernetes kunnen gebruiken.







Vereisten

Voordat u begint te leren hoe u de Linux sysctls in Kubernetes gebruikt, moet u ervoor zorgen dat de volgende hulpprogramma's op uw systeem zijn geïnstalleerd:



    • Kubernetes versie 1.23 of een andere nieuwste versie
    • Ubuntu 20.04 of een andere nieuwste versie
    • Sysctls voor pod-ondersteuning
    • Kubectl-opdrachtregelprogramma
    • Minikube-cluster

Ervan uitgaande dat uw systeem aan de vereiste vereisten voldoet, gaan we naar het implementatiegedeelte.



Hoe de Linux-sysctls in Kubernetes te gebruiken?

Het Linux-besturingssysteem is een platform waarmee je de kernels kunt afstemmen via sysctls-knoppen in de netwerkstack. Sommige sysctls hebben een naamruimte voor een pod met een eigen configuratie, terwijl andere geldig zijn voor het hele systeem. Kubernetes heeft de sysctls-interface in twee categorieën gegroepeerd:





    • Namespaced versus sysctls op knooppuntniveau
    • Veilige versus onveilige sysctls

Namespaced versus sysctls op knooppuntniveau:

In de Linux-kernel hebben de meeste sysctls een naamruimte, waardoor je ze onafhankelijk kunt instellen tussen verschillende pods op één knooppunt. De namespaced sysctls zijn eenvoudig toegankelijk in een Kubernetes-pod. Sommige van de namespaced sysctls zijn als volgt:



    • fs.mwachtrij.*
    • kernel .msg*
    • kernel.shm*
    • kernel.sem

De sysctls op knooppuntniveau hebben geen naamruimte en de clusterbeheerder moet deze handmatig instellen. De clusterbeheerder gebruikt een demonenset met een geprivilegieerde container of kan de Linux-distributie van het /etc/sysctls.conf-knooppunt wijzigen. De Node Tuning Operator kan ook worden gebruikt om de sysctls op knooppuntniveau in te stellen.

Veilige versus onveilige sysctls:

Er zijn twee groepen sysctls: veilig en onveilig. De veilige sysctls hebben de juiste naamruimte en zijn volledig geïsoleerd binnen de pods op hetzelfde knooppunt. De veilige sysctls zijn standaard ingeschakeld en kunnen in een pod worden gebruikt door de pod-specificatie te wijzigen. De onveilige sysctls zijn echter standaard uitgeschakeld en moeten handmatig worden ingeschakeld door de clusterbeheerder. De veilige sysctls hebben geen invloed op hun buren omdat ze de juiste naamruimte hebben. Terwijl de onveilige sysctls hun buren onverwachts kunnen beïnvloeden, zoals het overbelasten van een systeem. De veilige set sysctls is als volgt:

    • net.ipv4.ping_group_range
    • net.ipv4.ip_local_port_range
    • kernel.shm_rmid_forced
    • net.ipv4.tcp_syncookies

Het punt dat hier moet worden opgemerkt, is dat alleen een naamruimte alleen niet voldoende is om de sysctl als veilig te beschouwen.

Nu we beide categorieën van sysctls hebben begrepen, gaan we verder om te leren hoe we deze sysctls in Kubernetes kunnen gebruiken. Hier zullen we u begeleiden bij het gebruik van zowel veilige als onveilige sysctls en het handmatig inschakelen van onveilige sysctls in Kubernetes.

Stap # 1: Start het Minikube-cluster

Het Kubernetes-platform kan via sommige clusters worden gebruikt en we gebruiken hier het minikube-cluster. Om het minikube-cluster te starten, kunt u de onderstaande opdracht gebruiken:

> start minikube


Hiermee wordt het minikube-cluster gestart waar u de kubectl-opdrachten kunt uitvoeren en de Linux sysctls in het Kubernetes-platform kunt gebruiken. Wanneer u deze opdracht uitvoert, krijgt u een vergelijkbare uitvoer als hieronder:

Stap # 2: Controleer de parameters van sysctls

De sysctls-interface wordt gebruikt om de kernelparameters te wijzigen die te vinden zijn in het /proc/sys/ virtuele procesbestand. Om alle parameters op te sommen, kan het onderstaande commando worden gebruikt:

> sudo systeem -a


Deze opdracht zal alle kernelparameters uit het /proc/sys/ virtuele procesbestand weergeven. Zie de voorbeelduitvoer in de onderstaande snapshot:

Stap # 3: schakel onveilige sysctls in

De onveilige sysctls moeten handmatig worden ingeschakeld omdat ze standaard zijn uitgeschakeld. De clusterbeheerder schakelt de onveilige sysctls handmatig per knooppunt in. De pods die onveilige sysctls hebben uitgeschakeld, kunnen niet worden gestart, maar alleen worden gepland. Er zijn enkele specifieke voorwaarden (zoals afstemming van runtime-applicaties, hoge prestaties, enz.) wanneer de clusterbeheerder de onveilige sysctls kan toestaan. Om de onveilige sysctls per knooppunt in te schakelen, kunt u de onderstaande kubectl-opdracht gebruiken:

> kubectl –allowed-unsafe-sysctls \


Dit is een zeer eenvoudige en eenvoudige manier om onveilige sysctls in te schakelen met behulp van de opdracht kubectl.


Bovendien kunnen onveilige sysctls worden ingeschakeld door de minikube extra-config-vlag te gebruiken. Dit kan worden gedaan met behulp van de onderstaande opdracht:

> minikube start –extra-config=”kubectl.allowed-unsafe-sysctls=kernel.msg * ,net.core.somaxconn”...


Met deze opdracht kunt u de onveilige sysctls inschakelen via het minikube-cluster. Het kan echter alleen de namespaced sysctls inschakelen. Zie de voorbeelduitvoer in de onderstaande snapshot:

Gevolgtrekking

Dit artikel gaf ons een overzicht van de Linux sysctls-interface. We bespraken wat een Linux sysctl is en hoe deze kan worden gebruikt in de Kubernetes-omgeving. Er zijn twee groepen sysctls: is veilig en onveilig. De veilige groep sysctls is standaard ingeschakeld, terwijl de onveilige sysctls-groep standaard is uitgeschakeld. Met behulp van een eenvoudig en gemakkelijk voorbeeld hebben we geleerd hoe we de onveilige sysctls kunnen inschakelen met behulp van de opdracht kubectl en de vlag minikube –extra-config.