Amazon EKS 포드가 "failed to create pod sandbox" 오류와 함께 ContainerCreating 상태에서 멈춘 이유는 무엇입니까?
Amazon Elastic Kubernetes Service(Amazon EKS) 포드가 "failed to create pod sandbox"라는 오류와 함께 ContainerCreating 상태에서 멈췄습니다.
해결 방법
네트워킹 문제 또는 잘못된 시스템 리소스 제한 구성이 있을 때 이 오류가 표시됩니다.
이 오류가 발생하고 포드가 ContainerCreating 상태인 경우, 먼저 포드의 상태를 검사합니다. 그런 다음, 다음 명령을 실행하여 자세한 내용을 확인합니다. podname을 자신의 포드 이름으로 바꿉니다.
kubectl describe pod podname
출력에 따라 문제 해결 단계에 대한 다음 섹션을 참조하세요.
"Resource temporarily unavailable" 오류 응답
리소스 문제가 있는 경우 다음과 비슷한 오류 메시지가 표시됩니다.
"kubelet, ip-##-##-##-##.##-#####-#.compute.internal Failed to create pod sandbox: rpc error: code = Unknown desc = failed to start sandbox container for pod "example_pod": Error response from daemon: failed to start shim: fork/exec /usr/bin/containerd-shim: resource temporarily unavailable: unknown"
이 오류 응답은 최대 PID 또는 최대 파일 수에 대해 정의된 커널 설정으로 인해 운영 체제 제한이 발생할 때 발생합니다.
문제를 일시적으로 해결하려면 노드를 다시 시작합니다.
이 문제를 해결하려면 다음 작업을 완료하세요.
- 노드 로그를 수집합니다.
- "dockerd[4597]: runtime/cgo: pthread_create failed: Resource temporarily unavailable" 오류 응답에 대한 Docker 로그를 검토합니다.
- 다음 오류 응답에 대한 Kubelet 로그를 검토합니다.
"kubelet[5267]: runtime: failed to create new OS thread (have 2 already; errno=11)"
"kubelet[5267]: runtime: may need to increase max user processes (ulimit -u)" - ps 명령을 실행하여 좀비 프로세스를 식별합니다. 출력에 Z 상태로 나열된 모든 프로세스는 좀비 프로세스입니다.
"Network plugin cni failed to set up pod network" 오류 응답
네트워크 문제가 있는 경우 다음과 비슷한 오류 메시지가 표시됩니다.
"Network plugin cni failed to set up pod network: add cmd: failed to assign an IP address to container"
이 오류 응답은 CNI(컨테이너 네트워크 인터페이스)가 새로 생성된 포드에 IP 주소를 할당할 수 없음을 의미합니다.
허용되는 최대 탄력적 네트워크 인터페이스 및 IP 주소를 사용한 인스턴스로 인해 이 오류 응답이 발생할 수 있습니다. Amazon Virtual Private Cloud(Amazon VPC) 서브넷의 IP 주소 수가 0인 경우에도 이 오류 응답을 받을 수 있습니다.
다음은 최대 네트워크 인터페이스 IP 주소의 예입니다.
Instance type Maximum network interfaces Private IPv4 addresses per interface IPv6 addresses per interfacet3.medium 3 6 6
앞의 예에서 t3.medium 인스턴스에는 최대 3개의 네트워크 인터페이스가 있으며 각 네트워크 인터페이스에는 최대 6개의 IP 주소가 있습니다. 첫 번째 IP 주소는 노드에 사용되며 할당할 수 없습니다. 이 네트워크 인터페이스에는 할당할 수 있는 17개의 IP 주소가 있습니다.
네트워크 인터페이스에 IP 주소가 부족하면 로컬 IP 주소 관리 대몬(ipamD) 로그에 다음 메시지가 표시됩니다.
"ipamd/ipamd.go:1285","msg":"Total number of interfaces found: 3 ""AssignIPv4Address: IP address pool stats: total: 17, assigned 17" "AssignPodIPv4Address: ENI eni-abc123 does not have available addresses"
예를 들어 다음 출력을 참조하십시오.
Warning FailedCreatePodSandBox 23m (x2203 over 113m) kubelet, ip-##-##-##-##.##-#####-#.compute.internal (combined from similar events): Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" network for pod "provisioning-XXXXXXXXXXXXXXX": networkPlugin cni failed to set up pod "provisioning-XXXXXXXXXXXXXXX" network: add cmd: failed to assign an IP address to container
서브넷을 검토하여 서브넷에 사용 가능한 IP 주소가 부족한지 확인합니다. Amazon VPC 콘솔의 서브넷 섹션에서 각 서브넷에 사용 가능한 IP 주소를 볼 수 있습니다.
Subnet: ##########IPv4 CIDR Block 10.2.1.0/24 Number of allocated ips 254 ; Free address count 0
이 문제를 해결하려면 다음 해결 방법을 사용하십시오.
- 사용 가능한 최신 버전의 VPC CNI를 사용해야 합니다.
- 워크로드를 스케일 다운하여 사용된 IP 주소를 확보합니다.
- 서브넷에서 더 많은 IP 주소를 사용할 수 있는 경우 노드 수를 스케일 업합니다.
- 포드에 사용자 지정 네트워킹을 사용합니다.
- 접두사 위임 모드를 활성화합니다. 자세한 내용은 GitHub 웹사이트의 AWS 계정에서 Windows용 접두사 모드를 참조하십시오.
"Error while dialing" 오류 응답
다이얼 문제가 있는 경우 다음과 비슷한 오류가 발생합니다.
"Error while dialing dial tcp 127.0.0.1:50051: connect: connection refused"
이 오류는 aws-node 포드가 이 노드에서 실행되지 않아 aws-node 포드가 IPAM과 통신하지 못했음을 나타냅니다.
이 문제를 해결하려면 클러스터 버전에 대해 올바른 버전의 VPC CNI 플러그인을 실행하고 있는지 확인합니다.
포드는 Liveness 및 Readiness 프로브 오류로 인해 보류 중 상태일 수 있습니다. 최신 VPC CNI 애드온 버전이 있는지 확인합니다.
Dockershim(EKS 버전 1.23까지) 탑재 지점이 탑재되지 않기 때문에 이 문제가 발생할 수도 있습니다. 다음 예제 메시지는 포드가 var/run/dockershim.sock을 마운트하지 않았음을 나타냅니다.
Getting running pod sandboxes from \"unix:///var/run/dockershim.sock\Not able to get local pod sandboxes yet (attempt 1/5): rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or director
이 문제를 해결하려면 다음 작업을 완료하세요.
- aws-node 포드를 다시 시작하여 탑재 지점을 다시 매핑합니다.
- 노드를 차단하고 노드 그룹의 노드 크기를 조정합니다.
- Amazon VPC 네트워크 인터페이스를 지원되는 최신 클러스터 버전으로 업그레이드합니다.
AWS Management Console에서 CNI를 관리형 플러그인으로 추가한 경우 aws-node가 프로브에 실패합니다. 관리 플러그인은 서비스 계정을 덮어씁니다. 그러나 서비스 계정이 선택한 역할로 구성되지 않았습니다. 이 문제를 해결하려면 AWS Management Console에서 플러그인을 끈 다음 매니페스트 파일을 사용하여 서비스 계정을 만듭니다. 또는 현재 aws-node 서비스 계정을 편집하여 관리형 추가 기능에서 사용되는 역할을 추가합니다.
"Pod does not have label" 오류 응답
레이블 문제가 있는 경우 다음과 비슷한 오류가 발생합니다.
"Failed to parse Kubernetes args: pod does not have label vpc.amazonaws.com/PrivateIPv4Address" or "Pod does not have label vpc.amazonaws.com/PrivateIPv4Address"
이 문제는 포드에 Windows 노드에 예약된 nodeSelector가 없을 때 발생합니다.
이 문제를 해결하려면 nodeSelector의 PodSpec에 다음 레이블을 포함해야 합니다.
- kubernetes.io/os: windows
- kubernetes.io/arch: amd64
보안 그룹 오류
보안 그룹 문제가 있는 경우 다음과 비슷한 오류가 발생합니다.
"Plugin type="aws-cni" name="aws-cni" failed (add): add cmd: failed to assign an IP address to container
Vpc-resource-controller failed to allocate branch ENI to pod: creating network interface, NoCredentialProviders: no valid providers in chain. Deprecated."
이 오류 응답은 health.kubernetes 컨트롤 플레인에 문제가 있음을 나타낼 수 있습니다. 이 문제를 해결하려면 AWS Support에 문의하십시오.
관련 콘텐츠
- 질문됨 8달 전lg...
- AWS 공식업데이트됨 한 달 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 2년 전