파괴 된 kubeadm 마스터 복원
Dec 30 2020
kubeadm 1.20을 사용하여 1-master 2-workers kubernetes 클러스터를 만들고 etcd를 백업했습니다. 클러스터를 실행 상태로 되 돌리는 방법을 테스트하기 위해 일부러 마스터를 파괴했습니다.
Kubernetes version: 1.20
Installation method: kubeadm
Host OS: windows 10 pro
Guest OS: ubuntu 18 on virtual box 6
CNI and version: weave-net
CRI and version: docker 19
내가 마스터를 파괴하기 전에 만든 비밀이 etcd 복원 후에 보이기 때문에 부분적으로 성공하여 그 부분이 작동하는 것처럼 보입니다.
그러나 coredns 포드는 coredns 포드의 로그를 기반으로 api 서버에 요청을 할 권한이 없습니다.
[INFO] plugin/ready: Still waiting on: "kubernetes"
E1229 21:42:25.892580 1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Namespace: Unauthorized
E1229 21:42:29.680620 1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Endpoints: Unauthorized
[INFO] plugin/ready: Still waiting on: "kubernetes"
E1229 21:42:39.492521 1 reflector.go:178] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:125: Failed to list *v1.Service: Unauthorized
나는 그것이 서비스 계정 토큰과 관련이 있다고 생각하므로 etcd db 교체 후 pod가 api-server에 인증하도록 인증하는 단계가 누락되었습니다.
내가 무엇을 놓치고 있습니까?
답변
2 coderanger Dec 30 2020 at 13:38
Etcd의 내용 만 백업 한 경우 kubeadm은 ServiceAccount JWT에 서명하는 데 사용되는 새 인증서를 생성했을 것입니다. 오래된 토큰은 더 이상 확인되지 않습니다. 이것은 일반적으로 일상적인 유지 관리 중에 수행되지 않기 때문에 SA 컨트롤러가 토큰을 재발급하는 것을 알지 못한다고 생각합니다. 기본 비밀을 모두 삭제하면 재발행해야합니다.