[kubernetes] EKS 파드 스케줄링: podAntiAffinity

2025. 3. 31. 23:30·Kubernetes & EKS/k8s 공부 기록

podAntiAffinity

podAntiAffinity는 특정 조건을 만족하는 파드들이 같은 노드 또는 같은 topology 도메인(예: 같은 가용 영역)에 스케줄링되지 않도록 제한하는 기능입니다. 이를 활용하면 동일한 애플리케이션의 파드가 여러 노드에 분산 배치되어 가용성을 높일 수 있습니다.

구성 옵션

  • requiredDuringSchedulingIgnoredDuringExecution : 조건에 맞게 스케쥴링을 할 수 없을 때 pending 파드 발생 (hard)
    • 동일한 topology(노드, 존 등)에 하나의 파드를 배포하는 것이기 때문에, 존에 대해 podAntiAffinity를 설정하면 zone 당 하나의 파드 생성만 허용되어, 존의 수보다 많은 수의 파드를 배포할 수 없음
    • 존에 대해 설정하지 않는 것을 권장하고, 노드당 단 하나의 파드만 배포가 필요한 특수한 상황에서 활용 가능
  • preferredDuringSchedulingIgnoredDuringExecution : 조건에 맞게 스케쥴링 하도록 시도하지만, 맞지 않더라도 스케쥴링 가능(soft)

예제: 동일한 애플리케이션의 파드가 같은 노드에 배치되지 않도록 설정

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: app
                    operator: In
                    values:
                      - example
              topologyKey: "kubernetes.io/hostname"
      containers:
        - name: example-container
          image: nginx

위 설정에서는 app=example 라벨을 가진 파드들이 같은 노드(kubernetes.io/hostname 기준)에 함께 스케줄링되지 않도록 합니다. 이를 통해 특정 노드에 파드가 몰리지 않고 분산 배치되도록 유도할 수 있습니다.

  • podAntiAffinity는 대형 클러스터(100개 이상의 노드)에서 스케쥴링 속도 문제로 권장하지 않는다고 함

'Kubernetes & EKS > k8s 공부 기록' 카테고리의 다른 글

[kubernetes] Authentication & Authorization 01  (0) 2025.04.18
[kubernetes] EKS 파드 스케줄링: topologySpreadConstraints  (0) 2025.03.31
[kubernetes] Taint and Tolerance  (0) 2025.03.31
[kubernetes] Resource Requirements and Limits  (0) 2025.03.14
[kubernetes] Node Selector & Node Affinity  (0) 2025.03.14
'Kubernetes & EKS/k8s 공부 기록' 카테고리의 다른 글
  • [kubernetes] Authentication & Authorization 01
  • [kubernetes] EKS 파드 스케줄링: topologySpreadConstraints
  • [kubernetes] Taint and Tolerance
  • [kubernetes] Resource Requirements and Limits
Hyukops
Hyukops
안녕하세요
  • Hyukops
    Hyukops 님의 Tech Blog
    Hyukops
    • 분류 전체보기 (141)
      • Introduction (1)
      • Kubernetes & EKS (43)
        • k8s in action (9)
        • k8s 공부 기록 (17)
        • k8s 운영 가이드 (10)
        • k8s 운영 특이사항 (7)
      • Service Mesh (29)
        • Istio 공부 기록 (20)
        • Istio 운영 특이사항 (9)
      • CICD (10)
        • argoCD 공부 기록 (6)
        • argoCD 운영 특이사항 (4)
      • Logging & Monitoring (5)
        • Prometheus 운영 특이사항 (0)
        • fluent bit 운영 특이사항 (5)
      • Infrastructure as Code (8)
        • terraform 공부 기록 (3)
        • terraform 운영 특이사항 (5)
      • AWS (40)
        • aws 공부 기록 (29)
        • 솔루션 사례 & 문제 해결 (11)
      • Database (5)
        • postgreSQL (5)
  • 태그

    fluent bit
    aws saa
    k8s in action
    AWS
    kubernetes
    Logging
    Istio
    Database
    canary
    Terraform
    prometheus
    MSK
    fluentbit
    PostgreSQL
    eks
    argocd
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Hyukops
[kubernetes] EKS 파드 스케줄링: podAntiAffinity
상단으로

티스토리툴바