<p>I am using a StatefulSet to deploy my application and I have 10 replicas. Because each pod waits for the previous pod to be ready, it takes a long time to spin up my cluster. I found the <a href="https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-management-policies" rel="nofollow noreferrer">podManagementPolicy option</a> on the Kubernetes documentation. I want to set <code>podManagementPolicy</code> to <code>Parallel</code> so my pods don't wait for each other (which I don't need) and my build time is shorter.</p>
<p>However, I am getting the following error when I try to set <code>podManagementPolicy</code> to <code>Parallel</code>:</p>
<blockquote>
<p>The StatefulSet &quot;xxx&quot; is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden</p>
</blockquote>
<p>Here is the yaml file for my StatefulSet:</p>
<pre><code>apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: xxx
spec:
  podManagementPolicy: Parallel
  selector:
    matchLabels:
      app: xxx
  serviceName: &quot;xxx&quot;
  replicas: 10
  minReadySeconds: 0
  template:
    metadata:
      labels:
        app: xxx
    spec:
      containers:
        - name: xxx
          image: xxx.com/xxx:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8000
      imagePullSecrets:
        - name: dockerregistrykey
</code></pre>
<p>I am using an<a href="https://www.linode.com/products/kubernetes/" rel="nofollow noreferrer"> Linode LKE</a> cluster and the Kubernetes version is 1.25.</p>

<p>Looks like you are on K8s version <strong>1.24</strong> or above as mentioned in error you can only update a few fields in <strong>statefulset</strong> unlike <strong>Deployment</strong> or <strong>POD</strong>.</p>
<p>So you have to <strong>delete</strong> and <strong>re-apply</strong> the new changes is the only solution.</p>
<p>You can also create the <strong>new</strong> <strong>stateful</strong> set with a different name and keep the <strong>label</strong> same as the existing running one.</p>
<p>Once one stateful set is up &amp; running you can remove the <strong>older</strong> one and <strong>service</strong> will forward the traffic to new running replicas, guessing there won't be any issues with data as you mentioned about it being fine to run <strong>parallel</strong>.</p>
<p>In case you have a requirement to use existing <strong>PVC</strong> to store the <strong>data</strong>, deleting the <strong>statefulset</strong> is only solution i am seeing.</p>
