개발자가 되고 싶은 준개발자

[rke] rke up 실패 해결 방법 본문

트러블 슈팅/rancher

[rke] rke up 실패 해결 방법

준개발자 2021. 6. 8. 09:25

현상

Ha deployment failed · Issue #21926 · rancher/rancher (github.com)

 

Ha deployment failed · Issue #21926 · rancher/rancher

use rke up --config rancher-cluster.yml etcd logs:2019-08-01 11:17:54.301389 I | embed: rejected connection from "192.168.3.2:60362" (error "tls: failed to verify client's certif...

github.com

RKE 설정을 완료하고 rke up 명령어를 날렸는데 명령어가 위의 github 이슈처럼 실패한다..

실패하는 이유는 대부분 rke up 설정을 여러번 날릴 때 이전 rke 설정이 남아있어서라고 한다. ('Re-using RKE provisioned K8S nodes is not as simple as just stopping all the containers')

그래서 이전 노드의 설정을 clean up 해야 한다.

 

해결 방법

먼저 'rke remove --config 컨피그파일명'을 한다. 그러면 rke 에서 설정(kube_config_rancher-ha-cluster.yml, rancher-ha-cluster.rkestate 파일과 노드들의 설정을 일부)을 지워 준다.

그 후에 아래 명령어로 타겟 서버에 가서 노드들을 clean up 한다.

(타겟노도의 docker ps를 죽이지 않으면 port가 사용중이라 rke up 중간에 막힌다... )

docker stop $(docker ps -aq)
docker system prune -f
docker volume rm $(docker volume ls -q)
docker image rm $(docker image ls -q)
rm -rf /etc/ceph \
       /etc/cni \
       /etc/kubernetes \
       /opt/cni \
       /opt/rke \
       /run/secrets/kubernetes.io \
       /run/calico \
       /run/flannel \
       /var/lib/calico \
       /var/lib/etcd \
       /var/lib/cni \
       /var/lib/kubelet \
       /var/lib/rancher/rke/log \
       /var/log/containers \
       /var/log/pods \
       /var/run/calico

위에 명령어를 실행하면 /var/lilb/kubelet이 아직 사용중이라 삭제가 안된다...

rm: cannot remove `/var/lib/kubelet/pods/f3520b46-227a-4cc4-b995-1f3fbad30cd0/volumes/kubernetes.io~secret/coredns-token-v42mx': 장치나 자원이 동작 중
rm: cannot remove `/var/lib/kubelet/pods/3e98fc5b-3444-452e-9b71-d98338483235/volumes/kubernetes.io~secret/coredns-autoscaler-token-zlpbw': 장치나 자원이 동작 중
rm: cannot remove `/var/lib/kubelet/pods/d35258d9-c961-452e-b456-6b1b0a4e5e55/volumes/kubernetes.io~secret/canal-token-znccr': 장치나 자원이 동작 중
rm: cannot remove `/var/lib/kubelet/pods/b3e2fd5e-f24e-4a8f-b8e0-cd3534ff2d3b/volumes/kubernetes.io~secret/nginx-ingress-serviceaccount-token-lvdxk': 장치나 자원이 동작 중
rm: cannot remove `/var/lib/kubelet/pods/c0e57769-b09d-425d-a68a-c3920142a188/volumes/kubernetes.io~secret/calico-kube-controllers-token-tcfgt': 장치나 자원이 동작 중

그럴 때는 하나씩 unmount하면 된다...!

sudo umount /var/lib/kubelet/pods/f3520b46-227a-4cc4-b995-1f3fbad30cd0/volumes/kubernetes.io~secret/coredns-token-v42mx

아니면 아래 스크립트로 해보자.

for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do sudo umount $mount; done

 

Rancher Node clean up 하는 방법(공식 문서)

Rancher Docs: Removing Kubernetes Components from Nodes