fix: kubeclt describe service endpoints shows endpoints that are not ready
Kubernetes-commit: 64e2066e5c823eaa958fcbdd6024d0253688f36c
This commit is contained in:
parent
5f5894cd61
commit
f3a7f811d0
|
@ -5452,6 +5452,15 @@ func formatEndpointSlices(endpointSlices []discoveryv1.EndpointSlice, ports sets
|
||||||
if len(list) == max {
|
if len(list) == max {
|
||||||
more = true
|
more = true
|
||||||
}
|
}
|
||||||
|
isReady := endpointSlices[i].Endpoints[j].Conditions.Ready == nil || *endpointSlices[i].Endpoints[j].Conditions.Ready
|
||||||
|
if !isReady {
|
||||||
|
// ready indicates that this endpoint is prepared to receive traffic,
|
||||||
|
// according to whatever system is managing the endpoint. A nil value
|
||||||
|
// indicates an unknown state. In most cases consumers should interpret this
|
||||||
|
// unknown state as ready.
|
||||||
|
// More info: vendor/k8s.io/api/discovery/v1/types.go
|
||||||
|
continue
|
||||||
|
}
|
||||||
if !more {
|
if !more {
|
||||||
list = append(list, endpointSlices[i].Endpoints[j].Addresses[0])
|
list = append(list, endpointSlices[i].Endpoints[j].Addresses[0])
|
||||||
}
|
}
|
||||||
|
@ -5467,6 +5476,15 @@ func formatEndpointSlices(endpointSlices []discoveryv1.EndpointSlice, ports sets
|
||||||
more = true
|
more = true
|
||||||
}
|
}
|
||||||
addr := endpointSlices[i].Endpoints[k].Addresses[0]
|
addr := endpointSlices[i].Endpoints[k].Addresses[0]
|
||||||
|
isReady := endpointSlices[i].Endpoints[k].Conditions.Ready == nil || *endpointSlices[i].Endpoints[k].Conditions.Ready
|
||||||
|
if !isReady {
|
||||||
|
// ready indicates that this endpoint is prepared to receive traffic,
|
||||||
|
// according to whatever system is managing the endpoint. A nil value
|
||||||
|
// indicates an unknown state. In most cases consumers should interpret this
|
||||||
|
// unknown state as ready.
|
||||||
|
// More info: vendor/k8s.io/api/discovery/v1/types.go
|
||||||
|
continue
|
||||||
|
}
|
||||||
if !more {
|
if !more {
|
||||||
hostPort := net.JoinHostPort(addr, strconv.Itoa(int(*port.Port)))
|
hostPort := net.JoinHostPort(addr, strconv.Itoa(int(*port.Port)))
|
||||||
list = append(list, hostPort)
|
list = append(list, hostPort)
|
||||||
|
|
|
@ -779,9 +779,9 @@ func TestDescribeService(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Endpoints: []discoveryv1.Endpoint{
|
Endpoints: []discoveryv1.Endpoint{
|
||||||
{Addresses: []string{"10.244.0.1"}},
|
{Addresses: []string{"10.244.0.1"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
{Addresses: []string{"10.244.0.2"}},
|
{Addresses: []string{"10.244.0.2"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
{Addresses: []string{"10.244.0.3"}},
|
{Addresses: []string{"10.244.0.3"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
},
|
},
|
||||||
Ports: []discoveryv1.EndpointPort{{
|
Ports: []discoveryv1.EndpointPort{{
|
||||||
Name: ptr.To("port-tcp"),
|
Name: ptr.To("port-tcp"),
|
||||||
|
@ -857,8 +857,8 @@ func TestDescribeService(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Endpoints: []discoveryv1.Endpoint{
|
Endpoints: []discoveryv1.Endpoint{
|
||||||
{Addresses: []string{"10.244.0.1"}},
|
{Addresses: []string{"10.244.0.1"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
{Addresses: []string{"10.244.0.2"}},
|
{Addresses: []string{"10.244.0.2"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
},
|
},
|
||||||
Ports: []discoveryv1.EndpointPort{{
|
Ports: []discoveryv1.EndpointPort{{
|
||||||
Name: ptr.To("port-tcp"),
|
Name: ptr.To("port-tcp"),
|
||||||
|
@ -875,9 +875,9 @@ func TestDescribeService(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Endpoints: []discoveryv1.Endpoint{
|
Endpoints: []discoveryv1.Endpoint{
|
||||||
{Addresses: []string{"10.244.0.3"}},
|
{Addresses: []string{"10.244.0.3"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(false)}},
|
||||||
{Addresses: []string{"10.244.0.4"}},
|
{Addresses: []string{"10.244.0.4"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
{Addresses: []string{"10.244.0.5"}},
|
{Addresses: []string{"10.244.0.5"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
},
|
},
|
||||||
Ports: []discoveryv1.EndpointPort{{
|
Ports: []discoveryv1.EndpointPort{{
|
||||||
Name: ptr.To("port-tcp"),
|
Name: ptr.To("port-tcp"),
|
||||||
|
@ -901,7 +901,7 @@ func TestDescribeService(t *testing.T) {
|
||||||
Port: port-tcp 8080/TCP
|
Port: port-tcp 8080/TCP
|
||||||
TargetPort: targetPort/TCP
|
TargetPort: targetPort/TCP
|
||||||
NodePort: port-tcp 31111/TCP
|
NodePort: port-tcp 31111/TCP
|
||||||
Endpoints: 10.244.0.1:9527,10.244.0.2:9527,10.244.0.3:9527 + 2 more...
|
Endpoints: 10.244.0.1:9527,10.244.0.2:9527,10.244.0.4:9527 + 1 more...
|
||||||
Session Affinity: None
|
Session Affinity: None
|
||||||
External Traffic Policy: Local
|
External Traffic Policy: Local
|
||||||
Internal Traffic Policy: Local
|
Internal Traffic Policy: Local
|
||||||
|
@ -909,6 +909,71 @@ func TestDescribeService(t *testing.T) {
|
||||||
Events: <none>
|
Events: <none>
|
||||||
`)[1:],
|
`)[1:],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "test-ready-field-empty",
|
||||||
|
service: &corev1.Service{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "bar",
|
||||||
|
Namespace: "foo",
|
||||||
|
},
|
||||||
|
Spec: corev1.ServiceSpec{
|
||||||
|
Type: corev1.ServiceTypeLoadBalancer,
|
||||||
|
Ports: []corev1.ServicePort{{
|
||||||
|
Name: "port-tcp",
|
||||||
|
Port: 8080,
|
||||||
|
Protocol: corev1.ProtocolTCP,
|
||||||
|
TargetPort: intstr.FromInt32(9527),
|
||||||
|
NodePort: 31111,
|
||||||
|
}},
|
||||||
|
Selector: map[string]string{"blah": "heh"},
|
||||||
|
ClusterIP: "1.2.3.4",
|
||||||
|
IPFamilies: []corev1.IPFamily{corev1.IPv4Protocol},
|
||||||
|
LoadBalancerIP: "5.6.7.8",
|
||||||
|
SessionAffinity: corev1.ServiceAffinityNone,
|
||||||
|
ExternalTrafficPolicy: corev1.ServiceExternalTrafficPolicyLocal,
|
||||||
|
InternalTrafficPolicy: ptr.To(corev1.ServiceInternalTrafficPolicyCluster),
|
||||||
|
HealthCheckNodePort: 32222,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
endpointSlices: []*discoveryv1.EndpointSlice{{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "bar-abcdef",
|
||||||
|
Namespace: "foo",
|
||||||
|
Labels: map[string]string{
|
||||||
|
"kubernetes.io/service-name": "bar",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Endpoints: []discoveryv1.Endpoint{
|
||||||
|
{Addresses: []string{"10.244.0.1"}},
|
||||||
|
},
|
||||||
|
Ports: []discoveryv1.EndpointPort{{
|
||||||
|
Name: ptr.To("port-tcp"),
|
||||||
|
Port: ptr.To[int32](9527),
|
||||||
|
Protocol: ptr.To(corev1.ProtocolTCP),
|
||||||
|
}},
|
||||||
|
}},
|
||||||
|
expected: dedent.Dedent(`
|
||||||
|
Name: bar
|
||||||
|
Namespace: foo
|
||||||
|
Labels: <none>
|
||||||
|
Annotations: <none>
|
||||||
|
Selector: blah=heh
|
||||||
|
Type: LoadBalancer
|
||||||
|
IP Families: IPv4
|
||||||
|
IP: 1.2.3.4
|
||||||
|
IPs: <none>
|
||||||
|
Desired LoadBalancer IP: 5.6.7.8
|
||||||
|
Port: port-tcp 8080/TCP
|
||||||
|
TargetPort: 9527/TCP
|
||||||
|
NodePort: port-tcp 31111/TCP
|
||||||
|
Endpoints: 10.244.0.1:9527
|
||||||
|
Session Affinity: None
|
||||||
|
External Traffic Policy: Local
|
||||||
|
Internal Traffic Policy: Cluster
|
||||||
|
HealthCheck NodePort: 32222
|
||||||
|
Events: <none>
|
||||||
|
`)[1:],
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "test-ServiceIPFamily",
|
name: "test-ServiceIPFamily",
|
||||||
service: &corev1.Service{
|
service: &corev1.Service{
|
||||||
|
@ -943,7 +1008,7 @@ func TestDescribeService(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Endpoints: []discoveryv1.Endpoint{
|
Endpoints: []discoveryv1.Endpoint{
|
||||||
{Addresses: []string{"10.244.0.1"}},
|
{Addresses: []string{"10.244.0.1"}, Conditions: discoveryv1.EndpointConditions{Ready: ptr.To(true)}},
|
||||||
},
|
},
|
||||||
Ports: []discoveryv1.EndpointPort{{
|
Ports: []discoveryv1.EndpointPort{{
|
||||||
Name: ptr.To("port-tcp"),
|
Name: ptr.To("port-tcp"),
|
||||||
|
|
Loading…
Reference in New Issue