plugin/kubernetes: don't return when ServerVersion return an error (#4490)

When err=nil try to determine the version of the k8s cluster and disable
endpoint slices. Don't return from connecting to the cluster.

In the future we should just default to true, and delete all this code.

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben 2021-02-25 18:14:57 +01:00 committed by GitHub
parent 4843cdfe1e
commit c2028e330f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -252,15 +252,14 @@ func (k *Kubernetes) InitKubeCache(ctx context.Context) (err error) {
} }
// Disable use of endpoint slices for k8s versions 1.18 and earlier. Endpoint slices were // Disable use of endpoint slices for k8s versions 1.18 and earlier. Endpoint slices were
// introduced in 1.17 but EndpointSliceMirroring was not added until 1.19. // introduced in 1.17 but EndpointSliceMirroring was not added until 1.19.
sv, err := kubeClient.ServerVersion() // if err != nil, we continue with the above default which is to use endpoint slices.
if err != nil { if sv, err := kubeClient.ServerVersion(); err == nil {
return err major, _ := strconv.Atoi(sv.Major)
} minor, _ := strconv.Atoi(strings.TrimRight(sv.Minor, "+"))
major, _ := strconv.Atoi(sv.Major) if k.opts.useEndpointSlices && major <= 1 && minor <= 18 {
minor, _ := strconv.Atoi(strings.TrimRight(sv.Minor, "+")) log.Info("Watching Endpoints instead of EndpointSlices in k8s versions < 1.19")
if k.opts.useEndpointSlices && major <= 1 && minor <= 18 { k.opts.useEndpointSlices = false
log.Info("watching Endpoints instead of EndpointSlices in k8s versions < 1.19") }
k.opts.useEndpointSlices = false
} }
k.APIConn = newdnsController(ctx, kubeClient, k.opts) k.APIConn = newdnsController(ctx, kubeClient, k.opts)