더북(TheBook)

3.2.8 노드 자원 보호하기

여러 가지 상황에서도 쿠버네티스는 파드를 안정적으로 작동하도록 관리한다는 것을 알았습니다. 그렇다면 노드는 어떤 식으로 관리할까요? 우선 노드의 목적을 명확히 해야 합니다. 노드는 쿠버네티스 스케줄러에서 파드를 할당받고 처리하는 역할을 합니다.

그런데 최근에 몇 차례 문제가 생긴 노드에 파드를 할당하면 문제가 생길 가능성이 높습니다. 하지만 어쩔 수 없이 해당 노드를 사용해야 한다면 어떻게 할까요? 이런 경우에는 영향도가 적은 파드를 할당해 일정 기간 사용하면서 모니터링해야 합니다. 즉, 노드에 문제가 생기더라도 파드의 문제를 최소화해야 합니다. 하지만 쿠버네티스는 모든 노드에 균등하게 파드를 할당하려고 합니다. 그렇다면 어떻게 문제가 생길 가능성이 있는 노드라는 것을 쿠버네티스에 알려줄까요?2

쿠버네티스에서는 이런 경우에 cordon 기능을 사용합니다. cordon으로 노드를 어떻게 관리하는지 알아보겠습니다.

1. 현재 배포된 파드가 없기 때문에 echo-hname.yaml을 적용해(apply) 파드를 생성합니다.

[root@m-k8s ~]# kubectl apply -f ~/_Book_k8sInfra/ch3/3.2.8/echo-hname.yaml
deployment.apps/echo-hname created

2. scale 명령으로 배포한 파드를 9개로 늘립니다.

[root@m-k8s ~]# kubectl scale deployment echo-hname --replicas=9
deployment.apps/echo-hname scaled

 

 


2 해당 노드에 더는 파드를 할당하지 않는 기능으로, 꼭 문제가 생길 가능성이 있는 노드를 의미하지는 않습니다. 효과적인 이해를 돕기 위해 제시한 예시입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.