Go get在新创建的对象上成功之前需要等待多长时间?

Go get在新创建的对象上成功之前需要等待多长时间?,go,kubernetes,Go,Kubernetes,如果我创建了一个对象,在get成功之前我需要等待多长时间?我不想添加具有任意值的睡眠 在下面的代码中,我尝试创建一个服务帐户和密码。然后我马上去拿 err:=r.CreateSAandSecret() 如果出错!=零{ log.Info(“无法创建SA和机密”) 返回“”,错误 } //应该在这里睡多久??? 令牌,错误:=r.GetAuthorizationTokenfromSecret() 如果出错!=零{ log.Info(“无法从secret获取令牌”) } 如果有更好的模式,请告知。

如果我创建了一个对象,在get成功之前我需要等待多长时间?我不想添加具有任意值的睡眠

在下面的代码中,我尝试创建一个服务帐户和密码。然后我马上去拿

err:=r.CreateSAandSecret()
如果出错!=零{
log.Info(“无法创建SA和机密”)
返回“”,错误
}
//应该在这里睡多久???
令牌,错误:=r.GetAuthorizationTokenfromSecret()
如果出错!=零{
log.Info(“无法从secret获取令牌”)
}

如果有更好的模式,请告知。

没有单一答案。理论上,它应该总是在写后读,但这里你要问的是一个派生对象。这意味着您需要等待服务帐户控制器看到新对象并创建令牌密钥。控制器都使用由etcd手表驱动的API手表。虽然它通常很快,但无法保证任何特定的时间。
大多数情况下,它会在etcd的iops负载下变慢,或者如果您一次创建500万个服务帐户,大多数控制器会一次处理一个。此外,在拜占庭式故障期间,手表可能会丢弃事件,这意味着它永远不会发生(除非您手动重新启动控制器或以其他方式触发协调)。

请输入正确的格式,不带行号(除非相关),用语言(go?)标记,并指出“对象”的类型为了让…@Matthieu好一点?一点。我进一步编辑了语言名称,因为答案可能会明显不同,这取决于它处理Kubernetes的方式。我可能也应该提到正确的答案:尝试获取它,如果它失败,请稍后重试并退出。