Problem Description
The Aerospike Kubernetes Operator may reference deprecated Kubernetes node labels for pod affinity, such as:
failure-domain.beta.kubernetes.io/region
failure-domain.beta.kubernetes.io/zone
In newer Kubernetes versions these labels have been deprecated and replaced with:
topology.kubernetes.io/region
topology.kubernetes.io/zone
When running the operator on newer Kubernetes versions where the deprecated labels are no longer present, pod affinity rules may fail and Aerospike pods may not schedule correctly.
Explanation
Older Kubernetes releases used the following labels to describe node topology:
failure-domain.beta.kubernetes.io/region
failure-domain.beta.kubernetes.io/zone
These labels were deprecated and replaced with the newer topology labels:
topology.kubernetes.io/region
topology.kubernetes.io/zone
Earlier versions of the Aerospike Kubernetes Operator referenced the deprecated labels in their pod affinity rules. On Kubernetes clusters that only expose the newer topology labels, this can lead to scheduling problems.
Solution
This issue was resolved in Aerospike Kubernetes Operator version 3.0.0 and later.
The updated operator uses the modern Kubernetes topology labels and supports newer Kubernetes versions.
If you are running an earlier operator version, upgrade to version 3.0.0 or later.
When upgrading from older versions, follow the documented upgrade path because RBAC resources were modified in version 3.0.0.
Upgrade documentation:
https://aerospike.com/docs/cloud/kubernetes/operator/3.0.0/upgrade-2.5.0-to-3.0.0/upgrading-operator
Notes
Kubernetes deprecated the failure-domain.beta.* labels beginning in Kubernetes 1.17 and replaced them with topology.kubernetes.io.* labels. Newer Kubernetes versions may remove the deprecated labels entirely, which can cause scheduling rules referencing them to fail.