如何更新有状态集?

问题描述 投票:0回答:1

我有一个有状态集想要更新,但收到错误:

The StatefulSet "postgres" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden

如何更新静态集? 我尝试缩小 Pod 的规模:

kubectl get pods
NAME                                          READY   STATUS             RESTARTS      AGE
postgres-0                                    0/1     Pending            0             11m


kubectl scale --replicas=0 deployment/postgres-0
error: no objects passed to scale

我尝试缩小服务规模:

kubectl get services
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
postgres     ClusterIP   None           <none>        5432/TCP   107m

kubectl scale --replicas=0 service/postgres
Error from server (NotFound): the server could not find the requested resource

所以我的问题是,如何将更改应用到

statefulSet

kubernetes kubectl kubernetes-statefulset
1个回答
0
投票

您已指定要更新有状态集,但实际上并未提及您要更新的内容

Kubernetes 中的 StatefulSet 有一个恼人的限制,即一旦创建了其中的指定字段,您就只能更改它们 - 正如错误消息所暗示的那样。

如果有状态集是不允许更改的字段之一,则更新有状态集的唯一方法是删除有状态集并重新创建它。

如果有状态集的名称不更改,kubernetes 应该重新附加相同的磁盘。

我在尝试更改有状态集上的标签和选择器时遇到了这个问题,并将其提交到 Kubernetes 项目中。 (https://github.com/kubernetes/kubernetes/issues/90519如果您有兴趣)

© www.soinside.com 2019 - 2024. All rights reserved.