Stosowanie aktualizacji zabezpieczeń i jądra do węzłów systemu Linux w usłudze Azure Kubernetes Service (AKS)

Aby chronić klastry, aktualizacje zabezpieczeń są automatycznie stosowane do węzłów systemu Linux w usłudze AKS. Te aktualizacje obejmują poprawki zabezpieczeń systemu operacyjnego lub aktualizacje jądra. Niektóre z tych aktualizacji wymagają ponownego uruchomienia węzła w celu ukończenia procesu. Usługa AKS nie uruchamia automatycznie tych węzłów systemu Linux w celu ukończenia procesu aktualizacji.

Proces aktualizowania węzłów systemu Windows Server jest nieco inny. Węzły systemu Windows Server nie otrzymują codziennych aktualizacji. Zamiast tego należy przeprowadzić uaktualnienie usługi AKS, które wdraża nowe węzły przy użyciu najnowszego podstawowego obrazu serwera okien i poprawek. W przypadku klastrów usługi AKS korzystających z węzłów systemu Windows Server zobacz Uaktualnianie puli węzłów w usłudze AKS.

W tym artykule pokazano, jak używać kured typu open source (KUbernetes REboot Demon) do watch dla węzłów systemu Linux, które wymagają ponownego uruchomienia, a następnie automatycznie obsługiwać ponowne uruchamianie zasobników i proces ponownego uruchamiania węzła.

Uwaga

Kured jest projektem typu open source w cloud Native Computing Foundation. Prosimy o bezpośrednie problemy z kured GitHub. Dodatkową pomoc techniczną można znaleźć w kanale #kured na platformie CNCF Slack.

Zanim rozpoczniesz

Potrzebujesz interfejsu wiersza polecenia platformy Azure w wersji 2.0.59 lub nowszej, zainstalowanej i skonfigurowanej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Omówienie środowiska aktualizacji węzła usługi AKS

W klastrze usługi AKS węzły Kubernetes działają jako maszyny wirtualne platformy Azure. Te maszyny wirtualne oparte na systemie Linux używają obrazu systemu Ubuntu lub Azure Linux z systemem operacyjnym skonfigurowanym do automatycznego sprawdzania dostępności aktualizacji każdego dnia. Jeśli są dostępne aktualizacje zabezpieczeń lub jądra, są automatycznie pobierane i instalowane.

Proces aktualizacji i ponownego uruchamiania węzła usługi AKS z kured

Niektóre aktualizacje zabezpieczeń, takie jak aktualizacje jądra, wymagają ponownego uruchomienia węzła w celu sfinalizowania procesu. Węzeł systemu Linux, który wymaga ponownego uruchomienia, tworzy plik o nazwie /var/run/reboot-required. Ten proces ponownego rozruchu nie następuje automatycznie.

Możesz użyć własnych przepływów pracy i procesów do obsługi ponownych rozruchów węzłów lub użyć kured ich do organizowania procesu. W programie kuredwdrożono zestaw DaemonSet , który uruchamia zasobnik w każdym węźle systemu Linux w klastrze. Te zasobniki w zestawie DaemonSet watch istnienia pliku /var/run/reboot-required, a następnie zainicjuj proces ponownego uruchomienia węzłów.

Uaktualnienia obrazu węzła

Nienadzorowane uaktualnienia dotyczą aktualizacji systemu operacyjnego węzła systemu Linux, ale obraz używany do tworzenia węzłów dla klastra pozostaje niezmieniony. Jeśli nowy węzeł systemu Linux zostanie dodany do klastra, oryginalny obraz zostanie użyty do utworzenia węzła. Ten nowy węzeł otrzymuje wszystkie aktualizacje zabezpieczeń i jądra dostępne podczas automatycznego sprawdzania każdego dnia, ale pozostaje niezatwierdzony do momentu ukończenia wszystkich kontroli i ponownych uruchomień.

Alternatywnie możesz użyć uaktualnienia obrazu węzła, aby sprawdzić i zaktualizować obrazy węzłów używane przez klaster. Aby uzyskać więcej informacji na temat uaktualniania obrazu węzła, zobacz uaktualnianie obrazu węzła Azure Kubernetes Service (AKS).

Uaktualnienia węzłów

Istnieje inny proces w usłudze AKS, który umożliwia uaktualnienie klastra. Uaktualnienie to zazwyczaj przejście do nowszej wersji rozwiązania Kubernetes, a nie tylko zastosowanie aktualizacji zabezpieczeń węzła. Uaktualnienie usługi AKS wykonuje następujące akcje:

  • Nowy węzeł jest wdrażany przy użyciu najnowszych aktualizacji zabezpieczeń i zastosowanej wersji rozwiązania Kubernetes.
  • Stary węzeł jest odprowadzany i opróżniany.
  • Zasobniki są zaplanowane w nowym węźle.
  • Stary węzeł jest usuwany.

Nie można pozostać w tej samej wersji platformy Kubernetes podczas zdarzenia uaktualnienia. Należy określić nowszą wersję platformy Kubernetes. Aby przeprowadzić uaktualnienie do najnowszej wersji rozwiązania Kubernetes, możesz uaktualnić klaster usługi AKS.

Wdrażanie kured w klastrze usługi AKS

Aby wdrożyć zestaw kured DaemonSet, zainstaluj następujący oficjalny wykres Kured Helm. Spowoduje to utworzenie roli i roli klastra, powiązań i konta usługi, a następnie wdrożenie demonaSet przy użyciu polecenia 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

Można również skonfigurować dodatkowe parametry dla programu kured, takie jak integracja z usługą Prometheus lub Slack. Aby uzyskać więcej informacji na temat parametrów konfiguracji, zobacz wykres programu Helm kured.

Aktualizowanie węzłów klastra

Domyślnie węzły systemu Linux w usłudze AKS sprawdzają dostępność aktualizacji każdego wieczoru. Jeśli nie chcesz czekać, możesz ręcznie wykonać aktualizację, aby sprawdzić, czy kured działa poprawnie. Najpierw wykonaj kroki SSH do jednego z węzłów usługi AKS. Po nawiązaniu połączenia SSH z węzłem systemu Linux sprawdź aktualizacje i zastosuj je w następujący sposób:

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

Jeśli zastosowano aktualizacje wymagające ponownego uruchomienia węzła, plik jest zapisywany w pliku /var/run/reboot-required. Kured sprawdza, czy węzły wymagają ponownego uruchomienia co 60 minut domyślnie.

Monitorowanie i przeglądanie procesu ponownego uruchamiania

Gdy jedna z replik w zestawie DaemonSet wykryła, że wymagany jest ponowny rozruch węzła, blokada jest umieszczana w węźle za pośrednictwem interfejsu API Kubernetes. Ta blokada uniemożliwia zaplanowanie większej liczby zasobników w węźle. Blokada wskazuje również, że w danym momencie należy ponownie uruchomić tylko jeden węzeł. Po wyłączeniu węzła uruchomione zasobniki są opróżniane z węzła, a węzeł jest ponownie uruchamiany.

Stan węzłów można monitorować za pomocą polecenia kubectl get nodes . Poniższe przykładowe dane wyjściowe przedstawiają węzeł ze stanem SchedulingDisabled , gdy węzeł przygotowuje się do procesu ponownego rozruchu:

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

Po zakończeniu procesu aktualizacji można wyświetlić stan węzłów przy użyciu polecenia kubectl get nodes z parametrem --output wide . Te dane wyjściowe pozwalają zobaczyć różnicę w wersji JĄDRA węzłów bazowych, jak pokazano w poniższych przykładowych danych wyjściowych. Pula aks-nodepool1-28993262-0 została zaktualizowana w poprzednim kroku i pokazuje jądro w wersji 4.15.0-1039-azure. Węzeł aks-nodepool1-28993262-1 , który nie został zaktualizowany, pokazuje jądro w wersji 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

Następne kroki

W tym artykule opisano sposób automatycznego kured ponownego uruchamiania węzłów systemu Linux w ramach procesu aktualizacji zabezpieczeń. Aby przeprowadzić uaktualnienie do najnowszej wersji rozwiązania Kubernetes, możesz uaktualnić klaster usługi AKS.

W przypadku klastrów usługi AKS korzystających z węzłów systemu Windows Server zobacz Uaktualnianie puli węzłów w usłudze AKS.