Bir deployment altında her bir node'ta yalnızca bir pod deploy olsun

Uygulamam ip adresine göre banlanma gibi tehlikesi var(veri çekiyoruz), bu nedenle kubernetes içerisindeki her pod um ayrı bir public ip adres üzerinden istek atsın istiyorum. Bunun için en mantıklı çözümün deployment içerisinde çalışacak her bir pod ayrı node’ta dolayısıyla ayrı bir public ip(node ip adresi) ile kalkmış olmasını istiyorum.

Her bir node’a bir pod atayıp down olan node olması durumunda yeni bir node kalkana kadar tek node’ta iki pod kalkmasın, gerekirse pending te kalsın ve yeni node müsait olunca kalksın istiyorum. Bunun için yaptığım araştırmada en mantıklı çözümün podAntiAffinity olduğunu gördüm. Ancak yaptığım testlerde deployment ı ilk deploy ettiğimde podlar ayrı node larda kalksa da manuel olarak node sayısını azalttığımda bir node’ta birden fazla pod olduğunu gördüm.

Şuanki config aşağıdaki gibidir:

affinity: 
  podAntiAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
    - labelSelector:
        matchExpressions:
        - key: tier
          operator: In
          values:
          - spot
      topologyKey: "kubernetes.io/hostname"

Bu kapsamda fikir verecek veya nokta çözüm sağlayabilecek olan varsa paylaşabilir

Bu sorunun yanında her bir pod a internete çıkması için geçici bir ip adres ataması olayına da baktım ama o konuda bir sonuca varamadım. Mevcut sorum haricinde bunu yapabilmem için de bildiğiniz ve paylaşmak istediğiniz çözüm varsa açığım :slight_smile:

Bu case ile alakalı bir haftaya yakın düşünüyorum ama bu soruyu yazdıktan sonra dersleri açayım oradan bir review yapayım dedim DaemonSet başlığını gördüm ve bunun ile yapabileceğim geldi aklıma :joy:

Yine de bu case üzerinden fikir vermek isteyenler olursa dinleyebilirim :smile:

Bir daemon set olarak şirket uygulamasının deploy edilmesi de best practice değildir diye düşünüyorum. Dolayısıyla daemonset çözümü uygun değil.