개요
구성환경
예제 1.
- 증상 1 pod의 이벤트에 node.kubernetes.io/disk-pressure로 표시되고 pod가 pending상태로 있음
shell> kubectl describe pod nginx-deployment-57f4c486cc-8kkhm Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 40s (x7 over 7m25s) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/disk-pressure: }, that the pod didn't tolerate. |
- 증상 2 : pod의 storage-provisioner 가 pending 상태이고 이벤트에 DiskPressure가 표시딤
shell> kubectl get pod -A shell> kubectl describe pod storage-provisioner -n kube-system |
- 증상 3 : node의 condition에서 type이 DiskPressure가 상태가 True로 표시됨
shell> kubectl describe node testsvr Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- MemoryPressure False Fri, 27 Mar 2020 20:49:11 +0900 Fri, 27 Mar 2020 19:40:48 +0900 KubeletHasSufficientMemory kubelet has sufficient memory available DiskPressure True Fri, 27 Mar 2020 20:49:11 +0900 Fri, 27 Mar 2020 20:44:04 +0900 KubeletHasDiskPressure kubelet has disk pressure PIDPressure False Fri, 27 Mar 2020 20:49:11 +0900 Fri, 27 Mar 2020 19:40:48 +0900 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Fri, 27 Mar 2020 20:49:11 +0900 Fri, 27 Mar 2020 19:41:06 +0900 KubeletReady kubelet is posting ready status Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning EvictionThresholdMet 68m (x17 over 71m) kubelet, testsvr Attempting to reclaim ephemeral-storage Warning FreeDiskSpaceFailed 66m kubelet, testsvr failed to garbage collect required amount of images. Wanted to free 4689408000 bytes, but freed 0 bytes Warning FreeDiskSpaceFailed 61m kubelet, testsvr failed to garbage collect required amount of images. Wanted to free 4691230720 bytes, but freed 0 bytes |
원인
디스크 가용량이 부족할 경우 발생
조치
가용량 확장또는 불필요한 파일들을 삭제하여 공간 확보
예제 2.
증상
shell> kubectl describe pod nginx-deployment-57f4c486cc-jx8pc ..... 생략 ..... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 69s (x2 over 70s) default-scheduler 0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate. shell> |
원인
기본적으로 클러스터는 보안상의 이유로 control-plane 노드(master 역할노드)에서 포드를 스케쥴링 할수 없습니다.
조치
1. 아래 명령을 이용하여 conrol-plane 노드에서 pod를 생성할 수 있게 해줍니다.
shell> kubectl taint nodes --all node-role.kubernetes.io/master- |
2. worker node를 추가하여 이 문제를 해결 할 수 있습니다.
'가상화 > Kubernetes' 카테고리의 다른 글
[Docker] Priviate registry 구성 #2 - TLS 구성 (0) | 2020.03.31 |
---|---|
[Docker] Priviate registry 구성 #1 - 설치 (0) | 2020.03.31 |
[Docker] Image Build (0) | 2020.03.25 |
[kubernetes] 웹 UI(대시보드) (0) | 2020.03.23 |
[kubernetes] kubeadm을 사용하여 고 가용성(HA) 클러스터 만들기 (0) | 2020.03.22 |