Delen via


Beveiligings- en kernelupdates toepassen op Linux-knooppunten in Azure Kubernetes Service (AKS)

Om uw clusters te beveiligen, worden beveiligingsupdates automatisch toegepast op Linux-knooppunten in AKS. Deze updates omvatten besturingssysteembeveiligingspatches of kernelupdates. Voor sommige van deze updates moet het knooppunt opnieuw worden opgestart om het proces te voltooien. AKS start deze Linux-knooppunten niet automatisch opnieuw op om het updateproces te voltooien.

Het proces om Windows Server-knooppunten up-to-date te houden, is iets anders. Windows Server-knooppunten ontvangen geen dagelijkse updates. In plaats daarvan voert u een AKS-upgrade uit waarmee nieuwe knooppunten met de meest recente windowsserverinstallatiekopieën en patches worden geïmplementeerd. Zie Een knooppuntgroep upgraden in AKS voor AKS-clusters die gebruikmaken van Windows Server-knooppunten.

In dit artikel wordt beschreven hoe u de opensource-kured (KUbernetes REboot Daemon) gebruikt om te watch voor Linux-knooppunten waarvoor opnieuw moet worden opgestart, en vervolgens automatisch het opnieuw plannen van actieve pods en het proces voor het opnieuw opstarten van knooppunten afhandelt.

Notitie

Kured is een opensource-project in de Cloud Native Computing Foundation. Stuur problemen naar de kured GitHub. Aanvullende ondersteuning vindt u in het #kured kanaal op CNCF Slack.

Voordat u begint

Azure CLI versie 2.0.59 of hoger moet zijn geïnstalleerd en geconfigureerd. Voer az --version uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.

Inzicht in de ervaring voor het bijwerken van AKS-knooppunten

In een AKS-cluster worden uw Kubernetes-knooppunten uitgevoerd als virtuele Azure-machines (VM's). Deze virtuele Linux-machines maken gebruik van een Ubuntu- of Azure Linux-installatiekopie, waarbij het besturingssysteem is geconfigureerd om elke dag automatisch te controleren op updates. Als er beveiligings- of kernelupdates beschikbaar zijn, worden deze automatisch gedownload en geïnstalleerd.

AKS-knooppunten bijwerken en opnieuw opstarten met kured

Voor sommige beveiligingsupdates, zoals kernelupdates, moet het knooppunt opnieuw worden opgestart om het proces te voltooien. Een Linux-knooppunt waarvoor opnieuw moet worden opgestart, maakt een bestand met de naam /var/run/reboot-required. Dit proces voor opnieuw opstarten vindt niet automatisch plaats.

U kunt uw eigen werkstromen en processen gebruiken om het opnieuw opstarten van knooppunten af te handelen of gebruiken kured om het proces te organiseren. Met kuredwordt een DaemonSet geïmplementeerd die een pod uitvoert op elk Linux-knooppunt in het cluster. Deze pods in de DaemonSet watch op aanwezigheid van het vereiste bestand /var/run/reboot en initiëren vervolgens een proces om de knooppunten opnieuw op te starten.

Upgrades van knooppuntinstallatiekopieën

Bij upgrades zonder toezicht worden updates toegepast op het besturingssysteem van het Linux-knooppunt, maar de installatiekopieën die worden gebruikt om knooppunten voor uw cluster te maken, blijven ongewijzigd. Als er een nieuw Linux-knooppunt wordt toegevoegd aan uw cluster, wordt de oorspronkelijke installatiekopieën gebruikt om het knooppunt te maken. Dit nieuwe knooppunt ontvangt elke dag alle beveiligings- en kernelupdates die beschikbaar zijn tijdens de automatische controle, maar blijft niet gepatcht totdat alle controles en opnieuw opstarten zijn voltooid.

U kunt ook upgraden van knooppuntinstallatiekopieën gebruiken om te controleren op en bij te werken op knooppuntinstallatiekopieën die door uw cluster worden gebruikt. Zie upgrade van AKS-knooppuntinstallatiekopieën (Azure Kubernetes Service) voor meer informatie over het upgraden van knooppuntinstallatiekopieën.

Knooppuntupgrades

Er is een ander proces in AKS waarmee u een cluster kunt upgraden . Een upgrade wordt meestal uitgevoerd om over te stappen op een nieuwere versie van Kubernetes, niet alleen om beveiligingsupdates voor knooppunten toe te passen. Een AKS-upgrade voert de volgende acties uit:

  • Er wordt een nieuw knooppunt geïmplementeerd met de meest recente beveiligingsupdates en kubernetes-versie toegepast.
  • Een oud knooppunt wordt afgesnoerd en leeggezogen.
  • Pods worden gepland op het nieuwe knooppunt.
  • Het oude knooppunt wordt verwijderd.

U kunt niet dezelfde Kubernetes-versie blijven gebruiken tijdens een upgrade. U moet een nieuwere versie van Kubernetes opgeven. Als u wilt upgraden naar de nieuwste versie van Kubernetes, kunt u uw AKS-cluster upgraden.

Kured implementeren in een AKS-cluster

Als u de kured DaemonSet wilt implementeren, installeert u de volgende officiële Kured Helm-grafiek. Hiermee maakt u een rol en clusterrol, bindingen en een serviceaccount, waarna de DaemonSet wordt geïmplementeerd met behulp van kured.

# Add the Kured Helm repository
helm repo add kubereboot https://kubereboot.github.io/charts/

# Update your local Helm chart repository cache
helm repo update

# Create a dedicated namespace where you would like to deploy kured into
kubectl create namespace kured

# Install kured in that namespace with Helm 3 (only on Linux nodes, kured is not working on Windows nodes)
helm install my-release kubereboot/kured --namespace kured --set controller.nodeSelector."kubernetes\.io/os"=linux

U kunt ook extra parameters configureren voor kured, zoals integratie met Prometheus of Slack. Zie de kured Helm-grafiek voor meer informatie over configuratieparameters.

Clusterknooppunten bijwerken

Standaard controleren Linux-knooppunten in AKS elke avond op updates. Als u niet wilt wachten, kunt u handmatig een update uitvoeren om te controleren of deze kured correct wordt uitgevoerd. Volg eerst de stappen voor SSH naar een van uw AKS-knooppunten. Zodra u een SSH-verbinding met het Linux-knooppunt hebt, controleert u op updates en past u deze als volgt toe:

sudo apt-get update && sudo apt-get upgrade -y

Als er updates zijn toegepast waarvoor het knooppunt opnieuw moet worden opgestart, wordt een bestand naar /var/run/reboot-required geschreven. Kured controleert op knooppunten waarvoor standaard elke 60 minuten opnieuw moet worden opgestart.

Het herstartproces bewaken en controleren

Wanneer een van de replica's in de DaemonSet heeft gedetecteerd dat een knooppunt opnieuw moet worden opgestart, wordt het knooppunt vergrendeld via de Kubernetes-API. Deze vergrendeling voorkomt dat er meer pods worden gepland op het knooppunt. De vergrendeling geeft ook aan dat slechts één knooppunt tegelijk opnieuw moet worden opgestart. Wanneer het knooppunt is uitgeschakeld, worden actieve pods van het knooppunt verwijderd en wordt het knooppunt opnieuw opgestart.

U kunt de status van de knooppunten controleren met de opdracht kubectl get nodes . In de volgende voorbeelduitvoer ziet u een knooppunt met de status SchedulingDisabled terwijl het knooppunt zich voorbereidt op het herstartproces:

NAME                       STATUS                     ROLES     AGE       VERSION
aks-nodepool1-28993262-0   Ready,SchedulingDisabled   agent     1h        v1.11.7

Zodra het updateproces is voltooid, kunt u de status van de knooppunten weergeven met behulp van de opdracht kubectl get nodes met de --output wide parameter . Met deze uitvoer kunt u een verschil zien in DE KERNEL-VERSIE van de onderliggende knooppunten, zoals wordt weergegeven in de volgende voorbeelduitvoer. De aks-nodepool1-28993262-0 is bijgewerkt in een vorige stap en toont kernelversie 4.15.0-1039-azure. Het knooppunt aks-nodepool1-28993262-1 dat niet is bijgewerkt, toont kernelversie 4.15.0-1037-azure.

NAME                       STATUS    ROLES     AGE       VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
aks-nodepool1-28993262-0   Ready     agent     1h        v1.11.7   10.240.0.4    <none>        Ubuntu 16.04.6 LTS   4.15.0-1039-azure   docker://3.0.4
aks-nodepool1-28993262-1   Ready     agent     1h        v1.11.7   10.240.0.5    <none>        Ubuntu 16.04.6 LTS   4.15.0-1037-azure   docker://3.0.4

Volgende stappen

In dit artikel wordt beschreven hoe kured u Linux-knooppunten automatisch opnieuw kunt opstarten als onderdeel van het beveiligingsupdateproces. Als u wilt upgraden naar de nieuwste versie van Kubernetes, kunt u uw AKS-cluster upgraden.

Zie Een knooppuntgroep upgraden in AKS voor AKS-clusters die gebruikmaken van Windows Server-knooppunten.