K3s 인증서 유효 기간은 1년이다. K3s 서비스를 재시작하면 만료 혹은 90일 이내로 남은 인증서가 업데이트된다.
kubectl 사용시 다음과 같은 에러가 발생했는데 인증서 이슈였다. kubeconfig의 cert가 유효하지 않아 나는 에러이다.
$ kubectl get po
error: You must be logged in to the server (Unauthorized)
자세한 로그는 k3s 서비스 로그를 확인하자.
# master node
$ sudo systemctl status k3s
K3s 인증서 업데이트
1. 인증서 만료일 확인
openssl s_client -connect localhost:6443 -showcerts < /dev/null 2>&1 | openssl x509 -noout -enddate
2. 기존 tls 백업
sudo cp -r /var/lib/rancher/k3s/server/tls /var/lib/rancher/k3s/server/tls_backup
3. dynamic-cert.json 파일 삭제
sudo rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json
4. 기존 인증서 secret 삭제
sudo kubectl --insecure-skip-tls-verify=true delete secret -n kube-system k3s-serving
5. k3s 서비스 재시작 (인증서 업데이트)
sudo systemctl restart k3s
k3s kubeconfig 확인
cat /etc/rancher/k3s/config.yaml
해당 에러가 해결되어 이슈가 해결된 줄 알았으나 k8s service간 통신이 안되기 시작했다.
다른 서비스로 dns 요청도 서비스 ClusterIP를 통한 요청도 다 커넥션이 안되서 이게 대체 어느쪽 네트워크 이슈인가.. 했는데 k3s 로그를 보니 다른 노드와 통신이 안되는 듯 했다.
$ sudo systemctl status k3s
...
k3s[11052]: time="2023-04-24T17:12:08.258729588+09:00" level=error msg="Failed to authenticate request from <worker node IP>:<port>: invalid username/password combination"
k3s[11052]: E0424 17:12:09.423109 11052 authentication.go:53] Unable to authenticate the request due to an error: x509: certificate has expired or is not yet valid: current time 2023-04-24T17:24:58+09:00 is after 2023-04-22T08:41:28Z
그리고 인증서 업데이트가 되었는데 만료된 인증서라고..
아무래도 worker node의 agent엔 인증서 반영이 안된 듯 했다.
worker node의 k3s-agent 재시작
# worker node
$ systemctl restart k3s-agent
해결..
kubeadm을 주로 사용하다보니 k3s 이슈가 생기면 당황스럽다ㅎㅎ
'DevOps > Kubernetes' 카테고리의 다른 글
K8s PLG Stack (Promtail + Loki + Grafana) (0) | 2023.04.23 |
---|---|
[CKA] CKA 합격 후기 (2021.12 - kubernetes v1.21) (12) | 2021.12.25 |
[CKA] CKA 자격증 준비 자료 정리 8 (Networking) (0) | 2021.12.22 |
[CKA] CKA 자격증 준비 자료 정리 7 (Storage) (0) | 2021.12.18 |
[CKA] CKA 자격증 준비 자료 정리 6 (Security) (0) | 2021.12.16 |