-
[k8s] 외부ip 변경시 바꿔야 할것Web 2022. 1. 12. 20:34
개발서버의 외부ip가 변경되어 쿠버네티스 동작이 안되었다.
현재 서버: k8s master1대, node2대, jenkins , nexus
해결법을 정리한다.
1. /etc/kubernets 내의 설정 파일들 중 이전 아이피를 신규 아이피로 변경
cd /etc/kubernetes oldip=118.129.153.122 newip=192.168.1.161 # 이전 아이피가 포함된 파일들을 조회한다. find . -type f | xargs grep $oldip # 이전 아이피를 신규 아이피로 바꾼다. find . -type f | xargs sed -i "s/$oldip/$newip/" # 정상적으로 다 바뀌었는지 확인. find . -type f | xargs grep $newip
2. 혹시 모르니 일단 인증서를 백업해둡니다.
# 백업 mkdir ~/k8s-old-pki cp -Rvf /etc/kubernetes/pki/* ~/k8s-old-pki
3. /etc/kubernetes/pki에 이전 아이피를 가지고 있는 인증서가 있는지 확인.
cd /etc/kubernetes/pki for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done grep -Rl $oldip . # 확인 되었다면 삭제 할까요? 어떤건지 알면 되니까요. for f in $(find -name "*.crt"); do rm $f.txt; done
4. kubectl에서 –server 값으로 사용할 신규 아이피를 kubernetes 란 호스트명으로 정의
vi /etc/hosts (newip) kubernetes # kubernetes는 본인이 사용할것으로 적으면 된다.
5. kube-system내 configmap에서 이전 아이피를 신규 아이피로 수정.
# configmap 파일 리스트를 조회한후, configmaps=$(kubectl --server=https://java-cd:6443 -n kube-system get cm -o name | \ awk '{print $1}' | \ cut -d '/' -f 2) # 일단 yaml파일로 다 생성해봅니다. dir=$(mktemp -d) for cf in $configmaps; do kubectl --server=https://java-cd:6443 -n kube-system get cm $cf -o yaml > $dir/$cf.yaml done # 어떤 친구들을 수정해야 하는지 확인합니다. grep -Hn $dir/* -e $oldip # 수정. 여기에 해당되는 친구들은 apiserver와 etcd-server 입니다.(물론 Case by case) # 참고로 전 수정안함 kubectl --server=https://java-cd:6443 -n kube-system edit cm kubeadm-config kubectl --server=https://java-cd:6443 -n kube-system edit cm kube-proxy ( server가 외부 ip로 되어있음 괜찮은가?)
6. 이전 단계에서 이전 아이피를 가진 친구들의 인증서를 삭제 후 재발급합니다.
# kubeadmin init phase certs {해당 어플리케이션명} rm apiserver.crt apiserver.key kubeadm init phase certs apiserver rm etcd/peer.crt etcd/peer.key kubeadm init phase certs etcd-peer rm etcd/server.crt etcd/server.key kubeadm init phase certs etcd-server
7. 자 kubelet과 docker를 리스타트하여 변경사항을 반영해봅시다. 처음엔 error가 한참 나겠지만 곧 복구를 하니 당황하지 말고 기다리시면 됩니다!
sudo systemctl restart kubelet sudo systemctl restart docker
8. 새로운 admin.conf를 내 계정으로 이동합니다.
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
9. 마지막으로 kube-public namespace에 있는 configmap중 cluster-info에서 아이피를 새로운 아이피로 수정하면 됩니다.
10. calico 재설치
11. node 1, node 2 join 실행
12. jenkins config파일 update
13. jenkins 인증쪽 변경
14. nexus 설정시 해당 설정도 변경
반응형'Web' 카테고리의 다른 글
[kubernetes] 인증서 갱신 쉽게 하는 방법 (2) 2022.02.11 [Maven] package install차이점 (0) 2021.11.29 [css] css 모음 (0) 2020.12.07 [vscode] 저장시 자동정렬 설정, prettier플러그인 (5) 2020.07.11 [프로젝트 환경설정] (0) 2019.08.09