점검 시, Running 상태가 아닌 파드 들은 기본적으로 describe
를 확인하여 Event 확인이 필요합니다.
1, 2개일 경우 수작업으로 확인이 쉽지만, pod나 node가 많은 경우 어려움이 있어
pod는 running, completed 상태가 아니면, node는 Ready 상태가 아니면 describe 한 결과를 파일로 저장하도록 shell scripts 를 작성하였습니다.
#!/bin/sh
pod=$(kubectl get pods -A | awk '{print $2}') # pod의 이름
ns=$(kubectl get pods -A | awk '{print $1}') # pod가 속한 namespace
status=$(kubectl get pods -A | awk '{print $4}') # pod의 상태
pod_array=($pod) # pod의 이름을 배열화
ns_array=($ns) # namspace의 이름을 배열화
status_array=($status) # pod의 상태값 목록을 배열화
for (( i=1; i<${#status_array[@]}; i++ )); do # pod의 개수 만큼
# pod가 비정상이라면
if [ ${status_array[i]} != "Running" ] && [ ${status_array[i]} != "Completed" ]
then
# describe 한 결과를 파일로 저장
kubectl describe po -n ${ns_array[i]} ${pod_array[i]} >> ./descirbe-po-${ns_array[i]}_${pod_array[i]}.log
fi
done
node=$(kubectl get node | awk '{print $1}') # node의 hostname
node_status=$(kubectl get node | awk '{print $2}') # node의 상태
node_array=($node) # node의 hostname을 배열화
node_status_array=($node_status) # node의 상태를 배열화
for (( i=1; i<${#node_array[@]}; i++ )); do # node의 개수만큼
# node가 비정상이라면
if [ ${node_status_array[i]} != "Ready" ]
then
# describe 한 결과를 파일로 저장
kubectl describe node ${node_array[i]} >> ./descirbe-node_${node_array[i]}.log
fi
done