我刚刚将我的集群从 k8s 1.5 迁移到 1.6,我必须升级我的 zookeeper 图表以使用 spec.affinity 而不是 1.5 注释。
Error: UPGRADE FAILED: StatefulSet.apps "zk" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas' and 'containers' are forbidden.
如何在不删除现有 zookeeper 集群的情况下继续升级图表?
从
annotations:
scheduler.alpha.kubernetes.io/affinity: >
{
"podAntiAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": [
{
"labelSelector": {
"matchExpressions": [
{
"key": "app",
"operator": "In",
"values": ["zk-headless"]
}
]
},
"topologyKey": "kubernetes.io/hostname"
}
]
}
}
至
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk-headless
topologyKey: "kubernetes.io/hostname"
另外,我知道https://github.com/kubernetes/features/blob/master/release-1.6/release-notes-draft.md#scheduling在 1.6 中通过注释继续使用亲和性,但这个问题仍然存在当我想升级到 1.7 时存在
这是升级 statefulset 关联的上游问题,因此不幸的是,我们在这里无能为力。 很抱歉,我们无法在此为您提供帮助,但我建议您打开一个票证或在https://github.com/kubernetes/kubernetes上搜索现有票证以解决此问题。 谢谢!
另外,StatefulSets 是一个 alpha 对象(现在是 1.8 的 beta 版),因此不能保证这些资源可以通过 helm 可靠地升级。 我们试图让升级 kubernetes 中不稳定的资源变得容易,但有时由于向后不兼容的更改,这只是我们无法控制的,这就是野兽的本性。 对不起!
最有用的评论
另外,StatefulSets 是一个 alpha 对象(现在是 1.8 的 beta 版),因此不能保证这些资源可以通过 helm 可靠地升级。 我们试图让升级 kubernetes 中不稳定的资源变得容易,但有时由于向后不兼容的更改,这只是我们无法控制的,这就是野兽的本性。 对不起!