如何扩展多个部署并并行等待部署

时间:2019-04-12 07:03:06

标签: kubernetes-go-client

我想使用kubernetes go客户端扩展部署,然后等到成功完成部署。我已经创建了可行的解决方案,但想知道我是否错过了任何边缘案例或可以改进它。

我的第一个非常简单的解决方案:

for _, deployment := range deploymentList.Items {
  deployment.Spec.Replicas = int32Ptr(1)
  _, err := deploymentsClient.Update(&deployment)
  if err != nil {
    panic(err)
  }
}

for {
  deploymentList, err = deploymentsClient.List(opts)
  if err != nil {
    panic(fmt.Errorf("List deployments failed: %v", err))
  }
  # checks if DeploymentAvailable and Status is "True"
  if available(deploymentList) {
    fmt.Println("Rolled out")
    break
  }
  fmt.Println("Not rolled out")
  time.Sleep(5 * time.Second)
}

这可行,但是我不喜欢轮询的想法。

第二个解决方案的灵感来自 kubectl rollout status 。我根据自己的需要调整了代码,并且可以正常工作。但是我不确定如何并行执行多个部署(对通道执行某些操作?)。

1 个答案:

答案 0 :(得分:0)

您可以使用客户端访问中的线人 订阅监视 .\Invoke-JobList.ps1 -jobFile joblist3.csv -nConcurrent 3 -Verbose 上的更改。

这是更复杂的代码,但是正如您所说,如果您不想进行轮询,这是一个解决方案。

以下是一些示例: