마스터 노드 서버를 k8s 그룹에서 제거하고 다시 가입
배경
1대의 마스터가 집단에 가입한 후 호스트 이름을 수정하는 것을 잊어버렸고 k8s 집단에서 노드 호스트 이름을 수정하는 것은 매우 번거롭기 때문에 마스터를 집단에서 탈퇴하고 이름을 바꾸고 다시 집단에 가입하는 것이 낫다(전제는 고가용 집단을 사용한다).
작업 단계
ssh는 다른 마스터 노드에 로그인하여 이름을 바꿀 마스터 노드를 그룹으로 이동합니다.
kubectl drain blog-k8s-n0
kubectl delete node blog-k8s-n0
그룹이 종료된 마스터 서버에 로그인하여 쿠블렛 설정을 재설정하고 그룹에 다시 가입합니다.
kubeadm reset
kubeadm join k8s-api:6443 --token ****** \
--discovery-token-ca-cert-hash ****** \
--control-plane --certificate-key ****** \
--v=5
가입 실패, 오류 정보는 다음과 같습니다.
I0109 21:26:48.440711 3893 etcd.go:107] etcd endpoints read from pods: https://10.0.1.81:2379,https://10.0.1.32:2379,https://10.0.1.33:2379
I0109 21:26:48.455921 3893 etcd.go:166] etcd endpoints read from etcd: https://10.0.1.81:2379,https://10.0.1.32:2379,https://10.0.1.33:2379
I0109 21:26:48.455975 3893 etcd.go:125] update etcd endpoints: https://10.0.1.81:2379,https://10.0.1.32:2379,https://10.0.1.33:2379
I0109 21:27:08.469938 3893 etcd.go:388] Failed to get etcd status for https://10.0.1.81:2379: failed to dial endpoint https://10.0.1.81:2379 with maintenance client: context deadline exceeded
failed to dial endpoint https://10.0.1.81:2379 with maintenance client: context deadline exceeded
etcd cluster is not healthy
오류 정보를 보면 etcd 집단은 10.0.1.81이 k8s 집단에서 탈퇴한 것을 알 수 없습니다. etcd 집단에는 10.0.1.81의 정보가 저장되어 있기 때문에 가입할 때 10.0.1.81을 연결하는 데 실패했습니다.
그 중 정상적인 마스터에 로그인하여 etcd 용기에 들어갑니다.
docker exec -it $(docker ps -f name=etcd_etcd -q) /bin/sh
etcd 집단의 구성원 목록을 보십시오. 과연 집단에서 탈퇴한 서버가 있습니다blog-k8s-n0
$ etcdctl --endpoints 127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member list
12637f5ec2bd02b8, started, blog-k8s-n0, https://10.0.1.81:2380, https://10.0.1.81:2379, false
17d58f8d29164d23, started, k8s-master1, https://10.0.1.32:2380, https://10.0.1.32:2379, false
19441808830db070, started, k8s-master2, https://10.0.1.33:2380, https://10.0.1.33:2379, false
용기에서 이 서버를 etcd 그룹에서 제거합니다
etcdctl --endpoints 127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member remove 12637f5ec2bd02b8
제거하기 전에 그룹을 종료한 서버는 그룹에 성공적으로 가입할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.