증상
다음 작업 중 하나를 수행하면 "서버 오류: 백 엔드 전화 걸기 오류: tcp 전화 걸기" 오류 메시지가 표시됩니다.
- , ,
kubectllogsexec또는attach명령 중topport-forward에서 사용할 수 있습니다. - 타사 Kubernetes 클라이언트 도구를 사용하여 이전 목록 항목의 명령과 동일한 기능을 구현합니다.
오류가 발생하는 이유
Kubernetes API 서버는 여러 사용 사례에 대해 API 요청을 업스트림 구성 요소로 전달해야 합니다. 이 오류는 API 서버가 업스트림 구성 요소에 대한 TCP 연결을 설정할 수 없는 경우에 발생합니다. 이러한 업스트림 구성 요소의 예로는 클러스터 내에 있는 kubernetes 서비스 및 kubelet이 있습니다.
문제가 지속되면 네트워크 차단이 원인일 수 있습니다. 책임 있는 네트워크 구성을 식별하려면 먼저 문제의 범위를 결정합니다.
축소: 모든 kubectl 하위 명령이 실패하나요?
최소한 kubectl exec, kubectl logs <podname>및 kubectl top pods 명령을 실행합니다.
만 kubectl logs <podname> 또는 kubectl exec 실패하는 경우 다른 노드에 Pod를 사용하여 문제가 발생하는지 확인합니다.
실패하는 경우 kubectl top pods 모든 노드의 Pod 또는 한 노드의 Pod에 대해서만 문제가 발생하는지 확인합니다.
원인 1: kubelet 포트(노드:10250)가 차단됨
API 서버가 포트 10250의 노드에 도달하여 Kubelet API에 액세스할 수 없는 경우 Pod 관련 액세스 문제(예: 실행 kubectl logs 및 kubectl exec발생)가 발생합니다. 이러한 문제는 NSG(네트워크 보안 그룹) 또는 방화벽에 의해 차단되는 연결로 인해 발생할 수 있습니다.
이 문제를 해결하려면 노드 서브넷의 NSG에 TCP 포트 10250을 차단할 수 있는 인바운드 규칙이 포함되어 있는지 확인합니다.
원인 2: 특정 서비스 실패
Kubernetes는 svc/metrics-server kubectl top 명령을 실행하기 위해 네임스페이스 아래에 kube-system 액세스합니다. API 서버가 다른 서비스에 연결할 수 있는 허용 웹후크와 같은 다른 시나리오도 있습니다. 서비스 오류 패턴에 따라 오류 메시지가 달라질 수 있다는 점에 유의해야 합니다.
문제를 해결하려면 오류 메시지를 확인하여 영향을 받는 서비스를 식별하고 관련 Pod, 서비스 및 엔드포인트의 상태를 검토합니다.
원인 3: 코네 활동 또는 터널 실패
API Server VNet 통합을 사용하도록 설정하지 않으면 AKS는 API 서버 요청을 클러스터 내 네트워킹 위치에 프록시하는 터널 솔루션을 배포합니다. 대부분의 AKS 클러스터는 Konnectivity 솔루션을 사용합니다. Konnectivity는 API 서버에서 특수 포트를 열 필요가 없습니다. 자세한 내용은 AKS 필수 네트워크 규칙을 참조 하세요.
이 문제를 해결하려면 네임스페이스의 실행 중이고 해당 컨테이너가 준비 상태인지 konnectivity-agentkube-system 확인합니다. Pod를 삭제하여 새 Pod가 준비되면 연결이 복구되는지 확인합니다.
타사 정보 고지 사항
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.
도움을 요청하십시오.
질문이 있는 경우 Azure 커뮤니티 지원을 요청할 수 있습니다. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.