Home [K8S] Pod 스케줄링 에러 scheduler 0/5 nodes are available
Post
Cancel

[K8S] Pod 스케줄링 에러 scheduler 0/5 nodes are available

Pod 스케줄링 에러 scheduler 0/5 nodes are available

쿠버네티스에서 Pod 배포를 했을 때

Warning FailedScheduling 40s (x5 over 3m50s) default-scheduler 0/5 nodes are available: 1 Too many pods, 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate, 3 node(s) didn't match Pod's node affinity/selector.

요런 에러 발생.

정확하게 읽어보지도 않고 구글링했더니 명확한 답이 안나왔음. 근데 하나 하나 제대로 읽어보니 Warning 에 답이 있었다…

  • 1개의 노드는 Pod가 너무 많이 떠있고,
  • 1개의 노드는 Taint (pod가 못뜨게 “얼룩”이 묻은 것임. master) 가 있고,
    • Taint는 얼룩이라는 뜻. Node에 얼룩을 묻힐 수 있는데 얼룩이 있는 Node에는 pod가 마음대로 못뜸.
    • 만약 Taint 가 있는 Node에 Pod를 띄우고 싶으면 Tolerance 값을 줘야함 (얼룩을 참는다는 의미!)
  • 3개의 노드는 node affinity (node 친화도. 즉, 붙고 싶은 node가 이미 있다.)가 맞지 않다.
    • Node Affinity 는 노드 친화도이다. Node selector와 거의 유사. 하지만 조금 더 유연하게 사용가능.
    • 그러니깐 node affinity에다가 node 4 해놓으면 4번 노드에만 붙으려고 한다!

전체 노드는 5개이니 위의 케이스 중 하나가 잘못되어있다!! 확인해보니 master 1개, affinity 는 4번 node!!

즉, 1개의 노드에 너무 많은 Pod가 떠 있어서 새로운 pod가 뜨지 못하는 스케줄링 이슈 발생.

1
k get nodes -o yaml | grep pods

로 각 노드의 max pod 수를 확인할 수 있다.

해당 노드의 pod 하나를 삭제하니 정상적으로 스케줄링이 되는 것을 확인!

This post is licensed under CC BY 4.0 by the author.