티스토리 뷰
k8s에서 노드 모니터링 하는건 단순히 4가지인데 이는 아래와 같다
노드 컨디션
설명
Ready | 노드가 상태 양호하며 파드를 수용할 준비가 되어 있는 경우 True, 노드의 상태가 불량하여 파드를 수용하지 못할 경우 False, 그리고 노드 컨트롤러가 마지막 node-monitor-grace-period (기본값 40 기간 동안 노드로부터 응답을 받지 못한 경우) Unknown |
DiskPressure | 디스크 사이즈 상에 압박이 있는 경우, 즉 디스크 용량이 넉넉치 않은 경우 True, 반대의 경우 False |
MemoryPressure | 노드 메모리 상에 압박이 있는 경우, 즉 노드 메모리가 넉넉치 않은 경우 True, 반대의 경우 False |
PIDPressure | 프로세스 상에 압박이 있는 경우, 즉 노드 상에 많은 프로세스들이 존재하는 경우 True, 반대의 경우 False |
NetworkUnavailable | 노드에 대해 네트워크가 올바르게 구성되지 않은 경우 True, 반대의 경우 False |
위처럼 아주 제한적인 상황에서만 노드의 장애여부를 판단하고 스케쥴을 disable하며 이외의 경우는 아무것도 감지하지 못하고 파드를 스케쥴링 한다
NPD는 노드의 문제감지케이스를 크게 확장 시켜주는데 이는 아래와 같다
Problem Daemon Types
NodeCondition
Description
Configs
Disabling Build Tag
Problem Daemon Types
NodeCondition
Description
Configs
Disabling Build Tag
SystemLogMonitor | KernelDeadlock ReadonlyFilesystem FrequentKubeletRestart FrequentDockerRestart FrequentContainerdRestart | A system log monitor monitors system log and reports problems and metrics according to predefined rules. | filelog, kmsg, kernel abrt systemd | disable_system_log_monitor |
SystemStatsMonitor | None(Could be added in the future) | A system stats monitor for node-problem-detector to collect various health-related system stats as metrics. See the proposal here. | disable_system_stats_monitor | |
CustomPluginMonitor | On-demand(According to users configuration), existing example: NTPProblem | A custom plugin monitor for node-problem-detector to invoke and check various node problems with user-defined check scripts. See the proposal here. | example | disable_custom_plugin_monitor |
HealthChecker | KubeletUnhealthy ContainerRuntimeUnhealthy | A health checker for node-problem-detector to check kubelet and container runtime health. | kubelet docker |
커널의 deadlock감지, filesystem read-only감지(full check) 중요 프로세스의 리스타트 횟수등을 감지하여 노드의 장애 여부 판단할수 있는 케이스종류를 크게 늘려 준다
장애 상황이 많아지는대신 시스템은 안정되겠으나 관리의 포인트는 늘어날듯
주의사항으로는 node cordon이후 uncordon은 자동으로 되지 않음 한번 cordon되면 운영자가 확인하고 제거나 uncordon 수행해야함
'클라우드 > 쿠버네티스' 카테고리의 다른 글
cronjob의 타임존 설정 (0) | 2024.01.04 |
---|---|
무중단 배포를 위해 필요한 기술들 (0) | 2024.01.04 |
GitOps를 위한 Jenkins Pipeline 작성 (0) | 2022.07.14 |
Linkerd 배포시 인증서 지정 (0) | 2022.07.14 |
Github Webhook IP LIST(Jenkins 방화벽 허용) (0) | 2022.07.14 |