Mi az operátor a Kubernetesben, és milyen mintát használnak?
sobes.tech MI
Válasz az MI-től
A kezelők olyan módszerek a Kubernetesben, az alkalmazások csomagolására, telepítésére és kezelésére. Bővítik a Kubernetes API funkcionalitását, és specifikus vezérlőként működnek bizonyos szoftverekhez.
A kezelők által használt fő minta a Controller pattern. A Kubernetes-ben a vezérlő folyamatosan figyeli a klaszter aktuális állapotát, és összehasonlítja a kívánt állapottal. Ha az állapotok eltérnek, a vezérlő végrehajtja a szükséges lépéseket az aktuális állapot kívánt állapotra való hozatalához.
A kezelők automatizálják azokat az operatív feladatokat, amelyeket általában emberek végeznek: biztonsági mentések, frissítések, skálázás, az adott alkalmazások és függőségeik életciklusának kezelése. Ezt az eseményekre reagálva és a Kubernetes API-t kibővítő egyedi erőforrásokat (Custom Resources - CR) és egyedi erőforrás-definíciókat (Custom Resource Definitions - CRD) manipulálva teszik.
Működési elv:
- Custom Resource (CRD) meghatározása: Egy új erőforrás típus kerül definiálásra az alkalmazás vagy szolgáltatás reprezentálására.
- Custom Resource (CR) létrehozása: A felhasználó példányt hoz létre ebből az új erőforrásból, leírva az alkalmazás kívánt állapotát.
- A kezelő mint vezérlő: A kezelő folyamatosan figyeli az ilyen típusú CR létrehozását, frissítését és törlését.
- Állapotok összehasonlítása: A kezelő összehasonlítja az alkalmazás aktuális állapotát (pl. futó podok száma, szoftververzió, konfiguráció) a CR-ben leírt kívánt állapottal.
- Műveletek végrehajtása: Ha az állapotok eltérnek, a kezelő végrehajtja a szükséges lépéseket a Kubernetes szabványos API-ján keresztül (Deployment, StatefulSet, Service, PVC létrehozása/frissítése/törlése), hogy az aktuális állapotot a kívánt állapotra hozza.
Példa: Egy PostgreSQL adatbázis kezelője CR-t biztosíthat PostgresqlDatabase néven. A felhasználó ezt a CR-t a kívánt verzióval, tárolómérettel és replikációs beállításokkal hozza létre. A PostgreSQL kezelője figyeli ezt a CR-t, létrehozza a szükséges StatefulSet-eket, PersistentVolumeClaim-eket, Service-eket, és konfigurálja a replikációt, biztosítva a kívánt állapot elérését és fenntartását.
# Egy hipotetikus PostgreSQL kezelő speciális erőforrásának példája
apiVersion: postgresql.database.example.com/v1
kind: PostgresqlDatabase
metadata:
name: my-prod-db
spec:
version: "14.5"
storageSize: "100Gi"
replicas: 3
backup:
enabled: true
schedule: "0 2 * * *"
Így a kezelők mély operatív ismereteket foglalnak össze egy adott alkalmazásról kód formájában, automatizálva a rutinszerű feladatokat, és növelve a telepítések megbízhatóságát és skálázhatóságát.