• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

deploy-topologyspreadconstraints.yaml의 maxSkew에 대해 질문이 있습니다!

22.04.13 11:43 작성 조회수 556

0

안녕하세요! 강의에서 노드3에 12개의 파드가 배포되어있는 상태에서 배포를 하였을 때, 노드1과 노드4에 2개의 파드가 배포되는 부분에 대해 질문이 있습니다.

deploy-topologyspreadconstraints.yaml에서 region과 zone 모두 maxSkew가 현재 1로 설정되어 있습니다.

그러면 region별로는 파드의 수가 1이상 차이나면 안되고, zone에서도 마찬가지라고 생각했습니다.

region에서는 이것이 잘 적용이 된 것 같은데, zone에서는 노드1과 노드4에 각각 2개씩 배포가 되어 maxSkew가 안지켜진 것으로 보입니다.(zone안에서의 노드끼리는 파드 수가 2개가 차이나므로)

whenUnsatisfiable 또한 DoNotSchedule로 되어있어서 이렇게 배포가 되면 안되는 게 맞는 거 같은데,
이에 대해서 제가 잘못 알고 있는 점이 있는지 질문드립니다!
 
항상 친절한 답변 주셔서 감사합니다😀
 

답변 1

답변을 작성해보세요.

1

안녕하세요, 김건우님.

튜터 비모입니다.

 

이미 알고계신 내용이지만, 해당 강의(7.9 토폴로지 분배 제약 조건)의 예제를 보시면

아래와 같이 4대의 노드 모두 같은 region(region=ap-northeast-2)에 대한 label을 가지고 있으며,  zone은 2개(ap-northeast-2a, 2b)로 나누어진 상태입니다.

 

- node_labels.sh

#!/usr/bin/env bash

kubectl label node w1-k8s topology.kubernetes.io/region=ap-northeast-2 topology.kubernetes.io/zone=ap-northeast-2a

kubectl label node w2-k8s topology.kubernetes.io/region=ap-northeast-2 topology.kubernetes.io/zone=ap-northeast-2a

kubectl label node w3-k8s topology.kubernetes.io/region=ap-northeast-2 topology.kubernetes.io/zone=ap-northeast-2b

kubectl label node w4-k8s topology.kubernetes.io/region=ap-northeast-2 topology.kubernetes.io/zone=ap-northeast-2b

 

따라서 예제 상에서는 하나의 region만 존재하므로, 파드가 어떤 노드로 분배가 되어도 정상적인 상태입니다.

또한 zone을 기준으로 보면 파드가 ap-northeast-2a에 2개, ap-northeast-2b에 2개로, 각각의 zone에 균등하게 분배되었으므로 maxSkew를 위반한 상태가 아닙니다.

즉 해당 설정은 같은 zone 안의 모든 노드에 파드가 균등하게 배포해야 함을 의미하지 않습니다.

말씀해주신 것처럼 파드가 각 노드에 균등하게 배포되기 위해서는 노드 별로 label을 다르게 부여하고 topologyKey를 해당 값으로 지정해야 합니다.

 

좀더 상세한 내용이 필요하신 경우 아래 Kubernetes 공식 문서를 참조해주시길 부탁 드립니다.

- 파드 토폴로지 분배 제약 조건

https://kubernetes.io/ko/docs/concepts/workloads/pods/pod-topology-spread-constraints/

 

혹시 추가로 궁금하신 점이 있으면 남겨주세요

 

감사합니다 :)