DevOps/Kubernetes

[k8s]local kubectl로 remote cluster(GKE) 연결 시 자주 겪는 문제 - TimeServer Sync

Background

전날 하던 작업에 다시 동기화하거나, Cluster를 지웠다가 오랜시간이 자나면서 생기는 문제이다.

현재 내가 연결하고 있는 상황은 다음과 같다.

current local to gke

  • Local VM machine 위에서 gcloud SDK로 local에서 kubectl을 통해 Remote에 있는 GKE Cluster로 작업중이다.
  • Macbook 사양이 좋은 편이아니라, Control Plane외에 2개 이상의 Node가 올라가면 힘들어한다 ㅠㅠ


Problem

다음과 같은 log Message를 볼 수 있다.

$ k get node
Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2021-03-06T03:34:56+09:00 is before 2021-03-06T14:01:25Z

certificate(인증) 정보의 만료에 관한 Error 메시지 같지만,
자세히 보면 (Server의) current time현재 시간(Real Time)과 맞지 않다는 내용이다.


Solve

간단하게 해결가능하다. -> 서버의 시간을 재동기화

  1. 혹시 Timezone이 설정안되었을 경우도 있어서 재설정

     $ ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
  2. TimeServer 아무곳과 동기화를 한다.

    $ rdate -s bora.time.net
    # rdate 없으면 설치 `sudo apt-get install rdate
    • timeserver는 엄청 많으나 대표적으로,
      • time.bora.net
      • time.nuri.net
      • time.windows.com
      • ntp.kornet.net
      • time.nist.gov
  1. date 명령을 통해 현재 machine의 시간과 비교한다.
     $ date
     Sat Mar  6 23:07:11 KST 2021