ggjtm opened a new issue, #11022: URL: https://github.com/apache/ignite/issues/11022
## Problem: Currently, the Kubernetes IP Finder requires configuring a [Kubernetes Service](https://kubernetes.io/docs/concepts/services-networking/service/) name, and [the module queries](https://github.com/apache/ignite/blob/27ed13a607815b385085b3d629e961265ff64b54/modules/kubernetes/src/main/java/org/apache/ignite/internal/kubernetes/connection/KubernetesServiceAddressResolver.java#L95) [this object in the Kubernetes API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#service-v1-core) to enumerate Ignite cluster node IP addresses. Kubernetes will list only those nodes which have already successfully become ready to receive query traffic. OrderedReady pod management policy in StatefulSet is the default, and works well, but enforces the slowest cluster startup as each node must present itself as ready prior to the next node's pod startup. Parallel pod management policy does not work because all nodes perform and complete the discovery phase before any nodes have present ed themselves as ready for the Kubernetes Service. ## Consequences: Large clusters (many nodes) and clusters with many cache groups may take tens of minutes (or more) to start up. Kubernetes hosted Ignite clusters should behave more like non-Kubernetes hosted clusters with Parallel pod management policy, enabling independent nodes to perform most startup work concurrently. This proposal would enable arbitrarily large Kubernetes clusters to start up in similar time to small clusters. ## Proposal: 1. Continue to use nodes' IPs enumerated by the Service ClusterIPs or Endpoints 2. Inspect the Service spec.Selector 3. List pods constrained by the Service Selector 4. Iterate through listed pods, and query each Pod's status to collect PodIPs 5. Merge collected PodIPs to the list of IPs from the Service ## References: * Code StatusQuo https://github.com/apache/ignite/blob/27ed13a607815b385085b3d629e961265ff64b54/modules/kubernetes/src/main/java/org/apache/ignite/internal/kubernetes/connection/KubernetesServiceAddressResolver.java#L95 * [Kubernetes StatefulSet .spec.PodManagementPolicy](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies) * https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#service-v1-core * https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#list-endpoints-v1-core * https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#status-operations-pod-v1-core -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
