Biztonsági és kernelfrissítések alkalmazása Linux-csomópontokra Azure Kubernetes Service (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. Ezen frissítések némelyike a folyamat befejezéséhez csomópont-újraindítást igényel. Az AKS nem indítja újra automatikusan ezeket a Linux-csomópontokat a frissítési folyamat befejezéséhez.
A Windows kiszolgálócsomópontok naprakészen tartásának folyamata kissé eltérő. Windows kiszolgáló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. A Windows kiszolgálócsomópontokat használó AKS-fürtök esetében 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 figyelésére, majd automatikusan kezelheti a futó podok és csomópontok újraindítási folyamatának átütemezését.
Megjegyzés
Kured A Weaveworks nyílt forráskódú projektje. Kérjük, irányítsa a problémákat a kured GitHub. További támogatás a #weave-community Slack-csatornában található.
Előkészületek
Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, tekintse meg az AKS rövid útmutatót az Azure CLI használatával vagy a Azure Portal használatával.
Emellett telepíteni és konfigurálni kell az Azure CLI 2.0.59-es vagy újabb verzióját is. 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ürtön a Kubernetes-csomópontok Azure-beli virtuális gépekként (VM-ek) futnak. Ezek a Linux-alapú virtuális gépek Ubuntu-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.

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ópontok újraindításának kezeléséhez, vagy a kured folyamat vezényléséhez. Ezzel kuredegy daemonSet lesz üzembe helyezve, amely a fürt minden Linux-csomópontján futtat egy podot. Ezek a podok a DaemonSetben figyelik a /var/run/reboot-required fájl meglétét, majd kezdeményeznek egy folyamatot a csomópontok újraindításához.
Csomópontrendszerképek 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 lemezké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 lesz elérhető.
Azt is megteheti, hogy a csomópont lemezképének frissítésével ellenőrzi és frissíti a fürt által használt csomópontrendszerképeket. A csomópontok lemezképének frissítéséről a Azure Kubernetes Service (AKS) csomópontrendszerképének frissítését ismertető cikkben talál további információt.
Csomópontfrissítések
Az AKS-ben van egy további folyamat, amely lehetővé teszi a fürtök frissítését . A frissítés általában a Kubernetes újabb verziójára való áttérésre vonatkozik, nem csak a csomópont biztonsági frissítéseinek alkalmazására. Az AKS-frissítés a következő műveleteket hajtja végre:
- A rendszer új csomópontot helyez üzembe a legújabb biztonsági frissítésekkel és a Kubernetes-verzióval.
- Egy régi csomópontot kordonosítottak és ürítenek.
- 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 Démonkészletet a használatával kured.
# Add the Kured Helm repository
helm repo add kured https://weaveworks.github.io/kured
# 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 kured kured/kured --namespace kured --set nodeSelector."kubernetes\.io/os"=linux
További paramétereket kuredis konfigurálhat, például a Prometheussal vagy a Slacktel való integrációt. A további konfigurációs paraméterekkel kapcsolatos további információkért tekintse meg a kured Helm-diagramot.
Fürtcsomópontok frissítése
Alapértelmezés szerint az AKS Linux-csomópontjai minden este ellenőrzik a frissítéseket. 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, ellenőrizze a 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 fájlt a /var/run/reboot-required fájlba írja. Kured alapértelmezés szerint 60 percenként újraindítá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 további podok legyenek ü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ülnek 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 további 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 jeleníti meg. A nem frissített node aks-nodepool1-28993262-1 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.
A Windows kiszolgálócsomópontokat használó AKS-fürtök esetében lásd: Csomópontkészlet frissítése az AKS-ben.