mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
endpointslices: terminal pods doesn't receive enpoints
This commit is contained in:
parent
d16d23e0c7
commit
b905c2870b
@ -138,6 +138,12 @@ func DeepHashObjectToString(objectToWrite interface{}) string {
|
|||||||
// ShouldPodBeInEndpointSlice returns true if a specified pod should be in an EndpointSlice object.
|
// ShouldPodBeInEndpointSlice returns true if a specified pod should be in an EndpointSlice object.
|
||||||
// Terminating pods are only included if includeTerminating is true
|
// Terminating pods are only included if includeTerminating is true
|
||||||
func ShouldPodBeInEndpointSlice(pod *v1.Pod, includeTerminating bool) bool {
|
func ShouldPodBeInEndpointSlice(pod *v1.Pod, includeTerminating bool) bool {
|
||||||
|
// "Terminal" describes when a Pod is complete (in a succeeded or failed phase).
|
||||||
|
// This is distinct from the "Terminating" condition which represents when a Pod
|
||||||
|
// is being terminated (metadata.deletionTimestamp is non nil).
|
||||||
|
if podutil.IsPodTerminal(pod) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if len(pod.Status.PodIP) == 0 && len(pod.Status.PodIPs) == 0 {
|
if len(pod.Status.PodIP) == 0 && len(pod.Status.PodIPs) == 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -146,14 +152,6 @@ func ShouldPodBeInEndpointSlice(pod *v1.Pod, includeTerminating bool) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if pod.Spec.RestartPolicy == v1.RestartPolicyNever {
|
|
||||||
return pod.Status.Phase != v1.PodFailed && pod.Status.Phase != v1.PodSucceeded
|
|
||||||
}
|
|
||||||
|
|
||||||
if pod.Spec.RestartPolicy == v1.RestartPolicyOnFailure {
|
|
||||||
return pod.Status.Phase != v1.PodSucceeded
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,9 +99,6 @@ func TestDetermineNeededServiceUpdates(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// There are 3*5 possibilities(3 types of RestartPolicy by 5 types of PodPhase).
|
|
||||||
// Not listing them all here. Just listing all of the 3 false cases and 3 of the
|
|
||||||
// 12 true cases.
|
|
||||||
func TestShouldPodBeInEndpointSlice(t *testing.T) {
|
func TestShouldPodBeInEndpointSlice(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
@ -179,7 +176,6 @@ func TestShouldPodBeInEndpointSlice(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expected: false,
|
expected: false,
|
||||||
},
|
},
|
||||||
// Pod should be in endpoints:
|
|
||||||
{
|
{
|
||||||
name: "Failed pod with Always RestartPolicy",
|
name: "Failed pod with Always RestartPolicy",
|
||||||
pod: &v1.Pod{
|
pod: &v1.Pod{
|
||||||
@ -191,8 +187,9 @@ func TestShouldPodBeInEndpointSlice(t *testing.T) {
|
|||||||
PodIP: "1.2.3.4",
|
PodIP: "1.2.3.4",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expected: true,
|
expected: false,
|
||||||
},
|
},
|
||||||
|
// Pod should be in endpoints:
|
||||||
{
|
{
|
||||||
name: "Pending pod with Never RestartPolicy",
|
name: "Pending pod with Never RestartPolicy",
|
||||||
pod: &v1.Pod{
|
pod: &v1.Pod{
|
||||||
|
Loading…
Reference in New Issue
Block a user