Sobes.tech
Middle

Kuidas jaotada podid ühtlaselt kättesaadavuse tsoonides?

sobes.tech AI

Vastus AI-lt

Kasutage topologySpreadConstraints podi või juurutusmanifestis.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 9
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-app:latest
      topologySpreadConstraints:
      - maxSkew: 1
        topologyKey: topology.kubernetes.io/zone # Võti, mis määrab levitamise ala
        whenUnsatisfiable: DoNotSchedule # Kui jaotamine on võimatu, ei planeerita poodi
        labelSelector:
          matchLabels:
            app: my-app # Piirang kehtib nende poodide suhtes, millel on see silt

maxSkew määrab maksimaalse lubatud poodide arvu ületamise keskmisest igas topoloogilises domeenis (sanas). Antud juhul tähendab maxSkew: 1, et zonade vahel ei ületa podide arv erinevus 1.

topologyKey: topology.kubernetes.io/zone näitab, et jaotamine toimub zoni siltide alusel.

whenUnsatisfiable: DoNotSchedule tähendab, et kui planeerija ei suuda täita topologySpreadConstraints piirangut, ei planeerita poodi. Teine variant on ScheduleAnyway, mis püüab poodi planeerida, kuid võib piirangut rikkuda.

labelSelector määrab podide kogumi, millele see piirang kehtib.

Tasakaalustatud podide jaotamine kolme zone'i vahel (näiteks us-east-1a, us-east-1b, us-east-1c) 9 replikaga tagab, et igale zone'ile määratakse 3 podi.

Selline jaotus suurendab rakenduse vastupidavust, kuna ühe zone'i tõrge ei põhjusta teenuse täielikku kättesaamatust.