mirror of
https://github.com/hanzo-ml/kserve.git
synced 2026-10-30 20:53:49 +00:00
Signed-off-by: Vivek Karunai Kiri Ragavan <[email protected]>
245 lines
10 KiB
Bash
Executable File
245 lines
10 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
sleep 10
|
|
echo "::group::Free Space"
|
|
df -hT
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::List Docker Images"
|
|
docker image ls
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::List Pods in kserve namespace"
|
|
kubectl get pods -n kserve
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::K8s Events in kserve namespace"
|
|
kubectl get events -n kserve
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Describe pods/Gather logs in kserve namespace"
|
|
if ! kubectl get namespace kserve &>/dev/null; then
|
|
echo "⚠️ Namespace kserve does not exist, skipping..."
|
|
return
|
|
fi
|
|
|
|
for pod in $(kubectl get pods -n kserve -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
|
|
echo "--- Pod: $pod ---"
|
|
kubectl describe pods -n kserve $pod
|
|
kubectl logs -n kserve $pod --all-containers=true --tail=1000 2>&1
|
|
echo "--- End Pod: $pod ---"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Pod manifest in kserve namespace"
|
|
if ! kubectl get namespace kserve &>/dev/null; then
|
|
echo "⚠️ Namespace kserve does not exist, skipping..."
|
|
return
|
|
fi
|
|
|
|
for pod in $(kubectl get pods -n kserve -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
|
|
echo "--- Pod: $pod ---"
|
|
kubectl get pods -n kserve $pod -o yaml
|
|
echo "--- End Pod: $pod ---"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::List Pods in keda namespace"
|
|
kubectl get pods -n keda
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::List Pods in all other namespaces"
|
|
kubectl get pods -A --field-selector=metadata.namespace!=kserve,metadata.namespace!=kserve-ci-e2e-test
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::List Pods in kserve-ci-e2e-test namespace"
|
|
kubectl get pods -n kserve-ci-e2e-test
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Describe Pods in kserve-ci-e2e-test namespace"
|
|
kubectl describe pods -n kserve-ci-e2e-test
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::K8s Events in kserve-ci-e2e-test namespace"
|
|
kubectl get events -n kserve-ci-e2e-test
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Gather logs in kserve-ci-e2e-test namespace"
|
|
if ! kubectl get namespace kserve-ci-e2e-test &>/dev/null; then
|
|
echo "⚠️ Namespace kserve-ci-e2e-test does not exist, skipping..."
|
|
return
|
|
fi
|
|
|
|
for pod in $(kubectl get pods -n kserve-ci-e2e-test -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
|
|
echo "--- Pod: $pod ---"
|
|
kubectl describe pods -n kserve-ci-e2e-test $pod
|
|
kubectl logs -n kserve-ci-e2e-test $pod --all-containers=true --tail=1000 2>&1
|
|
echo "--- End Pod: $pod ---"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::K8s Events in kserve-localmodel-jobs namespace"
|
|
kubectl get events -n kserve-localmodel-jobs
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Kserve Controller Logs"
|
|
kubectl logs -l control-plane=kserve-controller-manager -n kserve -c manager --tail -1
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Kserve ModelCache Controller Logs"
|
|
kubectl logs -l control-plane=kserve-localmodel-controller-manager -n kserve -c manager --tail -1
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Kserve ModelCache Agent Logs"
|
|
for pod in $(kubectl get pods -l control-plane=kserve-localmodelnode-agent -o jsonpath='{.items[*].metadata.name}' -n kserve); do
|
|
echo "===================================== Logs for modelcache agent: $pod ========================================="
|
|
kubectl logs "$pod" -c manager -n kserve --tail -1
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Predictor Pod logs"
|
|
for pod in $(kubectl get pods -l 'component in (predictor)' -o jsonpath='{.items[*].metadata.name}' -n kserve-ci-e2e-test); do
|
|
echo "===================================== Logs for Predictor Pod: $pod ========================================="
|
|
kubectl logs "$pod" -c kserve-container -n kserve-ci-e2e-test --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
|
|
echo "::group::Transformer Pod logs"
|
|
for pod in $(kubectl get pods -l 'component in (transformer)' -o jsonpath='{.items[*].metadata.name}' -n kserve-ci-e2e-test); do
|
|
echo "===================================== Logs for Transformer Pod: $pod ======================================="
|
|
kubectl logs "$pod" -c kserve-container -n kserve-ci-e2e-test --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Explainer Pod logs"
|
|
for pod in $(kubectl get pods -l 'component in (explainer)' -o jsonpath='{.items[*].metadata.name}' -n kserve-ci-e2e-test); do
|
|
echo "===================================== Logs for Explainer Pod: $pod ========================================="
|
|
kubectl logs "$pod" -c kserve-container -n kserve-ci-e2e-test --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::InferenceGraph Pod logs"
|
|
for pod in $(kubectl get pods -l 'serving.kserve.io/inferencegraph=model-chainer' -o jsonpath='{.items[*].metadata.name}' -n kserve-ci-e2e-test); do
|
|
echo "===================================== Logs for Graph Pod: $pod ========================================="
|
|
kubectl logs "$pod" -c user-container -n kserve-ci-e2e-test --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::KEDA Pod logs"
|
|
for pod in $(kubectl get pods -o jsonpath='{.items[*].metadata.name}' -n keda); do
|
|
echo "===================================== Logs for KEDA Pod: $pod ========================================="
|
|
kubectl logs "$pod" -n keda --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::OpenTelemetry Operator Pod logs"
|
|
for pod in $(kubectl get pods -o jsonpath='{.items[*].metadata.name}' -n opentelemetry-operator); do
|
|
echo "===================================== Logs for OpenTelemetry Operator Pod: $pod ========================================="
|
|
kubectl logs "$pod" -n opentelemetry-operator --tail 500
|
|
echo "================================================================================================================"
|
|
done
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::envoy gateway"
|
|
kubectl describe pods -l serving.kserve.io/gateway=kserve-ingress-gateway -n envoy-gateway-system
|
|
kubectl describe svc -l gateway.envoyproxy.io/owning-gateway-name=kserve-ingress-gateway -n envoy-gateway-system
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::istio gateway"
|
|
kubectl describe pods -l serving.kserve.io/gateway=kserve-ingress-gateway -n kserve
|
|
kubectl describe svc -l serving.kserve.io/gateway=kserve-ingress-gateway -n kserve
|
|
echo "::endgroup::"
|
|
|
|
shopt -s nocasematch
|
|
if [[ $# -eq 1 && "$1" == "kourier" ]]; then
|
|
echo "::group::Kourier Gateway Pod logs"
|
|
kubectl logs "$(kubectl get pod -n knative-serving -l 'app=3scale-kourier-gateway' --output=jsonpath='{.items[0].metadata.name}')" -n knative-serving
|
|
echo "::endgroup::"
|
|
else
|
|
echo "::group::Istio Ingress Gateway Pod logs"
|
|
kubectl logs "$(kubectl get pods -n istio-system --output=jsonpath={.items..metadata.name} -l app=istio-ingressgateway)" -n istio-system
|
|
echo "::endgroup::"
|
|
fi
|
|
|
|
if [[ $# -eq 1 && "$1" == "llmisvc" ]]; then
|
|
echo "::group::Enhanced LLMISvc system status check... Resources"
|
|
kubectl get gateways -A -o yaml
|
|
kubectl get httproutes -A
|
|
kubectl get httproute -n kserve-ci-e2e-test -o yaml
|
|
kubectl get inferencepools -A
|
|
kubectl get inferenceobjectives -A
|
|
kubectl get inferenceobjectives -n kserve-ci-e2e-test -o yaml
|
|
kubectl get inferencepools -n kserve-ci-e2e-test -o yaml
|
|
kubectl get llminferenceservices -n kserve-ci-e2e-test -o yaml
|
|
kubectl get llminferenceserviceconfigs -A
|
|
kubectl get validatingwebhookconfiguration | grep llm
|
|
kubectl get gatewayclasses -A
|
|
kubectl get svc -A
|
|
kubectl get certificate -A
|
|
echo "::endgroup::"
|
|
echo "::group::Describing LLMInferenceServices in kserve-ci-e2e-test namespace"
|
|
if ! kubectl get namespace kserve-ci-e2e-test &>/dev/null; then
|
|
echo "⚠️ Namespace kserve-ci-e2e-test does not exist, skipping..."
|
|
return
|
|
fi
|
|
|
|
for llmisvc in $(kubectl get llminferenceservices -n kserve-ci-e2e-test -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
|
|
echo "=== LLMInferenceService: $llmisvc ==="
|
|
kubectl describe llminferenceservices -n kserve-ci-e2e-test $llmisvc 2>&1
|
|
done
|
|
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Autoscaling pipeline diagnostics"
|
|
echo "--- ServiceMonitors ---"
|
|
kubectl get servicemonitors -A 2>/dev/null || true
|
|
echo "--- VariantAutoscalings ---"
|
|
kubectl get variantautoscalings -n kserve-ci-e2e-test -o yaml 2>/dev/null || true
|
|
echo "--- HPAs ---"
|
|
kubectl get hpa -n kserve-ci-e2e-test -o yaml 2>/dev/null || true
|
|
echo "--- ScaledObjects ---"
|
|
kubectl get scaledobjects -n kserve-ci-e2e-test -o yaml 2>/dev/null || true
|
|
echo "--- External Metrics APIService ---"
|
|
kubectl get apiservice v1beta1.external.metrics.k8s.io -o yaml 2>/dev/null || true
|
|
echo "--- WVA Controller Logs ---"
|
|
kubectl logs -n wva-system -l control-plane=controller-manager --tail=100 2>/dev/null || true
|
|
echo "--- Prometheus Adapter Logs ---"
|
|
kubectl logs -n monitoring -l app.kubernetes.io/name=prometheus-adapter --tail=50 2>/dev/null || true
|
|
echo "::endgroup::"
|
|
|
|
echo "::group::Gather logs in envoy-gateway-system envoy-ai-gateway-system"
|
|
NAMESPACES="envoy-gateway-system envoy-ai-gateway-system"
|
|
|
|
for ns in $NAMESPACES; do
|
|
if ! kubectl get namespace $ns &>/dev/null; then
|
|
echo "⚠️ Namespace $ns does not exist, skipping..."
|
|
continue
|
|
fi
|
|
|
|
echo "=== Namespace: $ns ==="
|
|
|
|
echo "--- Events ---"
|
|
kubectl get events -n $ns --sort-by='.lastTimestamp' | tail -20
|
|
echo "--- End Events ---"
|
|
|
|
echo "--- Pods ---"
|
|
kubectl get pods -n $ns
|
|
for pod in $(kubectl get pods -n $ns -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
|
|
echo "--- Pod: $pod ---"
|
|
kubectl describe pods -n $ns $pod
|
|
kubectl logs -n $ns $pod --all-containers=true --tail=1000 2>&1
|
|
echo "--- End Pod: $pod ---"
|
|
done
|
|
echo "--- End Pods ---"
|
|
done
|
|
echo "::endgroup::"
|
|
fi
|
|
shopt -u nocasematch
|