Beveiligingsupdates en kernelupdates toepassen op Linux-knooppunten in Azure Kubernetes Service (AKS)
Beveiligingsupdates worden automatisch toegepast op Linux-knooppunten in AKS om uw clusters te beveiligen. Deze updates omvatten besturingssysteembeveiligingsoplossingen of kernelupdates. Voor sommige van deze updates moet een 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 voor het up-to-date houden van Windows Server-knooppunten is iets anders. Windows Server-knooppunten ontvangen geen dagelijkse updates. In plaats daarvan voert u een AKS-upgrade uit waarmee nieuwe knooppunten worden geïmplementeerd met de meest recente installatiekopieën en patches voor Windows Server. 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) kunt gebruiken om te kijken naar Linux-knooppunten waarvoor opnieuw opstarten is vereist, en vervolgens automatisch het opnieuw plannen van actieve pods en het opnieuw opstarten van knooppunten afhandelt.
Notitie
Kured
is een opensource-project in de Cloud Native Computing Foundation. Directe problemen met de kured GitHub. Aanvullende ondersteuning vindt u in het #kured kanaal op CNCF Slack.
Belangrijk
Opensource-software wordt vermeld in AKS-documentatie en -voorbeelden. Software die u implementeert, is uitgesloten van AKS-serviceovereenkomsten, beperkte garantie en ondersteuning voor Azure. Wanneer u opensource-technologie naast AKS gebruikt, raadpleegt u de beschikbare ondersteuningsopties van de respectieve community's en projectonderhouders om een plan te ontwikkelen.
De Ray GitHub-opslagplaats beschrijft bijvoorbeeld verschillende platforms die variëren in reactietijd, doel en ondersteuningsniveau.
Microsoft neemt de verantwoordelijkheid voor het bouwen van de opensource-pakketten die we implementeren op AKS. Deze verantwoordelijkheid omvat het volledige eigendom van het build-, scan-, teken-, validatie- en hotfixproces, samen met controle over de binaire bestanden in containerinstallatiekopieën. Zie Beveiligingsbeheer voor AKS- en AKS-ondersteuningsdekking voor meer informatie.
Voordat u begint
U moet Azure CLI versie 2.0.59 of hoger hebben geïnstalleerd en geconfigureerd. Voer az --version
uit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
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 op Linux gebaseerde VM's maken gebruik van een Ubuntu- of Azure Linux-installatiekopie, waarbij het besturingssysteem is geconfigureerd om elke dag automatisch op updates te controleren. Als er beveiligingsupdates of kernelupdates beschikbaar zijn, worden deze automatisch gedownload en geïnstalleerd.
Voor sommige beveiligingsupdates, zoals kernelupdates, moet een knooppunt opnieuw worden opgestart om het proces te voltooien. Een Linux-knooppunt waarvoor opnieuw opstarten is vereist, maakt een bestand met de naam /var/run/reboot-required. Dit proces voor opnieuw opstarten wordt niet automatisch uitgevoerd.
U kunt uw eigen werkstromen en processen gebruiken om het opnieuw opstarten van knooppunten af te handelen of kured
om het proces te organiseren. Hiermee kured
wordt een DaemonSet geïmplementeerd die een pod uitvoert op elk Linux-knooppunt in het cluster. Deze pods in de DaemonSet-watch voor het bestaan van het vereiste bestand /var/run/reboot en starten 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 aan uw cluster wordt toegevoegd, wordt de oorspronkelijke installatiekopieën gebruikt om het knooppunt te maken. Dit nieuwe knooppunt ontvangt alle beveiligings- en kernelupdates die elke dag beschikbaar zijn tijdens de automatische controle, maar blijft niet gepatcht totdat alle controles en opnieuw opstarten zijn voltooid.
U kunt ook de upgrade van de knooppuntinstallatiekopieën gebruiken om te controleren op installatiekopieën van knooppunten die door uw cluster worden gebruikt en bij te werken. Zie voor meer informatie over upgrade van knooppuntinstallatiekopieën azure Kubernetes Service (AKS)-knooppuntinstallatiekopieën.
Knooppuntupgrades
Er is nog een proces in AKS waarmee u een cluster kunt upgraden . Een upgrade is doorgaans 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 nieuwste beveiligingsupdates en de Kubernetes-versie is toegepast.
- Een oud knooppunt is vastgesnoerd 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-gebeurtenis. U moet een nieuwere versie van Kubernetes opgeven. Als u een upgrade wilt uitvoeren naar de nieuwste versie van Kubernetes, kunt u uw AKS-cluster upgraden.
Kured implementeren in een AKS-cluster
Installeer de volgende officiële Kured Helm-grafiek om de kured
DaemonSet te implementeren. Hiermee maakt u een rol en clusterrol, bindingen en een serviceaccount en implementeert u vervolgens de DaemonSet 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 updates zijn toegepast waarvoor een knooppunt opnieuw moet worden opgestart, wordt een bestand geschreven naar /var/run/reboot vereist. Kured
controleert standaard op knooppunten waarvoor elke 60 minuten opnieuw moet worden opgestart.
Proces voor opnieuw opstarten bewaken en controleren
Wanneer een van de replica's in de DaemonSet detecteert dat opnieuw opstarten van een knooppunt is vereist, wordt er een vergrendeling op het knooppunt geplaatst via de Kubernetes-API. Met deze vergrendeling voorkomt u dat meer pods worden gepland op het knooppunt. De vergrendeling geeft ook aan dat slechts één knooppunt tegelijk opnieuw moet worden opgestart. Als 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 behulp van de opdracht kubectl get-knooppunten . In de volgende voorbeelduitvoer ziet u een knooppunt met de status SchedulingDisabled , omdat 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 ziet u een verschil in KERNEL-VERSION van de onderliggende knooppunten, zoals wordt weergegeven in de volgende voorbeelduitvoer. De aks-nodepool1-28993262-0 is in een vorige stap bijgewerkt en toont kernelversie 4.15.0-1039-azure. Het knooppunt aks-nodepool1-28993262-1 die 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 opstart als onderdeel van het beveiligingsupdateproces. Als u een upgrade wilt uitvoeren 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.
Zie AKS-patch- en upgraderichtlijnen voor een gedetailleerde bespreking van best practices en andere overwegingen voor upgrades.
Azure Kubernetes Service