Sobes.tech
Middle

Erişilebilirlik alanlarında podları nasıl eşit şekilde dağıtabilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Pod veya dağıtım manifestinde topologySpreadConstraints kullanın.

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 # Dağıtım alanını belirleyen anahtar
        whenUnsatisfiable: DoNotSchedule # Dağıtım mümkün değilse, pod planlanmaz
        labelSelector:
          matchLabels:
            app: my-app # Bu etiketle eşleşen podlara uygulanır

maxSkew herhangi bir topoloji alanında (bölge) ortalamayı aşan maksimum pod sayısını belirler. Bu durumda, maxSkew: 1 herhangi iki bölge arasındaki pod sayısı farkının 1'i geçmemesini sağlar.

topologyKey: topology.kubernetes.io/zone nodların bölge etiketlerine göre dağıtım yapılacağını belirtir.

whenUnsatisfiable: DoNotSchedule planlayıcı bu kısıtlamayı karşılayamıyorsa, pod planlanmaz. Alternatif olarak ScheduleAnyway kullanılırsa, pod planlanmaya çalışılır, ancak kısıt ihlal edilebilir.

labelSelector bu kısıtlamanın uygulandığı podları tanımlar.

Üç bölgeye (örneğin, us-east-1a, us-east-1b, us-east-1c) 9 replika ile eşit dağılım yapmak için, her bölgeye 3 pod düşer.

Bu dağılım, uygulamanın arızaya dayanıklılığını artırır, çünkü bir bölgenin arızası, hizmetin tamamen erişilemez hale gelmesine neden olmaz.