1

GKE를 사용하는 3 개의 노드로 구성된 Kubernetes 클러스터를 실행하고 있습니다. Kubernetes에게 backend 포드의 3 복제본을 요청합니다. 3 포드는 고 가용성 서비스를 제공하기 위해 노드 사이에 잘 ​​전달되지 않지만 대개 모두 2 노드에 있습니다. Kubernetes가 각 노드에 포드를 가질 수있는 최대한 많은 포드를 발송하지만 노드보다 포드가 많으면 배포/확장을 실패하지는 않습니다.노드간에 디스패치 복제본을 선호합니다.

preferredDuringSchedulingIgnoredDuringExecution으로 그 작업을 수행 할 수 있습니까?

답변

1

그래서 같은 preffered antiAffinity 규칙을 설정해보십시오 :

affinity: 
    podAntiAffinity: 
     preferredDuringSchedulingIgnoredDuringExecution: 
     - labelSelector: 
      matchExpressions: 
       - key: "app" 
       operator: In 
       values: 
       - "my_app_name" 
      topologyKey: "kubernetes.io/hostname" 

이 이미 실행중인 동일한 레이블의 꼬투리가없는 노드에 포드를 예약하려고합니다. 그 후에는 모두 무료입니다 (적어도 하나가 각 노드에서 실행 중인지 확인한 후 노드를 균등하게 분산시키지 않습니다). 즉, 크기를 조정 한 후에는 5 포드가있는 노드와 각각 1 포드가있는 다른 노드로 끝날 수 있습니다.

+1

감사합니다. 나는'weight : 100 podAffinityTerm : labelSelector :'를 추가해야했다. – Sony