InfoGrab DocsInfoGrab Docs

쿠버네티스 접근 문제 해결

쿠버네티스 접근과 관련된 일반적인 문제 해결 방법

이 페이지에서는 쿠버네티스에서 발생하는 일반적인 문제와 이를 우회하거나 해결하는 방법을 설명합니다. 에이전트가 "no authorities for hostname" 오류로 클러스터에 조인하지 못하는 경우 # 증상 # 에이전트가 재시작 후 Teleport 클러스터에 다시 조인하지 못하고 다음과 유사한 오류를 보고합니다: ssh: handshake failed: ssh: no authorities for hostname 설명 # Teleport는 각 컴포넌트의 인증서에 서명하기 위해 인증 기관(CA)을 사용합니다. 컴포넌트가 클러스터에 처음 조인할 때, 클러스터의 CA가 서명한 인증서를 발급받아 상태 디렉터리에 저장합니다. 컴포넌트가 재시작되면 상태 디렉터리에 저장된 인증서를 사용해 클러스터에 다시 조인합니다. 이 오류는 컴포넌트가 Teleport 클러스터에 다시 조인하려 할 때, 클러스터의 CA가 변경되어 컴포넌트의 인증서가 더 이상 유효하지 않을 때 발생합니다. 이는 클러스터의 CA가 순환(rotate)되거나 클러스터가 재생성 또는 이름이 변경될 때 발생할 수 있습니다. 해결 방법 # 에이전트가 새 인증서를 요청하고 클러스터에 다시 조인할 수 있도록 에이전트의 상태를 초기화해야 합니다. 에이전트의 상태를 삭제하는 절차는 에이전트가 쿠버네티스 내부에서 실행 중인지 외부에서 실행 중인지에 따라 다릅니다. 쿠버네티스 외부에서 실행 중인 에이전트 (단독 실행) # 에이전트가 쿠버네티스 외부에서 실행 중인 경우, 상태 디렉터리는 기본적으로 /var/lib/teleport/proc 에 위치합니다. 다음 명령으로 상태 디렉터리를 삭제할 수 있습니다: sudo rm -rf /var/lib/teleport/proc 그런 다음 에이전트를 재시작합니다: sudo systemctl restart teleport 쿠버네티스 내에서 실행 중인 에이전트 ( teleport-kube-agent ) # Teleport 11부터 teleport-kube-agent Pod의 상태는 설치 네임스페이스에 존재하는 쿠버네티스 시크릿(이름: {pod-name}-state )에 저장됩니다. 상태를 삭제하려면 다음 단계를 따르세요: # teleport-kube-agent Pod의 시크릿 가져오기 $ kubectl get secret -o name -n teleport-agent | grep "state" teleport-agent-0-state teleport-agent-1-state # 시크릿 삭제 $ kubectl delete secret -n teleport-agent teleport-agent-0-state teleport-agent-1-state /var/lib/teleport 를 컨테이너에 마운트하고 있다면, 컨테이너 내부의 /var/lib/teleport/proc 콘텐츠를 정리한 후 컨테이너를 재시작하세요. 상태가 삭제되면 각 에이전트 Pod를 재시작하세요. GKE Autopilot 클러스터에 연결할 수 없는 경우 # GKE Warden authz [denied by