[Kubernetes] TS: SANS IP 추가하기 - ssh tunneling

leehs·2023년 1월 11일
0

kubernetes

목록 보기
3/7

Kubernetes cert sans 추가하기

cert SANS 내용에서 127.0.0.1 을 빠뜨렸다. kubeadm init 할 때 만들어지는 인증서다.
kubernetes api를 ssh 터널링을 통해 사용하고 있어서 127.0.0.1이 필요하다.
kubeadm 명령어는 kubeadm 진행 중간 과정만 다시 재현할 수 있다고 한다.

나는 급하다

mkdir -p /etc/kubernetes/pki/back
mv /etc/kubernetes/pki/apiserver.* /etc/kubernetes/pki/back/

ADD_IP="127.0.0.1"
kubeadm init phase certs all --apiserver-advertise-address=0.0.0.0 --apiserver-cert-extra-sans=${ADD_IP}
docker rm -f `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet

나는 급하지 않다

아래와 같이 실행하면 되는데,
실행 전에 꼭 /etc/kubernetes/pki/apiserver.* 파일들을 백업 및 이동해야 한다.

ls -al /etc/kubernetes/pki/
mv /etc/kubernetes/pki/apiserver.* ./

ADD_IP="127.0.0.1"
kubeadm init phase certs apiserver --apiserver-cert-extra-sans ${ADD_IP}

만약 NIC가 여러개라서 아래와 같은 에러가 나면,

[root@localhost yaml]# kubeadm init phase certs apiserver --config kubeadm-conf.yaml
W0111 02:54:34.449187   26018 common.go:148] WARNING: could not obtain a bind address for the API Server: no default routes found in "/proc/net/route" or "/proc/net/ipv6_route"; using: 0.0.0.0
W0111 02:54:34.657445   26018 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
cannot use "0.0.0.0" as the bind address for the API Server

IP를 지정해준다

kubeadm --v=5 init phase certs apiserver --apiserver-cert-extra-sans "127.0.0.1" --apiserver-advertise-address=100.100.100.210

다시 /etc/kubernetes/pki/ 위치를 확인해보면 인증서가 생성되어 있다.
아래 명령어로 넣으려던 IP가 추가되었는지 확인하자.

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text

확실하게 apiserver와 kubelet 을 재시작한다.

docker rm `docker ps -q -f 'name=k8s_kube-apiserver*'`
systemctl restart kubelet

Ref

https://stackoverflow.com/questions/46360361/invalid-x509-certificate-for-kubernetes-master

0개의 댓글