#!/bin/bash # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 set -e function dump_pod_log() { pod_name=$1 namespace=$2 echo "-----------Pod: $pod_name---------" echo "#kubectl describe pod $pod_name -n $namespace" kubectl describe pod $pod_name -n $namespace echo "-----------------------------------" echo "#kubectl logs $pod_name -n $namespace" kubectl logs $pod_name -n $namespace --all-containers --prefix=true echo "-----------------------------------" } function dump_pods_status() { namespace=$1 echo "-----DUMP POD STATUS in NS $namespace------" kubectl get pods -n $namespace -o wide echo "-----------------------------------" # Get all pods in the namespace and their statuses pods=$(kubectl get pods -n $namespace --no-headers) # Loop through each pod echo "$pods" | while read -r line; do pod_name=$(echo $line | awk '{print $1}') ready=$(echo $line | awk '{print $2}') status=$(echo $line | awk '{print $3}') # Extract the READY count ready_count=$(echo $ready | cut -d'/' -f1) required_count=$(echo $ready | cut -d'/' -f2) # Check if the pod is not in "Running" status or READY count is less than required if [[ "$status" != "Running" || "$ready_count" -lt "$required_count" ]]; then dump_pod_log $pod_name $namespace fi done } function dump_all_pod_logs() { namespace=$1 echo "------SUMMARY of POD STATUS in NS $namespace------" kubectl get pods -n $namespace -o wide echo "------SUMMARY of SVC STATUS in NS $namespace------" kubectl get services -n $namespace -o wide echo "------SUMMARY of endpoint STATUS in NS $namespace------" kubectl get endpoints -n $namespace -o wide echo "-----DUMP POD STATUS AND LOG in NS $namespace------" pods=$(kubectl get pods -n $namespace -o jsonpath='{.items[*].metadata.name}') for pod_name in $pods do dump_pod_log $pod_name $namespace done } if [ $# -eq 0 ]; then echo "Usage: $0 " exit 1 fi case "$1" in dump_pods_status) dump_pods_status $2 ;; dump_all_pod_logs) dump_all_pod_logs $2 ;; *) echo "Unknown function: $1" ;; esac