Kubernetes 클러스터를 운영하다 보면 예상치 못한 시스템 오류나 네트워크 문제를 마주칠 때가 있습니다. 그중에서도 시간 동기화 문제, 특히 Control Plane과 Worker Node 간 NTP 불일치는 흔히 간과되지만 매우 치명적인 장애 요인이 될 수 있습니다.
이 글에서는 **NTP(Network Time Protocol)**의 개념을 간단히 소개한 후, Kubernetes 환경에서 시계가 불일치할 때 발생할 수 있는 문제점과 Worker Node에서의 시간 동기화 설정 방법까지 차근차근 설명드리겠습니다.
목 차
1. NTP란 무엇인가요?
2. Kubernetes에서 NTP 불일치 시 발생하는 문제
3. Worker Node에서 NTP를 설정하는 방법
4. 요약
1. NTP란 무엇인가요?
NTP(Network Time Protocol)는 컴퓨터 시스템 간에 시간을 정확히 맞추기 위해 사용하는 표준 프로토콜입니다.
인터넷 상의 공인 시간 서버 또는 로컬의 Stratum-1 서버를 기준으로 장비의 시계를 자동으로 보정합니다.
시간이 중요한 이유는, 분산 시스템인 Kubernetes에서는 로그 기록, 인증서 유효성 검증, API 서버의 클러스터 상태 결정 등 모든 동작이 정확한 시각을 전제로 작동하기 때문입니다.
따라서 클러스터를 구성하는 Control Plane과 Worker Node 간 시계가 다르면 다양한 문제가 발생할 수 있습니다.
2. Kubernetes에서 NTP 불일치 시 발생하는 문제
Control Plane과 Worker Node 간 시간이 불일치하면 다음과 같은 문제가 발생할 수 있습니다:
(1) etcd 리더 선출 오류
Kubernetes의 etcd는 Raft consensus 알고리즘을 통해 리더를 선출하는데, 시간 차이가 크면 리더가 반복적으로 바뀌는 Election Storm이 발생하여 API 서버가 응답하지 않거나 클러스터 상태가 불안정해집니다.
(2) 인증서 유효성 검증 실패
TLS 인증서에는 NotBefore, NotAfter와 같은 유효 기간이 포함됩니다. 시간이 맞지 않으면 CoreDNS, Kubelet, 컨트롤러 간의 mTLS 인증이 실패하면서 노드가 NotReady 상태로 전환될 수 있습니다.
(3) 노드 Heartbeat 오류
Kubelet은 주기적으로 Control Plane에 자신의 상태를 보고합니다. 이때 타임스탬프가 역전되면 노드 상태가 Unknown로 판단되어 불필요한 Pod 재스케줄링이 발생합니다.
(4) 예약 작업/오토스케일 실패
CronJob, Horizontal Pod Autoscaler, TTL Controller 등 시간 기반으로 작동하는 기능들이 오작동하여 작업이 누락되거나 중복 실행, 자원 낭비가 일어날 수 있습니다.
(5) 로그/모니터링 타임라인 왜곡
로그 수집 시스템(예: ELK, Loki, Prometheus 등)은 타임스탬프를 기준으로 데이터를 처리합니다. 시계가 맞지 않으면 장애 추적이 어려워지고 경고(Alert)가 잘못 발생할 수 있습니다.
3. Worker Node에서 NTP를 설정하는 방법
Worker Node의 시간이 맞지 않을 경우, 일반적으로 chrony를 사용하여 NTP 설정을 수행합니다. SSH로 직접 접속이 어려운 환경에서는 Ansible, DaemonSet, 또는 cloud-init 등을 활용할 수도 있습니다.
(1) chrony 설치 및 기본 설정
sudo apt update && sudo apt install -y chrony
/etc/chrony/chrony.conf 파일을 수정하여 신뢰할 수 있는 NTP 서버를 지정합니다.
server time.google.com iburst
server time.cloudflare.com iburst
server ntp.kakao.com iburst
makestep 1.0 3
maxslewrate 1000
- iburst: 빠른 초기 동기화
- makestep: 시간 차가 크면 즉시 보정
- maxslewrate: 초당 보정 속도 제한
(2) chrony 서비스 재시작 및 상태 확인
sudo systemctl restart chrony
chronyc tracking
chronyc sources
시간 오차(offset)가 0.5초 이내인지 확인합니다.
이보다 크면 Kubernetes 구성 요소의 인증, 이벤트 타이밍 등에 영향을 줄 수 있습니다.
4. 요약
- NTP(Network Time Protocol)는 Kubernetes 클러스터에서 필수적인 요소입니다. Control Plane과 Worker 간 시간 차이는 클러스터 전체 가용성에 직접적인 영향을 줍니다.
- 특히 etcd 선출, TLS 인증, CronJob 동작, 로그 정렬 등 핵심 기능들이 시계에 의존하므로, 항상 시간을 정확히 맞추는 것이 중요합니다.
- Worker Node에서는 chrony를 이용해 신뢰할 수 있는 NTP 서버와 정기 동기화를 설정해야 하며, 최소한 0.5초 이내로 유지하는 것이 바람직합니다.
'쿠버네티스' 카테고리의 다른 글
| k8s Pod의 Resource Request와 Limit 측정 방법 (1) | 2025.06.12 |
|---|---|
| Kubernetes에서 노드 삭제 시 발생하는 서비스 지연 현상 (0) | 2025.04.14 |
| CoreDNS 운영 Best Practice 8가지 (0) | 2025.04.14 |
| Kubernetes에서 L7 Load Balancer와 Ingress Controller로 SSL Offloading 설정하는 방법 (0) | 2025.04.04 |
| pause image 총 정리 - failed to pull image "registry.k8s.io/pause:3.9" (0) | 2025.04.02 |