2022-11-09 @이영훈
쿠버네티스에서 0/2 nodes are available: 2 Too many pods. 에러를 만났습니다.
CPU, Memory 잔여량도 충분한데 pod가 스케줄링이 되지 않는 문제가 있었습니다.
kubectl describe pod <pod-id>
### output
# ...
# Events:
# Type Reason Age From Message
# ---- ------ ---- ---- -------
# Warning FailedScheduling 18s (x46 over 45m) default-scheduler 0/2 nodes are available: 2 Too many pods.
Bash
복사
인스턴스 유형별 (탄력적) 네트워크 인터페이스 당 IP 주소 개수
이유를 찾아보니 AWS 인스턴스 타입별로 (탄력적) 네트워크 인터페이스 별로 IP 주소를 할당할 수 있는 최대 개수가 정해져있습니다.
IPv6 주소 제한은 네트워크 인터페이스당 프라이빗 IPv4 주소 제한과 별개입니다.
모든 인스턴스 유형이 IPv6 주소 지정을 지원하는 것은 아닙니다.
위의 표를 보면 m6g.large의 경우 IPv4를 10개 연결할 수 있습니다. private IPv4를 10개 사용하면 11개부터는 IP를 할당할 수 없어 pending이 되는 문제가 발생하는 것입니다.
문제 해결을 위해서는 worker node를 추가하거나 상위 인스턴스로 교체하면 문제가 해결됩니다.
판단하기
IPv4 할당과 비용 관점에서 보면 m6g.medium 2개보다 m6g.large 1개가 더 비용 효율적입니다.
m6g.large는 m6g.medium의 정확히 2배 가격입니다.
그렇기 때문에 IP 할당 관점에서는 m6g.large 1대다 m6g.medium 2대보다 더 효율적입니다.
비용과 필요한 IP 개수 등을 종합적으로 잘 판단해서 선택하면 됩니다.