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.