RKE2 Agent의 인증서 만료 경고가 실제 만료가 아니었던 이유
Rancher의 인증서 만료 경고가 활성 Agent 인증서가 아니라 과거 Server 데이터에 남은 인증서에서 발생한 사실을 확인하고 안전하게 정리한 과정을 기록했습니다.
Rancher에 여러 인증서 만료 경고가 표시됐다
RKE2 v1.33.5 Cluster에서 CertificateExpirationWarning Event가 반복됐다. 목록에는 다음처럼 Control Plane과 etcd에서 사용하는 인증서가 포함돼 있었다.
client-admin.crtclient-kube-apiserver.crtkube-scheduler.crtkube-controller-manager.crtetcd/client.crt
처음 보면 Cluster 전체의 핵심 인증서가 곧 만료되는 것처럼 보인다. 하지만 Event의 실제 대상은 On-premise Agent Node 하나였다.
kubectl get events -A \
--field-selector reason=CertificateExpirationWarning \
-o wide
반복 Count가 419까지 증가해 화면에서는 더 큰 문제처럼 보였지만, 먼저 대상 Node와 현재 역할을 확인했다.
Agent Node에 Server 인증서가 나타난 이유
대상 Node의 Service 상태는 다음과 같았다.
rke2-agent: enabled, active
rke2-server: disabled, inactive
Agent Node는 kubelet, kube-proxy와 RKE2 Controller Client 인증서를 사용한다. kube-apiserver, etcd, scheduler와 controller-manager 인증서는 필요하지 않다.
각 Node에서 rke2 certificate check --output=table을 실행한 결과도 달랐다.
| 범위 | 상태 |
|---|---|
| 3개 Server Node 활성 인증서 | 정상, 대부분 2027년 만료 |
| 다른 Agent Node 활성 인증서 | 정상 |
| 대상 Node의 활성 Agent 인증서 | 정상, 2027-08-07 만료 |
| Cluster CA | 정상, 2035-10-02 만료 |
| 대상 Node의 과거 Server 인증서 | 2026-10-06 만료 경고 |
실제로 갱신해야 할 활성 인증서와 CA는 없었다.
데이터 디렉터리에서 찾은 단서
현재 Agent로 운영 중인 Node에는 약 10개월 전에 생성된 Server 디렉터리를 정리하지 않고 남겨둔 상태였다.
/var/lib/rancher/rke2/agent 2026-05-29
/var/lib/rancher/rke2/server 2025-10-06
/var/lib/rancher/rke2/server/tls 2025-10-06
경고에 나온 파일은 모두 /var/lib/rancher/rke2/server/tls/ 아래에 있었다. lsof +D로 확인했지만 현재 실행 중인 프로세스가 이 경로를 사용하고 있지 않았다.
파일 생성 시각과 설치 이력을 기준으로, 과거 이 Node를 Server로 초기화했거나 Server Component를 잠시 실행했을 때 남은 데이터로 판단했다.
근본 원인
현재 역할은 RKE2 Agent
→ 과거 Server 데이터 디렉터리 잔존
→ 인증서 Monitor가 Agent와 Server 인증서를 함께 발견
→ 사용하지 않는 Server 인증서가 120일 임계값 진입
→ CertificateExpirationWarning 반복
RKE2는 만료됐거나 만료까지 120일 이내인 활성 Leaf 인증서를 Service 시작 시 자동 갱신한다. 하지만 Agent Service를 재시작해도 사용하지 않는 Server 인증서는 갱신되지 않는다. 이전 재시작 후 경고가 다시 나타난 이유였다.
삭제 대신 백업 이동
문제 디렉터리를 바로 삭제하지 않았다. 현재 사용 여부 판단이 틀렸을 때 되돌릴 수 있도록 이름을 변경했다.
stamp=$(date -u +%Y%m%dT%H%M%SZ)
mv /var/lib/rancher/rke2/server \
"/var/lib/rancher/rke2/server.stale-${stamp}"
그다음 Agent만 재시작했다.
systemctl restart rke2-agent
systemctl is-active rke2-agent
새 경고가 생성되지 않는 것을 확인한 뒤 Rancher 화면에 남은 과거 Event를 정리했다. Event 삭제는 인증서 해결 작업이 아니라 이미 종료된 알림 기록을 지운 것이다.
해결 후 검증
다시 인증서를 확인하자 다음 메시지와 함께 Agent 인증서만 표시됐다.
Agent detected, checking agent certificates
client-kube-proxy, client-kubelet, serving-kubelet, client-rke2-controller는 모두 2027년 만료로 정상 상태였다.
추가로 세 가지를 함께 확인했다.
kubectl get nodes
rke2 certificate check --output=table
kubectl get events -A --field-selector reason=CertificateExpirationWarning
최종적으로 5개 Node가 모두 Ready였고 인증서 경고 Event는 남지 않았다.
하지 않은 작업
CA 회전
CA는 2035년까지 유효했다. rke2 certificate rotate-ca는 Cluster 신뢰 체인을 바꾸는 고위험 작업이므로 일반 경고를 없애기 위해 실행하지 않았다.
Agent 디렉터리 삭제
/var/lib/rancher/rke2/agent는 현재 Agent가 사용하는 경로다. 이 디렉터리를 건드리면 Node 재등록과 인증 문제가 생길 수 있다.
다른 Node 인증서 복사
Node 인증서에는 신원 정보가 포함된다. 다른 Node의 인증서를 복사하는 방식은 사용하지 않았다.
Event만 삭제
원인을 남긴 채 Event만 지우면 Monitor가 같은 경고를 다시 만든다.
이번 장애의 핵심
인증서 경고에서는 만료 날짜만 볼 것이 아니라 현재 어떤 역할과 프로세스가 그 인증서를 실제로 사용하는지 확인해야 한다.
Event 대상 Node 확인
→ Server/Agent 역할 확인
→ CA와 Leaf 인증서 구분
→ 실제 파일 경로와 사용 프로세스 확인
→ 잔여 데이터는 삭제 전 백업 이동
→ 해당 역할 Service만 재시작
→ Node·인증서·Event 함께 검증
화면에 많은 경고가 보이더라도 먼저 범위를 좁히면 불필요한 Cluster 전체 인증서 회전을 피할 수 있다.