资源版本太旧:

时间:2021-05-19 15:01:09

标签: kubernetes amazon-eks

我正在将我们的服务从 eks1.14 迁移到 eks1.18 集群。我发现我们的一些部署存在很多错误。

谁能告诉我,我该如何解决这个错误?

May 19th 2021, 10:56:30.297 io.fabric8.kubernetes.client.KubernetesClientException: too old resource version: 13899376 (13911551)
    at io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager$1.onMessage(WatchConnectionManager.java:259)
    at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.java:323)
    at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.java:219)
    at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.java:105)
    at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.java:274)
    at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:214)

1 个答案:

答案 0 :(得分:2)

这是 Kubernetes 的标准行为。当您要求查看太旧的 resourceVersion 的更改时 - 即当它无法再告诉您自该版本以来发生了什么变化时,因为发生了太多变化。因此,您应该避免一次升级多个版本。尝试将集群从 1.14 更新到 1.15,然后从 1.15 更新到 1.16,依此类推。 您还可以阅读有关非常相似的问题 here 的更多信息。您可以在那里找到解决问题的另一种方法。

在 Amazon EKS 的 documentation 中,我们可以找到:

<块引用>

如果您有任何 AWS Fargate pod 的 kubelet 次要版本早于 1.16,则将集群从 1.16 更新到 1.17 将失败。在将集群从 1.16 更新到 1.17 之前,您需要回收 Fargate Pod,使其 kubelet 为 1.16,然后再尝试将集群更新到 1.17。

基于这个例子和大量的依赖,逐个版本升级集群是个好主意。