티스토리 뷰
1. 개념
- cordon : 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 함/
기존에 노드에 배포된 파드는 그대로 남아있음 - drain : 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 하고,
기존에 배포된 파드를 다른 노드로 이동 노드를 업데이트하는 경우 활용 가능
2. cordon 설정
2.1. 명령어
(admin-k8s:awx) root@k8s-m:~# k get nodes
NAME STATUS ROLES AGE VERSION
k8s-m Ready control-plane,master 67d v1.21.4
k8s-w1 Ready <none> 67d v1.21.4
k8s-w2 Ready <none> 67d v1.21.4
(admin-k8s:awx) root@k8s-m:~# k cordon k8s-w2
node/k8s-w2 cordoned
(admin-k8s:awx) root@k8s-m:~# k get nodes
NAME STATUS ROLES AGE VERSION
k8s-m Ready control-plane,master 67d v1.21.4
k8s-w1 Ready <none> 67d v1.21.4
k8s-w2 Ready,SchedulingDisabled <none> 67d v1.21.4
(admin-k8s:awx) root@k8s-m:~#
k8s-w2 2번 워크노드에는 스케쥴링이 안되는 상태로 전환됩니다.

- cordon 적용
kubectl cordon [노드_이름]
- uncordon 해제
(admin-k8s:awx) root@k8s-m:~# k uncordon k8s-w2
node/k8s-w2 uncordoned
(admin-k8s:awx) root@k8s-m:~# k get nodes
NAME STATUS ROLES AGE VERSION
k8s-m Ready control-plane,master 67d v1.21.4
k8s-w1 Ready <none> 67d v1.21.4
k8s-w2 Ready <none> 67d v1.21.4
kubectl uncordon [노드_이름]

2.2. cordon 적용
- w3-k8s 노드에 커든 적용 후 디플로이먼트 배포
3. drain 설정
3.1. 명령어
- drain 적용
- kubectl drain k8s-w2 --ignore-daemonsets --force
kubectl drain [노드_이름]
or
kubectl drain [노드_이름] --ignore-daemonsets --force
- 해제
kubectl uncordon [노드_이름]
3.2. drain 적용
- w1-k8s 노드에 드레인 적용 시 기존에 배포된 파드가 추출된 것을 확인
(admin-k8s:awx) root@k8s-m:~# kubectl drain k8s-w2 --ignore-daemonsets --force
node/k8s-w2 cordoned
WARNING: ignoring DaemonSet-managed Pods: kube-system/calico-node-2lwjg, kube-system/kube-proxy-f272q
evicting pod awx/awx-operator-controller-manager-58c66f9bb6-zzj54
evicting pod awx/nginx-deployment-5d59d67564-94fd2
evicting pod awx/nginx-deployment-5d59d67564-8gzn2
pod/nginx-deployment-5d59d67564-8gzn2 evicted
pod/awx-operator-controller-manager-58c66f9bb6-zzj54 evicted
pod/nginx-deployment-5d59d67564-94fd2 evicted
node/k8s-w2 evicted
drain 하기전

k8s-w2 워크노드 2번에 대해 drain 작업진행
*evicting : 쫒겨난 혹은 추출된 이라는 뜻
이는 보통 디스크 자원이 부족현상 / 강제로 추출된 pod
Kubernates Evicted Status Pod 삭제하기
Kubernates pod Evicted 상태가 되었다.
$ kubectl describe pod <pod이름>
이렇게 하면 맨 아래 부분에서 무슨 문제가 발생을 했는지 확인할 수 있다.
이 상태로 있는 pod가 있으면 다시 실행을 해도 실행되지 않고 지워준다음 다시 시작을 해야 한다고 한다. 그럴때 이 Evicted Status인 pod를 삭제하는 방법은 다음과 같다.
$ kubectl -n default delete pods --field-selector=status.phase=Failed
위와 같이 하고 다시 get pods 를 해보면 Evicted Status 상태인 pod가 삭제된 것을 확인할 수 있다.

drain 작업 완료후 W1 으로 모두 pod 가 이동됨 확인

재 배포시 다른 노드에만 파드가 배포되는 것을 확인

해제하고 다른 노드의 파드를 삭제하면 w1-k8s 노드에 재배포된 것을 확인
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 5.4.0.1072
- 트리이스
- 쿠버네티스
- pod 상태
- startup 에러
- K8s
- 오라클 홈디렉토리 copy 후 startup 에러
- 앤시블
- Oracle
- 코로나19
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 버쳐박스
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- ubuntu
- MSA
- CVE 취약점 점검
- 키알리
- 커널
- 우분투
- 튜닝
- 오라클
- 설치하기(HP-UX)
- 여러서버 컨트롤
- [오라클 튜닝] sql 튜닝
- 테라폼
- [오라클 튜닝] instance 튜닝2
- (InstantClient) 설치하기(HP-UX)
- directory copy 후 startup 에러
- 스토리지 클레스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함