글
EC2 Fault에 따른 노드 축출
EC2를 쓰다보면 장비랑 하드웨어에 이상이 생겨서, 내 버츄얼 호스트 세입자를 내쫓아내야하는 케이스가 생긴댜
사이클은 예측하기 어렵지만 지금까지 경험상 대략 반년에 한번 정도는 생겼던 것 같댜
뭐 잡론은 접고 바로 스텝부터 밟아보쟈
1. 대상 노드 조회
- kubectl get node -l ~~~ -L | grep ~~~
- aws 측에서 node retire 공지가 올 때, 인스턴스 id (i-*) 형태로 온다.
- 이거로 어떤 워커노드에 문제가 생겼는지 조회해서 찾는다.
2. 워커노드 오토스케일링 그룹을 +1
- 지금부터 할 작업은 워커노드 1대를 축출하는 작업이다.
- 안에 기동되어 있던 파드는 즉각적으로 다른 노드로 이사가서 기동되고 서비스를 수행해야 한다
- 원래 이 부분은 옵션인 단계이다. 어차피 노드 컨트롤러가 알아서 1대 다시 기동할텐데, 나는 그 시간까지 기다리기 싫으니 미리 돗자리 펴는 것 ㅇㅇ
- 이 부분은 콘솔로 해도 되고, 테라폼으로 해도 되고, 각자 원하는 방법으로 한다.
3. 워커노드 drain
- 워커노드를 방출하는 단계이다
- kubectl drain 문제되는_노드명 --ignore-daemonsets --force --delete-local-data
- drain 노드를 하게 되면, 해당 노드가 스케줄링 불가 상태로 빠지면서 안에 파드가 모두 축출되기 시작한다.
- drain에는 kubectl cordon 과정도 포함되어 있으니, 굳이 drain에 앞서 cordon을 먼저 할 필요까진 없다.
- ignore daemonsets은 kube system critical 레벨로 기동되는 쿠버프록시나 코어dns, CNI 파드들의 필수 생존 여부를 무시하는 옵션이다. 이 옵션없이 drain하는데 에러가 뜨면 데몬셋 무시로 진행해보도록 하자.
- force는 강제이고, delete local data는 의미에서 뭔지 알 수 있다.
4. 노드 삭제
- kubectl delete node 이상한노드명
- 워커노드를 ETCD에서 삭제한다.
- 나머지는 다시 개수를 맞추려고, 1번에서 늘렸던 1개 혹은 2개가 추가로 늘어난 뒤, 스케일링을 줄이면 원래 개수로 맞춰지고 원복할 수 있다 ㅇㅇ
'IT > EKS' 카테고리의 다른 글
아르고CD AD연동 과정 (0) | 2022.11.24 |
---|---|
EKS /var/log/containers 로그포맷 (0) | 2022.11.08 |
아르고CD 계정관리 (0) | 2022.08.24 |
ArgoCD 아르고 오토싱크 interval (0) | 2022.08.19 |
ArgoCD 헬름차트 + ALB 인그레스 리디렉션 무한루프 해결책 (0) | 2022.08.19 |