inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 배우는 쿠버네티스(v1.35)

7.9.토폴로지 분배 제약 조건(topologySpreadConstraints)

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

734

오몰내알

작성한 질문수 13

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

kubernetes docker

답변 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/

 

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

 

감사합니다 :)

섹션2. 1.5쿠버네티스_컨트롤플레인_노드와_워커_노드_그리고 kubeadm으로 쿠버네티스 직접 구성하기-v1.30 오류

0

62

2

[해결] 2.4. tabby config.yaml 파일 복사 실패 시

1

118

1

9.3 Error 발생 유도 테스트 확인 부탁드립니다.

0

110

2

livenessProbe 어플리케이션 재시작 의미

0

79

2

K8S 노들에 접근이 안됩니다.

0

186

6

arm virtualBox의 vagrant up 에러

0

122

2

추후 강의계획 질문

0

160

1

MAC 에서 사용할 수 있는 ova 파일은 없나요?

0

229

2

7.8. w3-affinity-leader 적용 에러 문제 질문드립니다.

0

226

5

커리큘럼 순서 문의

0

220

2

apply 실행 후 pod상태가 ContainerCreating 에서 변경이 안됩니다.

0

379

2

livenessProbe에 대한 설명이 조금 부족한거 같네요

0

228

3

controlplane_node.sh 실행 오류 문의

0

255

2

예제폴더의 경로와 영상의 경로가 너무나도 다릅니다

0

227

2

9.6강의 소스 수정 요청 및 에러 문의

0

174

2

8.6 강의 중 sysnet4admin/chk-info 이미지 bash 이슈

0

169

3

드디어 맥에서도 virtualbox가 지원 됩니다.

0

299

2

8.3강의 set-ctx-pod-admin.sh 수정 요청

0

130

3

7.5 강의 tardy-nginx 이미지 문제

0

3317

3

ch1. controlplan_node.sh 실행 시 에러가 뜹니다

0

315

3

Kubenetes 클러스터에 추가적으로 신뢰하는 CA를 넣을 수 있나요?

0

193

1

clusterrolebinding의 --namespace 옵션의 역할

0

173

2

A.0003 파일 vagrant file 수정 (자문자답)

0

174

2

nfs-client-provisioner 관련 생성 오류 질문

0

197

1