kubelet: Add description for failed predicate Events

**Problem:** When a Pod fails to run due to kubelet-side admission checks, the
v1.Event objects emitted looks like these:

    Reason="NodeAffinity" Message="Predicate NodeAffinity failed"
    Reason="NodeName" Message="Predicate NodeName failed"
    Reason="NodePorts" Message="Predicate NodePorts failed"

**Solution:** Expose human-readable predicate description in the failure
so that kubelet submits an Event with this description, such as:

    Reason="NodeAffinity" Message="Predicate NodeAffinity failed: node(s) didn't match Pod's node affinity/selector"
    Reason="NodeName" Message="Predicate NodeName failed: node(s) didn't match the requested node name"
    Reason="NodePorts" Message="Predicate NodePorts failed: node(s) didn't have free ports for the requested pod ports"
This commit is contained in:
Ahmet Alp Balkan 2024-06-13 15:12:56 -07:00
parent 9d63e575f8
commit 4d3f5cdc82

View File

@ -269,7 +269,7 @@ type PredicateFailureError struct {
}
func (e *PredicateFailureError) Error() string {
return fmt.Sprintf("Predicate %s failed", e.PredicateName)
return fmt.Sprintf("Predicate %s failed: %s", e.PredicateName, e.PredicateDesc)
}
// GetReason returns the reason of the PredicateFailureError.