안녕하세요 비티시보이즈입니다.
오늘의 주제는 EKS Node Drain입니다.
Kubernetes Node Drain이란?
kubectl drain은 Node 관리를 위해서 지정된 Node에 있는 Pod들을 다른곳으로 이동시키는 명령입니다.
Node에 있는 Pod들을 다른 Node로 옮기고, Drain을 한 Node에 Cordon을 하여 drain 후에도 다시 스케줄링 되지 않도록 해주는 명령입니다.
Node Drain 순서
Node를 Drain하는 순서는 다음과 같이 진행됩니다.
먼저 drain하려는 노드의 이름을 식별합니다. 다음을 사용하여 클러스터의 모든 노드를 나열할 수 있습니다.
kubectl get nodes
다음으로 Kubernetes에 노드를 비우도록 지시합니다.
kubectl drain --ignore-daemonsets <node name>
DaemonSet에서 관리하는 포드가 있는 경우 노드를 성공적으로 비우려면 --ignore-daemonsetswith를 지정해야 합니다.
kubectl하위 kubectl drain명령 자체는 DaemonSet 포드의 노드를 실제로 비우지 않습니다. DaemonSet 컨트롤러(제어 평면의 일부)는 즉시 누락된 포드를 동등한 새 포드로 교체합니다. DaemonSet 컨트롤러는 또한 예약할 수 없는 오염을 무시하는 포드를 생성하여 새 포드가 드레이닝 중인 노드에서 시작할 수 있도록 합니다.
drain을 하여 cordon으로 스케줄링 되지 않는 node에 다시 스케줄을 하려면 uncordon을 해주어야 합니다.
kubectl uncordon <node name>
하지만 해당 명령어 만으로 drain이 되지 않고 오류가 발생할 수 있습니다.
제가 가장 많이 경험한 오류로는 pod가 emptyDir으 볼륨을 사용하여 pod에 local data를 저장하는 경우였습니다.
emptyDir를 사용하여 local data를 저장하는 파드가 해당 워커 노드에 있는 경우, 이 파드를 삭제 시 해당 데이터 또한 삭제되므로 kubectl drain이 수행되지 않습니다. 해당 파드를 제거하고 local data를 삭제해도 괜찮다고 판단 됐을 시에는 해당 명령어에 추가하여 수행하면 될 것 같습니다. 그리고 위에서 말씀드린 daemonsets까지 함께 제거.
kubectl drain <node name> --delete-local-data
kubectl drain <node name> --delete-local-data --ignore-daemonsets
cannot delete pods declare no controller (use --force to override): default/nginx
Node를 Drain을 하기 위해선 1개 이상의 ReplicaSet이 있어야 합니다.
Deploy, ReplicaSet 등으로 replica를 1개 이상 유지시킬 Object가 필요하다고 합니다.
그래서 위의 문제를 해결하는 방법은 다음과 같습니다.
1. 알려준대로 명령어에 --force를 추가하여 명령
kubectl drain <node name> --force
2. 단일로 올라가있는 pod을 delete한 후 drain
kubectl delete <pod>
kubectl drain <node name>
3. pod의 kind를 replicaset, deploy 등으로 수정하여 다른 node에 복제가 가능한 상태로 만들기
가 있겠습니다.
이상으로 Kubernetes Drain Node에 대한 포스팅을 마치겠습니다.
감사합니다.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] AWS CodeArtifact (0) | 2023.08.18 |
---|---|
[AWS] Amazon Linux AMI 시리즈 (0) | 2023.08.18 |
[AWS] Secrets Manager을 통한 보안 인증 정보 설정 및 자동 교체 구성 (0) | 2023.08.16 |
AWS MYSQL Dump (0) | 2023.08.15 |
[AWS] AWS Systems Manager를 이용한 SSM agent update (0) | 2023.08.11 |
댓글