你希望添加什么内容?
扩展REST客户端,以便用户在创建RESTClient时可以提供一个可选的退避基数/持续时间。
为什么需要这个?
REST客户端使用环境变量来配置用于GET请求重试的退避管理器,这些请求由于连接重置而出错。如果未设置环境变量,则退避默认为0(这似乎不太好)。此外,由于管理器依赖于环境变量,因此默认值是全局的,因此如果进程连接到多个集群,用户无法在每个集群的基础上进行配置。
https://github.com/kubernetes/client-go/blob/cbe28cf468c43969d2c170e079f556becfc7adb7/rest/client.go#L124
9条答案
按热度按时间vsikbqxv1#
/sig api-machinery
k3bvogb12#
BackoffManager是针对每个请求的,并且可以针对每个请求进行修改。
kubernetes/staging/src/k8s.io/client-go/rest/request.go
第225行到第235行
| | // BackOff设置请求的backoff管理器为指定的一个,|
| | // 如果提供nil,则默认为存根实现 |
| | func (r*Request) BackOff(managerBackoffManager) *Request { |
| | if manager==nil { |
| | r.backoff=&NoBackoff{} |
| | return r |
| | } |
| | |
| | r.backoff=manager |
| | return r |
| | } |
但是正如你所说,你只能在客户端中使用环境变量定义BackoffManager生成器🤔
xxls0lw83#
/triage已接受
/assign @aojea
您是否介意跟进此事或转交给正确的人?谢谢:)
jfewjypa4#
@briantkennedy 是否是按需配置而不是选项?
cgfeq70w5#
这与我们从运行中的Informer收到的请求遇到的问题有关。如果在通过工厂创建informer时暴露了该选项,那么也可以正常工作。
n1bvdmb66#
如果我们将BackoffBase和BackoffDuration添加到rest.Config中,并使用一个装饰器来获取BackoffManager,我们可以在不修改NewRESTClient签名的情况下实现这一点。
4ioopgfo7#
这与我们遇到的一个问题有关,即来自正在运行的Informer的请求。我不确定这个选项是否能解决Informer断开连接的问题🤔
kmynzznz8#
这个问题已经超过一年没有更新了,应该重新进行优先级评估。
你可以:
/triage accepted
(仅组织成员)相关/close
关闭这个问题有关优先级评估过程的更多详细信息,请参见 https://www.kubernetes.dev/docs/guide/issue-triage/
已接受移除优先级评估
33qvvth19#
/triage accepted