0

我有一个自定义的 Kubernetes Go 操作员,我希望能够以零停机时间更新正在运行的实例/pod。即,我想在删除旧 pod 之前创建一个新 pod 并让它运行。

做这个的最好方式是什么?

目前我正在这样做:

// 1. Create the new pod
err := r.client.Create(context.TODO(), pod)

// 2. Delete the old pod
err := r.client.Create(context.TODO(), &oldpod)

// 3. Loop until the new pod is no longer in the pending phase

这可行,但当然旧的 pod 会在新的 pod 准备好之前被删除。

理想情况下,我想将删除(第 2 步)与等待循环交换,以便删除仅在新 pod 处于 PodSucceeded 或 PodRunning 阶段时发生。当我这样做时,我遇到了其他问题(我认为是因为从初始 pod create 调用了 reconcile 函数并且副本数变得不正确)。

4

0 回答 0