728x90
Kubernetes cordon
Kubernetes 클러스터를 사용하다보면 특정 서버 노드에 문제가 생겨서 서비스에서 제외할 필요가 생김
이럴때 cordon명령어를 통해 더이상 Pod가 해당 노드에 스케줄링 되지 않도록 설정 가능
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
dev-chicken1 Ready control-plane 1d v1.21.6
dev-chicken2 Ready <none> 1d v1.21.6
dev-chicken3 Ready <none> 1d v1.21.6
dev-chicken4 Ready <none> 1d v1.21.6
이렇게 node중 3번 노드에 문제가 생겼다면 cordon 명령어를 실행해주면 됨
$kubectl cordon dev-chicken3
NAME기준으로 명령어를 실행
% kubectl get nodes
NAME STATUS ROLES AGE VERSION
dev-chicken1 Ready control-plane 1d v1.21.6
dev-chicken2 Ready <none> 1d v1.21.6
dev-chicken3 Ready,SchedulingDisabled <none> 1d v1.21.6
dev-chicken4 Ready <none> 1d v1.21.6
SchedulingDisabled상태가 추가된 것을 확인 가능
Kubernetes drain
이미 띄워져있는 Pod들도 다른 Node로 이전을 시켜야할때 drain 명령어를 사용
앞서 dev-chicken3의 노드의 Pod를 다른 노드로 이전하고 싶다면
$kubectl drain dev-chicken3
명령어를 사용하면 됨
데몬셋을 사용하고 있고, 데몬셋을 무시하고 이전을 하려면
--ignore-daemonsets=true
옵션을 추가하면 되고
emptydir을 사용하는 Pod를 옮기려면
--delete-emptydir-data
옵션을 추가하여 사용
$kubectl drain chicken-dev3 --ignore-daemonsets=true --delete-emptydir-data
둘다 사용하고 있다면 이렇게 명령어를 실행하면 노드의 pod들이 evict되고 새로 scheduling되는 것을 볼 수 있음
Kubernetes uncordon
노드의 문제를 해결한 뒤 다시 scheduling 될 수 있도록 하는 명령어
$kubectl uncordon chicken-dev3
간단하게 uncordon만 하게되면 다시 정상적으로 pod가 띄워지는 것을 볼 수 있음
반응형
'개발 > 개발공부' 카테고리의 다른 글
Ansible vs Terraform / 앤서블, 테라폼, 차이 (0) | 2023.05.30 |
---|---|
Kubernetes Storage / emptydir, persistent volume (1) | 2023.05.24 |
Go-git / golang, git client, 깃, github (0) | 2023.03.19 |
FQDN / Fully Qualified Domain Name, 도메인, Kubernetes cluster domain (0) | 2023.03.12 |
React StyledComponents / 리액트, css, style, 기능 (0) | 2023.03.06 |
댓글