Sobes.tech
Middle+

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:

  1. 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.
  2. 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.
  3. 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.
  4. Á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.
  5. 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.