Sobes.tech
Middle

Mi történik a Deployment entitás létrehozásakor a rendszerben?

sobes.tech MI

Válasz az MI-től

Kubernetesben Deployment létrehozásakor a következő történik:

  1. A Deployment vezérlő észleli egy új Deployment entitás megjelenését.
  2. A Deployment definícióját megkapva a vezérlő létrehozza vagy frissíti a megfelelő ReplicaSet-et. A ReplicaSet felelős a kívánt számú pod replikák fenntartásáért.
  3. Ezután a ReplicaSet létrehozza a sablonban megadott podokat. Ez a pod sablon a Deployment specifikációjából (spec.template) származik. Ez a sablon határozza meg a konténer képét, portokat, kötet csatlakozásokat és más pod paramétereket.
  4. A podokat a ütemezőhöz (Scheduler) küldik.
  5. Az ütemező kiválasztja a megfelelő csomópontokat a klaszteren belül a podok futtatásához, figyelembe véve a korlátozásokat (erőforrások, affinity/anti-affinity stb.).
  6. A kiválasztott csomópontokon lévő kubelet instrukciókat kap a kube-apiserver-től, és elindítja a konténereket a podokban.
  7. A kubelet jelentést tesz a podok állapotáról vissza a kube-apiserver-hez.
  8. A Deployment és ReplicaSet vezérlők folyamatosan figyelik a podok állapotát, biztosítva a kívánt replikaszámot, és kezelik a hibákat vagy változásokat a Deployment-ben.

Deployment specifikáció példája:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment # A deployment neve
spec:
  replicas: 3 # A kívánt pod replikák száma
  selector:
    matchLabels:
      app: nginx # Kiválasztó a podok megtalálásához, amelyeket ez a deployment kezel
  template:
    metadata:
      labels:
        app: nginx # Címkék a létrehozott podokhoz
    spec:
      containers:
      - name: nginx # Konténer neve
        image: nginx:1.14.2 # Konténer kép
        ports:
        - containerPort: 80 # Konténer port