Použití aktualizací zabezpečení a jádra na uzly s Linuxem ve službě Azure Kubernetes Service (AKS)
Kvůli ochraně clusterů se aktualizace zabezpečení automaticky použijí na uzly Linuxu v AKS. Mezi tyto aktualizace patří opravy zabezpečení operačního systému nebo aktualizace jádra. Některé z těchto aktualizací vyžadují restartování uzlu, aby se proces dokončil. AKS tyto linuxové uzly automaticky nerestartuje, aby se dokončil proces aktualizace.
Proces udržování uzlů Windows Serveru v aktualizovaném stavu je trochu jiný. Uzly Windows Serveru nedostávají denní aktualizace. Místo toho provedete upgrade AKS, který nasadí nové uzly s nejnovější základní imagí a opravami Windows Serveru. Clustery AKS, které používají uzly Windows Serveru, najdete v tématu Upgrade fondu uzlů v AKS.
V tomto článku se dozvíte, jak pomocí opensourcového kuredu (KUbernetes REboot Daemon) sledovat uzly Linuxu, které vyžadují restartování, a pak automaticky zpracovat plánování spuštěných podů a restartování uzlů.
Poznámka:
Kured
je opensourcový projekt v Cloud Native Computing Foundation. Nasměrujte problémy na GitHub. Další podporu najdete v #kured kanálu NA CNCF Slack.
Důležité
Opensourcový software je zmíněn v dokumentaci a ukázkách AKS. Software, který nasadíte, je vyloučený ze smluv o úrovni služeb AKS, omezené záruky a podpora Azure. Při používání opensourcových technologií společně s AKS se obraťte na možnosti podpory, které jsou k dispozici v příslušných komunitách a správci projektů, a vytvořte plán.
Například úložiště Ray GitHub popisuje několik platforem, které se liší v době odezvy , účelu a úrovni podpory.
Microsoft zodpovídá za vytváření opensourcových balíčků, které nasazujeme v AKS. Tato odpovědnost zahrnuje úplné vlastnictví sestavení, skenování, podepisování, ověřování a opravy hotfix spolu s kontrolou binárních souborů v imagích kontejneru. Další informace najdete v tématu Správa ohrožení zabezpečení pro AKS a AKS podporují pokrytí.
Než začnete
Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Vysvětlení prostředí aktualizace uzlů AKS
V clusteru AKS vaše uzly Kubernetes běží jako virtuální počítače Azure. Tyto virtuální počítače založené na Linuxu používají image Ubuntu nebo Azure Linuxu s operačním systémem nakonfigurovaným tak, aby každý den automaticky kontrolovala aktualizace. Pokud jsou k dispozici aktualizace zabezpečení nebo jádra, automaticky se stáhnou a nainstalují.
Některé aktualizace zabezpečení, jako jsou aktualizace jádra, vyžadují restartování uzlu k dokončení procesu. Uzel Linuxu, který vyžaduje restartování, vytvoří soubor s názvem /var/run/reboot-required. K tomuto procesu restartování nedojde automaticky.
Ke zpracování restartování uzlů nebo k kured
orchestraci procesu můžete použít vlastní pracovní postupy a procesy. V případě kured
, daemonSet je nasazen, který spouští pod na každém linuxovém uzlu v clusteru. Tyto pody v daemonSet sledují existenci souboru /var/run/reboot-required a pak zahájí proces restartování uzlů.
Upgrady imagí uzlů
Bezobslužné upgrady použijí aktualizace operačního systému linuxového uzlu, ale image používaná k vytváření uzlů pro váš cluster zůstane beze změny. Pokud do clusteru přidáte nový linuxový uzel, použije se k vytvoření uzlu původní image. Tento nový uzel obdrží všechny aktualizace zabezpečení a jádra dostupné během automatické kontroly každý den, ale zůstane nepatchovaný, dokud nebudou všechny kontroly a restartování dokončeny.
Alternativně můžete použít upgrade image uzlu ke kontrole a aktualizaci imagí uzlů používaných clusterem. Další informace o upgradu image uzlu najdete v tématu Upgrade image uzlu Azure Kubernetes Service (AKS).
Upgrady uzlů
V AKS je další proces, který umožňuje upgradovat cluster. Upgrade se obvykle přesune na novější verzi Kubernetes, a ne jenom aktualizace zabezpečení uzlů. Upgrade AKS provádí následující akce:
- Nový uzel se nasadí s nejnovějšími aktualizacemi zabezpečení a použitou verzí Kubernetes.
- Starý uzel je kabelonovaný a vyprázdněný.
- Pody jsou naplánované na novém uzlu.
- Starý uzel se odstraní.
Během události upgradu nemůžete zůstat ve stejné verzi Kubernetes. Musíte zadat novější verzi Kubernetes. Pokud chcete upgradovat na nejnovější verzi Kubernetes, můžete upgradovat cluster AKS.
Nasazení kured v clusteru AKS
Pokud chcete nasadit kured
daemonSet, nainstalujte následující oficiální chart Kured Helm. Tím se vytvoří role a role clusteru, vazby a účet služby a pak nasadí daemonSet pomocí 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
Můžete také nakonfigurovat další parametry, kured
například integraci s Prometheus nebo Slack. Další informace o parametrech konfigurace najdete v grafu Kured Helm.
Aktualizace uzlů clusteru
Ve výchozím nastavení linuxové uzly v AKS kontrolují aktualizace každý večer. Pokud nechcete čekat, můžete ručně provést aktualizaci a zkontrolovat, jestli kured
je spuštěná správně. Nejprve postupujte podle kroků pro SSH k jednomu z uzlů AKS. Jakmile budete mít připojení SSH k uzlu Linuxu, zkontrolujte aktualizace a nainstalujte je následujícím způsobem:
sudo apt-get update && sudo apt-get upgrade -y
Pokud byly použity aktualizace, které vyžadují restartování uzlu, soubor se zapíše do složky /var/run/reboot-required. Kured
kontroluje uzly, které ve výchozím nastavení vyžadují restartování každých 60 minut.
Monitorování a kontrola procesu restartování
Když jedna z replik v daemonSet zjistí, že se vyžaduje restartování uzlu, zámek se umístí do uzlu prostřednictvím rozhraní Kubernetes API. Tento zámek zabraňuje naplánování dalších podů na uzlu. Zámek také označuje, že se současně má restartovat jenom jeden uzel. Když je uzel vypnutý, spuštěné pody se vyprázdní z uzlu a uzel se restartuje.
Stav uzlů můžete monitorovat pomocí příkazu kubectl get nodes . Následující příklad výstupu ukazuje uzel se stavem SchedulingDisabled , protože uzel se připravuje na proces restartování:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-28993262-0 Ready,SchedulingDisabled agent 1h v1.11.7
Po dokončení procesu aktualizace můžete pomocí příkazu kubectl get nodes s parametrem --output wide
zobrazit stav uzlů. Tento výstup umožňuje zobrazit rozdíl ve verzi JÁDRA základních uzlů, jak je znázorněno v následujícím příkladu výstupu. Aks-nodepool1-28993262-0 byl aktualizován v předchozím kroku a zobrazuje jádro verze 4.15.0-1039-azure. Uzel aks-nodepool1-28993262-1, který nebyl aktualizován, zobrazuje jádro verze 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
Další kroky
Tento článek podrobně popisuje, kured
jak restartovat uzly Linuxu automaticky v rámci procesu aktualizace zabezpečení. Pokud chcete upgradovat na nejnovější verzi Kubernetes, můžete upgradovat cluster AKS.
Clustery AKS, které používají uzly Windows Serveru, najdete v tématu Upgrade fondu uzlů v AKS.
Podrobné informace o osvědčených postupech upgradu a dalších aspektech najdete v pokynech k opravám a upgradu AKS.
Azure Kubernetes Service