인프런 커뮤니티 질문&답변

dukim73님의 프로필 이미지
dukim73

작성한 질문수

그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}

7.8.파드 어피니티(affinity) 그리고 안티 어피니티

7.8 실습문의

작성

·

295

0

deployment-anti-podAffinity.yaml 실행했을 때 w2-k8s 2개, w3-k8s 2개의 배포 됩니다.

scale 명령으로 파드수를 줄였다가 늘려 보아도 동일합니다.

[root@m-k8s 7.8]# kubectl get pods -o wide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

deploy-anti-podaffinity-7865bcd85-b55tb 1/1 Running 0 10s 172.16.132.28 w3-k8s <none> <none>

deploy-anti-podaffinity-7865bcd85-g87kp 1/1 Running 0 10s 172.16.132.23 w3-k8s <none> <none>

deploy-anti-podaffinity-7865bcd85-kw7kp 1/1 Running 0 10s 172.16.103.180 w2-k8s <none> <none>

deploy-anti-podaffinity-7865bcd85-z99xl 1/1 Running 0 10s 172.16.103.181 w2-k8s <none> <none>

답변 3

0

조훈(Hoon Jo)님의 프로필 이미지
조훈(Hoon Jo)
지식공유자

안녕하세요

Pod 안티 패턴의 경우 일부 명세(Manifests)가 수정되어 업데이트 드립니다. 

podAffinity의 공식 도큐먼트 설명은 안티 패턴이긴 한데....

디자인적으로는 NotIn의 경우 그러한 레이블이 없길 바란다. 라는 의미라고 합니다.

(이와 같은 철학으로 자매품 DoesNotExist가 있습니다.)

관련 링크: 

Issue - Pod affinity with operator "NotIn" does not work #106795

Issue - Pod affinity with operator "DoesNotExist" does not work #90679

design-proposals-archive - Inter-pod topological affinity and anti-affinity
 

따라서 podAffinitypodAntiAffinity로 수정하여 해당 기능을 구현하였습니다. 

이에 따라 OperatorNotIn에서 In으로 수정되었습니다. 수강에 참고 부탁드립니다.

이와 관련한 설명 문서는 다음과 같습니다. 

Inter-pod affinity and anti-affinity

테스트 결과는 다음과 같습니다.

#bash
[root@m-k8s 7.8]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

deploy-podaffinity-65cbd4f977-4cxxv 1/1 Running 0 63m 172.16.221.136 w1-k8s <none> <none>

deploy-podaffinity-65cbd4f977-9sk2j 1/1 Running 0 63m 172.16.132.2 w3-k8s <none> <none>

deploy-podaffinity-65cbd4f977-w5vqr 1/1 Running 0 64m 172.16.221.133 w1-k8s <none> <none>

deploy-podaffinity-65cbd4f977-xmttc 1/1 Running 0 63m 172.16.132.3 w3-k8s <none> <none>

w1-affinity-leader 1/1 Running 0 65m 172.16.221.131 w1-k8s <none> <none>

w3-affinity-leader 1/1 Running 0 64m 172.16.132.1 w3-k8s <none> <none>

 

#bash
[root@m-k8s 7.8]# k apply -f deployment-anti-podAffinity.yaml

deployment.apps/deploy-anti-podaffinity created

 

#bash
[root@m-k8s 7.8]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

deploy-anti-podaffinity-fbf5cbf8d-557zz 1/1 Running 0 86s 172.16.103.139 w2-k8s <none> <none>

deploy-anti-podaffinity-fbf5cbf8d-5hcx5 1/1 Running 0 86s 172.16.103.136 w2-k8s <none> <none>

deploy-anti-podaffinity-fbf5cbf8d-9x4zm 1/1 Running 0 86s 172.16.103.138 w2-k8s <none> <none>

deploy-anti-podaffinity-fbf5cbf8d-jx4pb 1/1 Running 0 86s 172.16.103.137 w2-k8s <none> <none>

deploy-podaffinity-65cbd4f977-4cxxv 1/1 Running 0 65m 172.16.221.136 w1-k8s <none> <none>

deploy-podaffinity-65cbd4f977-9sk2j 1/1 Running 0 65m 172.16.132.2 w3-k8s <none> <none>

deploy-podaffinity-65cbd4f977-w5vqr 1/1 Running 0 66m 172.16.221.133 w1-k8s <none> <none>

deploy-podaffinity-65cbd4f977-xmttc 1/1 Running 0 65m 172.16.132.3 w3-k8s <none> <none>

w1-affinity-leader 1/1 Running 0 66m 172.16.221.131 w1-k8s <none> <none>

w3-affinity-leader 1/1 Running 0 65m 172.16.132.1 w3-k8s <none> <none>


0

dukim73님의 프로필 이미지
dukim73
질문자

pod-antiAffinity 설정후 pod 4개 배포시 w2-k8s 쪽으로 파드 4개가 모두 배포 되는 걸로 실습 예제에 나와 있는데요. 실제 실행을 해 보니 w2-k8s쪽 2개, w3-k8s쪽 2개로 배포가 되어서 생성된 파드를 scale 명령으로 replicas=1로 배포하고 다시 scale 명령으로 replicas=4로 배포를 했습니다.

결과가 w2-k8s쪽 2개, w3-k8s쪽 2개로 배포되어서 왜 이렇게 배포가 되는지 궁금해서 문의 했습니다.

감사합니다. 확인 후 답변 업데이트 드리겠습니다 :)

0

안녕하세요, dukim73님.

튜터 주도입니다.

괜찮으시다면, 혹시 질문을 다시 구체적으로 부탁드려도 될까요?

 

우선 올려주신 질문은

"deployment은 replias를 scale통해서 줄이고 늘렸을 때에도 replicas의 수가 4개로 일정하다"

는 것으로 이해했습니다.

 

감사합니다.

 

dukim73님의 프로필 이미지
dukim73

작성한 질문수

질문하기