Sobes.tech
Middle

Əlçatanlıq zonalarında podları necə bərabər paylamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Pod və ya yerləşdirmə manifestində topologySpreadConstraints istifadə edin.

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 # Paylanma açarını təyin edir (zonanın bölgüsü)
        whenUnsatisfiable: DoNotSchedule # Əgər paylanma mümkün deyilsə, pod planlanmayacaq
        labelSelector:
          matchLabels:
            app: my-app # Bu etiketlə podlara tətbiq olunur

maxSkew hər hansı bir topologiya domenində (zona) orta göstəricidən çox olan maksimum pod sayını müəyyən edir. Bu halda, maxSkew: 1 hər iki zonanın pod sayı fərqinin 1-dən çox olmamasını təmin edir.

topologyKey: topology.kubernetes.io/zone nodların zonalar etiketlərinə əsasən paylanma edilməsini göstərir.

whenUnsatisfiable: DoNotSchedule planlayıcı topologySpreadConstraints məhdudiyyətini təmin edə bilməzsə, pod planlanmayacaq. Alternativ olaraq ScheduleAnyway istifadə edilə bilər, bu halda pod planlanmağa çalışılır, lakin məhdudiyyət pozula bilər.

labelSelector bu məhdudiyyətin tətbiq olunduğu podların toplusunu müəyyən edir.

Üç zona (məsələn, us-east-1a, us-east-1b, us-east-1c) ilə 9 replikalı bərabər paylanma üçün, hər zona 3 pod alacaq.

Bu paylanma tətbiqin fasiləsizliyini artırır, çünki bir zonanın uğursuzluğu xidmətin tamamilə əlçatmaz olmasına səbəb olmur.