강의

멘토링

커뮤니티

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

gusqhr999님의 프로필 이미지
gusqhr999

작성한 질문수

대세는 쿠버네티스 (초급~중급편)

Pod - Node Scheduling

NoExecute 에대해

작성

·

274

2

NoSchedule은 master노드에 기본적으로 달려있어서 우리가 pod를 만들때 master 노드에 할당이 안되도록 하고있고,

만약 replicaSet에 의해 pod가 운영중일때 node에 장애가 발생하게 되면 쿠버네티스는 해당 노드에 있는 pod들이 

정상적으로 동작하지 않을수 있기 때문에 NoExceute옵션의 Taint를 자체적으로 해당 node에 단다 그럼 replicaset 은 

자신의 pod가 하나 없어졌기 때문에 다른 노드에 pod를 하나 다시 만들어서 서비스가 잘 유지될수 있도록 해준다.

이 말인 즉슨, noexecute 가 노드에서 잘돌고 있는pod가 toleration이 없는상황에서 noexecute옵션으로 자동 삭제가 되게 되니~ 이런 점을 이용하여...taint가 아직없는 운영중인 노드에서 장애가 발생하면 향후 또는 그시점이후 제대로 정상적으로 동작을 못할수 있으니 NoExceute Taint를 달아서 pod를 삭제하자는 얘긴가요?

이게 이해가 좀 안되고..게다가 그냥 pod 만 삭제하면 replicaSet에서 자동으로 다른 노드에 pod를 생성할텐데.왜 굳이 Noexecute옵션을 쓰는지..전체적으로 강의하신 말씀을 위에 쭈욱 적엇는데 잘 이해가 안되네요.ㅠㅠ

답변 1

3

일프로님의 프로필 이미지
일프로
지식공유자

[이 말인 즉슨, noexecute 가 노드에서 잘돌고 있는pod가 toleration이 없는상황에서 noexecute옵션으로 자동 삭제가 되게 되니~]

이후의 결론은 이런 원리로 Taint가 쿠버네티스가 Node장애시 사용된다는게 다입니다. ㅎ 그렇게 작동을 하니 그걸 고려해서 어떻게 하자는 결론은 아니였습니다.

직접 Node를 다운시키고 해당 현상을 확인해보시면 좋을 것 같고요.

Taint의 NoExecute옵션은 단지 해당 Node위에 Pod를 죽이는 역할이고, 이 Node위에 Controller에서 관리하는 Pod가 있다면 Controller 입장에서는 자신이 관리하는 Pod가 주었으니 말씀대로 다른 Node에 Pod를 생성해 주겠죠.

이 현상에 대해서 관리자 입장에서 딱히 뭘 해야하는건 없습니다^^

그냥 Taint가 단지 노드를 스케줄링하는대만 쓰이는건 아니고, 이렇게도 쿠버네티스 내부적으로 활용된다. 그런 원리만 이해하자. 가 제가 강의에서 의도한 내용입니다.

좋은 질문 감사합니다~!  

gusqhr999님의 프로필 이미지
gusqhr999

작성한 질문수

질문하기