Troubleshooting 2026.08.09 5 min read

RKE2 Agent의 인증서 만료 경고가 실제 만료가 아니었던 이유

RKE2 Agent에 반복된 인증서 경고를 추적했다. 활성 인증서는 정상이었고 과거 Server 디렉터리가 원인이어서 백업 이동 후 Agent만 재시작했다.

Rancher에 여러 인증서 만료 경고가 표시됐다

RKE2 v1.33.5 Cluster에서 CertificateExpirationWarning Event가 반복됐다. 목록에는 다음처럼 Control Plane과 etcd에서 사용하는 인증서가 포함돼 있었다.

  • client-admin.crt
  • client-kube-apiserver.crt
  • kube-scheduler.crt
  • kube-controller-manager.crt
  • etcd/client.crt

목록에는 Control Plane 인증서가 여러 개 보여 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를 정리했다. 인증서 경고의 원인을 처리한 뒤 남은 알림 기록을 지운 순서다.

해결 후 검증

다시 인증서를 확인하자 다음 메시지와 함께 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년까지 유효해 교체할 이유가 없었다. Cluster 신뢰 체인을 바꾸는 rke2 certificate rotate-ca는 실행하지 않았다.

Agent 디렉터리 삭제

/var/lib/rancher/rke2/agent는 현재 Agent가 사용하는 경로다. 이 디렉터리를 건드리면 Node 재등록과 인증 문제가 생길 수 있다.

다른 Node 인증서 복사

Node 인증서에는 신원 정보가 포함된다. 다른 Node의 인증서를 복사하는 방식은 사용하지 않았다.

Event만 삭제

원인을 남긴 채 Event만 지우면 Monitor가 같은 경고를 다시 만든다.

이번 장애의 핵심

이번에는 현재 역할과 실행 중인 프로세스가 해당 인증서를 사용하는지 확인한 뒤 조치 범위를 정했다.

Event 대상 Node 확인
  → Server/Agent 역할 확인
  → CA와 Leaf 인증서 구분
  → 실제 파일 경로와 사용 프로세스 확인
  → 잔여 데이터는 삭제 전 백업 이동
  → 해당 역할 Service만 재시작
  → Node·인증서·Event 함께 검증

전체 인증서를 회전하지 않고, 해당 Agent에 남아 있던 과거 Server 디렉터리만 정리해 경고를 해소했다.

SEARCH JOURNAL

기록 검색

글 제목, 요약, 태그에서 찾습니다.

검색을 준비하고 있어요.

검색어를 입력해 주세요.

    Ctrl/⌘ K 검색 Esc 닫기 ↑ ↓ 결과 이동