Biztonsági és kernelfrissítések alkalmazása Linux-csomópontokra az Azure Kubernetes Service -ban (AKS)

A fürtök védelme érdekében a rendszer automatikusan alkalmazza a biztonsági frissítéseket az AKS Linux-csomópontjaira. Ezek a frissítések közé tartoznak az operációs rendszer biztonsági javításai vagy a kernelfrissítések. A frissítések némelyike a csomópont újraindítását igényli a folyamat befejezéséhez. Az AKS nem indítja újra automatikusan ezeket a Linux-csomópontokat a frissítési folyamat befejezéséhez.

A Windows Server-csomópontok naprakészen tartásának folyamata kissé eltérő. A Windows Server-csomópontok nem kapnak napi frissítéseket. Ehelyett egy AKS-frissítést kell végrehajtania, amely új csomópontokat helyez üzembe a legújabb alap Windows Server-rendszerképpel és javításokkal. Windows Server-csomópontokat használó AKS-fürtök esetén lásd: Csomópontkészlet frissítése az AKS-ben.

Ez a cikk bemutatja, hogyan használható a nyílt forráskódú kured (KUbernetes REboot Daemon) az újraindítást igénylő Linux-csomópontok watch, majd automatikusan kezelheti a futó podok és csomópontok újraindítási folyamatának átütemezését.

Megjegyzés

Kured egy nyílt forráskódú projekt a Cloud Native Computing Foundationben. Kérjük, irányítsa a problémákat a kured GitHubra. További támogatás a CNCF Slack #kured csatornáján található.

Előkészületek

Telepítenie és konfigurálnia kell az Azure CLI 2.0.59-es vagy újabb verzióját. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

Az AKS-csomópont frissítési felületének ismertetése

Egy AKS-fürtben a Kubernetes-csomópontok Azure-beli virtuális gépekként futnak. Ezek a Linux-alapú virtuális gépek Ubuntu- vagy Azure Linux-rendszerképet használnak, és az operációs rendszer úgy van konfigurálva, hogy minden nap automatikusan ellenőrizze a frissítéseket. Ha biztonsági vagy kernelfrissítések érhetők el, a rendszer automatikusan letölti és telepíti őket.

Az AKS-csomópont frissítési és újraindítási folyamata kured használatával

Egyes biztonsági frissítések, például a kernelfrissítések, csomópont-újraindítást igényelnek a folyamat véglegesítéséhez. Az újraindítást igénylő Linux-csomópont létrehoz egy /var/run/reboot-required nevű fájlt. Ez az újraindítási folyamat nem történik meg automatikusan.

Saját munkafolyamatokat és folyamatokat használhat a csomópont-újraindítások kezeléséhez, vagy a folyamat kured vezényléséhez. A használatával kuredegy DaemonSet lesz üzembe helyezve, amely podot futtat a fürt minden Linux-csomópontján. Ezek a podok a DaemonSetben watch a /var/run/reboot-required fájl meglétéhez, majd kezdeményeznek egy folyamatot a csomópontok újraindításához.

Csomópontrendszerkép frissítései

A felügyelet nélküli frissítések frissítéseket alkalmaznak a Linux-csomópont operációs rendszerére, de a fürt csomópontjainak létrehozásához használt rendszerkép változatlan marad. Ha új Linux-csomópontot ad hozzá a fürthöz, a rendszer az eredeti rendszerképet használja a csomópont létrehozásához. Ez az új csomópont minden nap megkapja az automatikus ellenőrzés során elérhető összes biztonsági és kernelfrissítést, de az összes ellenőrzés és újraindítás befejeződéséig nem készül el.

Másik lehetőségként használhatja a csomópontrendszerképek frissítését a fürt által használt csomópontrendszerképek kereséséhez és frissítéséhez. A csomópontrendszerképek frissítéséről további információt a Azure Kubernetes Service (AKS) csomópontrendszerképének frissítését ismertető cikkben talál.

Csomópontfrissítések

Az AKS-ben egy másik folyamat is lehetővé teszi a fürt frissítését . A frissítés általában a Kubernetes egy újabb verziójára való áttérés, nem csak a csomópont biztonsági frissítéseinek alkalmazása. Az AKS-frissítés a következő műveleteket hajtja végre:

  • A rendszer egy új csomópontot helyez üzembe a legújabb biztonsági frissítésekkel és a Kubernetes-verzióval.
  • Egy régi csomópontot kordonolnak és ürítenek ki.
  • A podok az új csomóponton vannak ütemezve.
  • A régi csomópont törlődik.

Frissítési esemény közben nem maradhat ugyanazon a Kubernetes-verzión. Meg kell adnia a Kubernetes újabb verzióját. A Kubernetes legújabb verziójára való frissítéshez frissítheti az AKS-fürtöt.

Kured üzembe helyezése AKS-fürtön

A kured DaemonSet üzembe helyezéséhez telepítse a következő hivatalos Kured Helm-diagramot. Ez létrehoz egy szerepkör- és fürtszerepkört, kötéseket és egy szolgáltatásfiókot, majd üzembe helyezi a DaemonSetet a használatával 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

További paramétereket is konfigurálhat a számára kured, például a Prometheussal vagy a Slacktel való integrációt. A konfigurációs paraméterekkel kapcsolatos további információkért lásd a kured Helm-diagramot.

Fürtcsomópontok frissítése

Alapértelmezés szerint az AKS Linux-csomópontjai minden este frissítéseket keresnek. Ha nem szeretne várni, manuálisan is elvégezhet egy frissítést a kured megfelelő futás ellenőrzéséhez. Először kövesse az SSH-hoz tartozó lépéseket az egyik AKS-csomóponton. Miután SSH-kapcsolattal rendelkezik a Linux-csomóponttal, keressen frissítéseket, és alkalmazza őket az alábbiak szerint:

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

Ha csomópont-újraindítást igénylő frissítéseket alkalmaztak, a rendszer a /var/run/reboot-required fájlba ír egy fájlt. Kured alapértelmezés szerint 60 percenként újraindulást igénylő csomópontokat keres.

Az újraindítási folyamat monitorozása és áttekintése

Ha a DaemonSet egyik replikája azt észlelte, hogy a csomópont újraindítására van szükség, a Kubernetes API-n keresztül zárolás kerül a csomópontra. Ez a zárolás megakadályozza, hogy több pod legyen ütemezve a csomóponton. A zárolás azt is jelzi, hogy egyszerre csak egy csomópontot kell újraindítani. A csomópont kordonozása után a futó podok kiürültek a csomópontból, és a csomópont újraindul.

A csomópontok állapotát a kubectl get nodes paranccsal figyelheti. Az alábbi példakimenet egy SchedulingDisabled állapotú csomópontot mutat be, amikor a csomópont felkészül az újraindítási folyamatra:

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

A frissítési folyamat befejezése után megtekintheti a csomópontok állapotát a kubectl get nodes paranccsal a --output wide paraméterrel. Ez a kimenet lehetővé teszi a mögöttes csomópontok KERNEL-VERSION verziójának eltérését, ahogyan az alábbi példakimenetben látható. Az aks-nodepool1-28993262-0 egy előző lépésben frissült, és a 4.15.0-1039-azure kernelverziót mutatja. A nem frissített aks-nodepool1-28993262-1 csomópont a 4.15.0-1037-azure kernelverziót jeleníti meg.

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

Következő lépések

Ez a cikk részletesen bemutatja, hogyan lehet automatikusan kured újraindítani a Linux-csomópontokat a biztonsági frissítési folyamat részeként. A Kubernetes legújabb verziójára való frissítéshez frissítheti az AKS-fürtöt.

Windows Server-csomópontokat használó AKS-fürtök esetén lásd: Csomópontkészlet frissítése az AKS-ben.