쿠버네티스(Kubernetes) 를 운영하다가 새로운 Worker 노드를 추가할때에 kubeadm 명령어와 함께 join 옵션을 함께 쓴다. 이때 token 값과 hash 값을 줘야 하는데, 최초 설치할때에 값을 출력해주지만 시간이 지나서 잃어버리면 어떻게 해야 할까..
Token 확인
불행하게도 Token 값은 영구적이지 않다. 어디다 잘 적어놨어도 시간이 지나면 자동으로 폐기되도록 되어 있다.
Kubernetes Token 확인
ZSH
1
2
]$kubeadm token list
]$
아무것도 안나온다. 이는 자동 폐기 됐기 때문이다.
Token 생성
Token 값을 확인할 수 없다면 새로운 worker 노드를 추가할 수 없다. 아니, 정확하게는 Token 값을 이용해 추가할 수 없다. Token 값을 이용하기 위해서는 새로운 Token 값을 만들어 주면 된다.
Kubernetes API 서버는 http 를 통해서 쿠버네티스에 대한 연산을 제공해 준다. kubectl 명령어로 실행되는 것들은 모두 API 서버를 거쳐서 이루어진다. 하지만 API 서버는 인증서를 기반으로 통신이 이루어지는데, 이 인증서에 기재된 도메인이나 IP가 아니면 통신이 이루어지지 않는다.
19mWarning listen tcp4:30754:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istio-ingressgateway:status-port"(:30754/tcp4),skipping it
19mWarning listen tcp4:32315:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istio-ingressgateway:https"(:32315/tcp4),skipping it
19mWarning listen tcp4:31159:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istio-ingressgateway:tcp"(:31159/tcp4),skipping it
19mWarning listen tcp4:31078:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istio-ingressgateway:http2"(:31078/tcp4),skipping it
19mWarning listen tcp4:31384:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istio-ingressgateway:tls"(:31384/tcp4),skipping it
8m58sWarning listen tcp4:30051:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istiod:http-monitoring"(:30051/tcp4),skipping it
8m58sWarning listen tcp4:31601:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istiod:https-dns"(:31601/tcp4),skipping it
8m58sWarning listen tcp4:30751:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istiod:https-webhook"(:30751/tcp4),skipping it
8m58sWarning listen tcp4:30761:bind:address already inusenode/kworker3.systemv.localcan'topen port"nodePort for istio-system/istiod:grpc-xds"(:30761/tcp4),skipping it
Calico-kube-controllers 의 Pods 를 찾기 위해서 셀렉터 k8s-app: calico-kube-controllers 지정해 준다. 그리고 ServiceMonitor 에서 찾을 수 있도록 Labels 를 설정해 줬다.
Prometheus ServiceMonitor 생성
나는 프로메테우스를 Operator 로 설치했다. Prometheus-Operator 설치를 할 경우에 메트릭 수집은 ServiceMonitor 를 통해서 이루어진다. 이 ServiceMonitor 는 Prometheus 의 설정을 함께 적용하면서 동작한다. Prometheus 의 Scape 을 ServiceMonitor 가 대신하는 것이라고 생각하면 쉽다.