I want to create nodegroup selector which contain only primary pod and exclude backup pod in kubernates. How to achieve that using helm chart ?
appVersion: version1
kind: StatefulSet
metadata:
name: statefulname
label:
....
....
....
spec:
replica: 2
.....
container:
.....
....
nodeselecor:
{{$nodegroup}}
here result is
NAME READY STATUS STARTS AGE
pod/zookeeper-np-0 1/1 Running 0 203s
pod/zookeeper-np-1 1/1 Running 0 137s
here replica create 2 instance of pod with suffix -0 and -1 and both have same node selector but i want to that for
pod/zookeeper-np-0
for this node selector is node group ng1
pod/zookeeper-np-1
for this node selector is node group ng2
i tried with iterate also not getting error
Caused By: java.lang.IllegalStateException: Identified another participant with the same name for Space: newspace_container_newspace
You have not shared the K8s version details however you can look for the using the Node affinity with statefulset or else topologySpreadConstraints
topologySpreadConstraints:
- maxSkew: <integer>
topologyKey: <string>
whenUnsatisfiable: <string>
labelSelector: <object>
Read more at : https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
using the topologySpreadConstraints you can spread the PODs across the nodes.
Node Affinity
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/e2e-az-name
operator: In
values:
- e2e-az1
- e2e-az2
Read more : https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
You can also use the node affinity to do the same scheduling the PODs on different nodes.