我写信是为了寻求帮助,以改进运行 Vault 的 Kubernetes StatefulSet 的自定义插件升级流程。
我们当前的设置如下:
可能的升级场景之一如下:
在这种情况下,从步骤 4(甚至步骤 2)到步骤 10 会出现停机,因为 Leader Pod 无法向插件提供请求(校验和不匹配)。最长可达 2 分钟。这是最坏的情况。有时,Vault-2 会立即被选为领导者,在这种情况下几乎没有停机时间。
我想知道我们如何改善最坏的情况以减少停机时间。 先谢谢你了
PS 我发现有时向运行旧插件版本的领导者 Pod 发出的请求可以成功,有时相同的请求会失败,并显示错误消息 failed to run Existence check (checksums did not match) 什么决定请求成功或失败?
您拥有在当前版本的 Vault 中使用此功能所需的一切。但你必须遵守规则。它们在这里,带有我为实现它们而编写的 Makefile 的链接:
到达步骤 3 后,您就处于稳定状态,可以发生领导者更改,而不必担心注册的实际插件版本。注册新插件将是原子的,并通过共识进行复制,因此要么每个节点都会获得它,要么没有一个节点会获得它。