mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
Merge pull request #17920 from abutcher/check-endpoints
Auto commit by PR queue bot
This commit is contained in:
commit
60925e67fe
@ -296,9 +296,14 @@ func (c *Controller) ReconcileEndpoints(serviceName string, ip net.IP, endpointP
|
|||||||
return c.EndpointRegistry.UpdateEndpoints(ctx, e)
|
return c.EndpointRegistry.UpdateEndpoints(ctx, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Determine if the endpoint is in the format ReconcileEndpoints expect (one subset,
|
// Determine if the endpoint is in the format ReconcileEndpoints expects.
|
||||||
// correct ports, N IP addresses); and if the specified IP address is present and
|
//
|
||||||
// the correct number of ip addresses are found.
|
// Return values:
|
||||||
|
// * formatCorrect is true if exactly one subset is found.
|
||||||
|
// * ipCorrect is true when current master's IP is found and the number
|
||||||
|
// of addresses is less than or equal to the master count.
|
||||||
|
// * portsCorrect is true when endpoint ports exactly match provided ports.
|
||||||
|
// portsCorrect is only evaluated when reconcilePorts is set to true.
|
||||||
func checkEndpointSubsetFormat(e *api.Endpoints, ip string, ports []api.EndpointPort, count int, reconcilePorts bool) (formatCorrect bool, ipCorrect bool, portsCorrect bool) {
|
func checkEndpointSubsetFormat(e *api.Endpoints, ip string, ports []api.EndpointPort, count int, reconcilePorts bool) (formatCorrect bool, ipCorrect bool, portsCorrect bool) {
|
||||||
if len(e.Subsets) != 1 {
|
if len(e.Subsets) != 1 {
|
||||||
return false, false, false
|
return false, false, false
|
||||||
@ -318,7 +323,7 @@ func checkEndpointSubsetFormat(e *api.Endpoints, ip string, ports []api.Endpoint
|
|||||||
}
|
}
|
||||||
for _, addr := range sub.Addresses {
|
for _, addr := range sub.Addresses {
|
||||||
if addr.IP == ip {
|
if addr.IP == ip {
|
||||||
ipCorrect = len(sub.Addresses) == count
|
ipCorrect = len(sub.Addresses) <= count
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,6 +160,54 @@ func TestReconcileEndpoints(t *testing.T) {
|
|||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
testName: "existing endpoints satisfy and endpoint addresses length less than master count",
|
||||||
|
serviceName: "foo",
|
||||||
|
ip: "4.3.2.2",
|
||||||
|
endpointPorts: []api.EndpointPort{{Name: "foo", Port: 8080, Protocol: "TCP"}},
|
||||||
|
additionalMasters: 3,
|
||||||
|
endpoints: &api.EndpointsList{
|
||||||
|
Items: []api.Endpoints{{
|
||||||
|
ObjectMeta: om("foo"),
|
||||||
|
Subsets: []api.EndpointSubset{{
|
||||||
|
Addresses: []api.EndpointAddress{
|
||||||
|
{IP: "4.3.2.1"},
|
||||||
|
{IP: "4.3.2.2"},
|
||||||
|
},
|
||||||
|
Ports: []api.EndpointPort{{Name: "foo", Port: 8080, Protocol: "TCP"}},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
expectUpdate: nil,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
testName: "existing endpoints current IP missing and address length less than master count",
|
||||||
|
serviceName: "foo",
|
||||||
|
ip: "4.3.2.2",
|
||||||
|
endpointPorts: []api.EndpointPort{{Name: "foo", Port: 8080, Protocol: "TCP"}},
|
||||||
|
additionalMasters: 3,
|
||||||
|
endpoints: &api.EndpointsList{
|
||||||
|
Items: []api.Endpoints{{
|
||||||
|
ObjectMeta: om("foo"),
|
||||||
|
Subsets: []api.EndpointSubset{{
|
||||||
|
Addresses: []api.EndpointAddress{
|
||||||
|
{IP: "4.3.2.1"},
|
||||||
|
},
|
||||||
|
Ports: []api.EndpointPort{{Name: "foo", Port: 8080, Protocol: "TCP"}},
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
expectUpdate: &api.Endpoints{
|
||||||
|
ObjectMeta: om("foo"),
|
||||||
|
Subsets: []api.EndpointSubset{{
|
||||||
|
Addresses: []api.EndpointAddress{
|
||||||
|
{IP: "4.3.2.1"},
|
||||||
|
{IP: "4.3.2.2"},
|
||||||
|
},
|
||||||
|
Ports: []api.EndpointPort{{Name: "foo", Port: 8080, Protocol: "TCP"}},
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
testName: "existing endpoints wrong name",
|
testName: "existing endpoints wrong name",
|
||||||
serviceName: "foo",
|
serviceName: "foo",
|
||||||
|
Loading…
Reference in New Issue
Block a user