Sobes.tech
Middle

როგორ გავანაწილოთ პოდები ხელმისაწვდომობის ზონებში თანაბრად?

sobes.tech AI

პასუხი AI-სგან

გამოიყენეთ topologySpreadConstraints პოდზე ან განლაგების მანიაფსტში.

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 # გასაღები, რომელიც განსაზღვრავს გავრცელების ზონას
        whenUnsatisfiable: DoNotSchedule # თუ განაწილება შეუძლებელია, პოდი არ განთავსდება
        labelSelector:
          matchLabels:
            app: my-app # შეზღუდვა ვრცელდება ამ ლეიბლზე მიცემულ პოდებზე

maxSkew განსაზღვრავს მაქსიმალურ რაოდენობას პოდების, რომელიც ნებადართულია გადააჭარბოს საშუალო რაოდენობას ნებისმიერ ტოპოლოგიურ დომენში (ზონაში). ამ შემთხვევაში, maxSkew: 1 ნიშნავს, რომ ზონებს შორის პოდების რაოდენობის სხვაობა არ აღემატება 1.

topologyKey: topology.kubernetes.io/zone მიუთითებს, რომ განაწილება უნდა განხორციელდეს ზონების ნიშნულების მიხედვით.

whenUnsatisfiable: DoNotSchedule ნიშნავს, რომ თუ განაწილების შემსრულებელი ვერ შეძლებს ამ შეზღუდვის დაკმაყოფილებას, პოდი არ განთავსდება. სხვა ვარიანტია ScheduleAnyway, რომელიც ცდილობს პოდის განთავსებას, მაგრამ შეიძლება დაარღვიოს ეს შეზღუდვა.

labelSelector განსაზღვრავს პოდების ნაკრებს, რომლებსაც ეს შეზღუდვა ეხება.

სამი ზონის (მაგალითად, us-east-1a, us-east-1b, us-east-1c) თანაბარი განაწილებისთვის 9 რეპლიკით, თითოეულ ზონას მიენიჭება 3 პოდი.

ეს განაწილება ზრდის აპლიკაციის გამძლეობას, რადგან ერთი ზონის გაუქმება არ გამოიწვევს სერვისის სრული მიუწვდომლობას.