Kubernetes에서 보안 통신을 위해 TLS 및 인증서를 사용합니다.
하지만 잘못된 인증서, 만료된 인증서, CA 신뢰 문제 등의 이유로 TLS 관련 오류가 발생할 수 있습니다.
이 글에서는 Kubernetes 환경에서 발생할 수 있는 대표적인 TLS 및 인증서 문제 5가지를 정리하고, 각각의 원인과 해결 방법을 설명합니다. 🚀
1️⃣ “unable to connect to server: x509: certificate signed by unknown authority”
🔎 오류 설명
이 오류는 클라이언트가 API 서버의 인증서를 신뢰하지 않을 때 발생합니다.
보통 CA 인증서가 잘못되었거나, 클러스터의 kubeconfig 파일이 올바르게 설정되지 않은 경우입니다.
🔧 해결 방법
1) 현재 클러스터의 인증서 확인
API 서버의 인증서 정보를 확인합니다..
kubectl config view --raw | grep certificate-authority
2) CA 인증서가 올바르게 설치되었는지 확인
CA 인증서가 손상되었거나 누락되었는지 확인합니다.
ls -l /etc/kubernetes/pki/ca.crt
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text
3) 클러스터의 kubeconfig 업데이트
CA 인증서를 다시 설정하여 kubeconfig를 업데이트합니다..
kubectl config set-cluster <cluster-name> --certificate-authority=/etc/kubernetes/pki/ca.crt
2️⃣ “certificate has expired or is not yet valid”
🔎 오류 설명
이 오류는 Kubernetes에서 사용하는 인증서가 만료되었거나, 시스템 시간이 올바르지 않을 때 발생합니다.
🔧 해결 방법
1) 인증서 만료 날짜 확인
현재 사용 중인 인증서의 만료일을 확인합니다.
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate
2) 시스템 시간 동기화
노드의 시스템 시간이 올바르게 설정되었는지 확인합니다.
date
timedatectl status
시간이 맞지 않다면 NTP 서버를 사용하여 동기화합니다.
sudo timedatectl set-ntp on
3) 만료된 인증서 갱신
만약 인증서가 만료되었다면, Kubernetes의 인증서를 갱신합니다.
kubeadm certs renew all
systemctl restart kubelet
갱신된 인증서를 다시 확인합니다.
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -enddate
3️⃣ “tls: bad certificate”
🔎 오류 설명
이 오류는 클라이언트가 제공한 인증서가 유효하지 않거나, 서버에서 허용되지 않는 인증서를 사용할 때 발생합니다.
🔧 해결 방법
1) 클라이언트 인증서 확인
클라이언트 인증서가 올바르게 설정되었는지 확인합니다.
kubectl config view --raw | grep client-certificate
인증서가 손상되었거나 누락되었을 경우, 다시 설정해야 합니다.
openssl x509 -in ~/.kube/client.crt -noout -text
2) 클라이언트 인증서 갱신
클라이언트 인증서를 새로 발급하려면 다음을 실행합니다.
kubeadm certs renew apiserver-kubelet-client
3) API 서버의 인증서 허용 설정 확인
API 서버에서 클라이언트 인증서를 신뢰하는지 확인합니다.
kubectl get csr
인증서를 승인하려면 다음 명령어를 사용합니다.
kubectl certificate approve <csr-name>
4️⃣ “tls: failed to verify certificate: x509: certificate is valid for X, not Y”
🔎 오류 설명
이 오류는 서버의 인증서가 특정 도메인 또는 IP 주소에 대해 유효하지 않을 때 발생합니다.
즉, API 서버의 인증서가 기대하는 호스트 이름과 다를 경우 나타납니다.
🔧 해결 방법
1) API 서버의 SAN(Subject Alternative Name) 확인
API 서버 인증서의 유효한 도메인을 확인합니다.
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "DNS:"
2) kube-apiserver 설정 확인
/etc/kubernetes/manifests/kube-apiserver.yaml 파일을 열어 --apiserver-cert-extra-sans 옵션을 확인합니다.
spec:
containers:
- name: kube-apiserver
command:
- --apiserver-cert-extra-sans=<your-domain>
3) 인증서 갱신
API 서버의 SAN 정보를 변경한 후 인증서를 다시 생성합니다.
kubeadm certs renew apiserver
systemctl restart kubelet
5️⃣ “x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error")”
🔎 오류 설명
이 오류는 클라이언트 또는 서버에서 잘못된 CA 인증서를 사용할 때 발생합니다.
🔧 해결 방법
1) 사용 중인 CA 인증서 확인
CA 인증서가 올바르게 설정되었는지 확인합니다.
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text
2) 클라이언트가 올바른 CA 인증서를 사용하고 있는지 확인
kubeconfig 파일에서 참조하는 CA 인증서를 확인합니다.
kubectl config view --raw | grep certificate-authority
3) 잘못된 인증서 교체
올바른 CA 인증서로 kubeconfig를 업데이트합니다.
kubectl config set-cluster <cluster-name> --certificate-authority=/etc/kubernetes/pki/ca.crt
4) CA 인증서를 수동으로 추가
만약 인증서가 시스템에서 신뢰되지 않는다면, 수동으로 추가합니다.
sudo cp /etc/kubernetes/pki/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
🎯 마무리
이 글에서는 Kubernetes에서 자주 발생하는 TLS 및 인증서 문제 5가지와 그 해결 방법을 다뤘습니다.
✔️ API 서버 인증서 신뢰 오류 (unable to connect to server: x509: certificate signed by unknown authority)
✔️ 만료된 인증서 오류 (certificate has expired or is not yet valid)
✔️ 잘못된 클라이언트 인증서 오류 (tls: bad certificate)
✔️ SAN 불일치 오류 (tls: failed to verify certificate: x509: certificate is valid for X, not Y)
✔️ 잘못된 CA 인증서 오류 (x509: certificate signed by unknown authority - crypto/rsa: verification error)
만약 위 해결 방법으로도 문제가 해결되지 않는다면,
kubectl config view, openssl x509 -in .crt -noout -text, kubeadm certs renew 명령어 등을 활용하여 추가로 분석해보는 것이 좋습니다.
'Kubernetes > Trouble Shooting' 카테고리의 다른 글
🛠️ K8S Trouble Shooting : 기타 일반적인 Kubernetes 오류 해결하기 (0) | 2025.03.02 |
---|---|
🛠️ K8S Trouble Shooting : 네임스페이스 및 설정 오류 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : 리소스 제약 및 스케줄링 오류 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : Persistent Volume(스토리지) 관련 오류 해결하기 (0) | 2025.03.02 |
🛠️ K8S Trouble Shooting : RBAC 및 인증 관련 오류 해결하기 (0) | 2025.03.02 |