Cloud

[Cloud] 쿠버네티스(Kubernetes)란? (4) (with. Cordon/UnCordon, Taint/Toleration, Rolling, StatefulSet/DaemonSet)

yongyongcoding 2026. 1. 13. 12:59

오늘은 노드를 제어하는 명령어 또는 설정들에 대해서 알아보려고한다.

 

 


Part1: Cordon과 Uncordon(노드 스케쥴 제어)

Cordon과 Uncordon은 노드의 스케쥴을 제어하는 노드 관리 명령어이다.

Cordon은 특정 노드에 새로운 Pod가 스케쥴 되지 않도록 제어하는 기능이고,

UnCordon은 Cordon이 적용된 노드가 다시 정상적으로 스케쥴 되도록 하는 기능이다.

 

1-1. Cordon 실습

워커 노드인 Cluster2번을 cordon하게 되면 아래와 같이 SchedulingDisabled상태가 되며,

아래와 같이 배포를 진행했을 때 Cluster2번에만 Pod가 생성되지 않은 모습을 볼 수 있다. 

 

※ 아래는 Cluster2번을 Cordon한 상태에서 4개의 replicas를 설정한 deploy를 배포한 모습이다.

※ 생성된 Pod는 Cluster2번을 제외한 3번과 4번에 생성된다.

 

1-2. UnCordon 실습 

이번에는 반대로 Cluster2번을  UnCordon을 하게 되면 다시 정상적으로 스케쥴이 되어,
Deploy의 replicas 개수를 4개에서 6개로 늘렸을 때 Cluster2번에도 스케쥴이 된 모습을 볼 수 있다.

 

 

 

 

Part2: Taint와 Toleration(노드 제어 관리)

Taint와 Toleration 또한 노드의 스케쥴을 제어하는 노드 관리 설정값이다.

Taint는 특정 노드에 새로운 Pod가 스케쥴 되지 않도록 노드에 설정한 값이며, Taint와 동일한 값의 Toleration이 설정된 특정 Pod만 스케쥴링을 허용할 수 있다.

Toleration은 Toleration과 동일한 값의 Taint가 설정된 노드에 스케쥴 가능하도록 Pod에 설장하는 값이며, Toleration이 적용된 Pod는 Taint가 없는 노드에도 배치가 가능하다.

 

2-1. 마스터 노드인 Cluster1이 Pod가 스케쥴링 되지 않는 이유는 해당 노드에 Taints설정이 되어져 있기 때문이다.

 

 

2-2. Toleration 속성을 Pod에 주어 Taint가 걸린 노드에도 Pod가 생성이 가능하게 할 수 있다.

※ Cluster1의 Taint값을 Tolerations의 key값에 추가한다. 

※ 그러면 Cluster1에도 Deployment의 Pod가 스케쥴된 모습을 볼 수 있다.

 

 

 

 

 

 

 

 

[참고: ssh 에러 권한 해결]

 

 

 

 

 

Part3:  Rollout (변경 이력 관리)

Rollout은 쿠버네티스에서 Deployment, StatefulSet, DaemonSet 등의 변경 사항을 배포하고,

그 이력을 관리하는 전체 프로세스를 의미한다.

주요 명령어는 다음과 같다.

kubectl rollout status deployment/my-app // 배포 상태 확인

kubectl rollout history deployment/my-app // 배포된 버전 확인

kubectl rollout undo deployment/my-app  // 직전버전으로 변경 

kubectl rollout undo deployment/my-app  --to-revision=2 // 지정버전으로 변경

 

3-1. rolling 실습을 위한 replicas 2인 deployment 배포

 

3-2. kubectl set image 명령어를 통해 nginx의 이미지 버전을 변경할 수 있다.

 

3-3. rollout history 명령어를 통해 변경사항을 볼 수 있다.

 

3-4. rollout undo 명령어를 통해 다시 이전 상태로 되돌릴 수 있다.

 

3-5. 다시 이미지를 변경해주고 변경 사항을 확인한다.

 

 

 

 

 

Part4:  StatefulSet(고유의 Pod 생성)

 

deployment로 배포한 경우 1번파드 2번파드 3번파드 다 동일한 서비스를 제공받을 수 있는데

statuefulset의 경우 고유성 있는 pod를 만들어내어 서로 역할이 다른 pod를 만들어 낼 수 있다.

※ 독자적인 pod 0번부터 0 1 2 pod가 만들어진다.

 

 

Part5:  DaemonSet(Pod 균일 배치)

DaemonSet이란 모든 노드에 똑같은 파드를 하나씩 배치하는 컨트롤러를 의미한다.

 

5-1. DaemonSet 생성 및 배포

 

※ 배포된 Pod를 보면 Clust1번부터 4번까지 균일하게 배포된 모습을 볼 수 있다.

 

 

오늘은 다음과 같이 노드를 제어하는 리소스들을 알아보았다.

해당 리소스들을 통해 사용자가 원하는 방식으로 배포를 제어할 수 있다.