sig-kubernetes
sig-kubernetes copied to clipboard
【提问】pv_controller中的resync协程是什么作用?为什么这么设计?
问题描述
kube-controller中的pv_controller有三个协程:
- resync:定期使用List方法,同步所有pvc到claimQueue,同步所有pv到volumeQueue;
- volumeWorker:处理volumeQueue中的PV对象;
- claimWorker:处理claimQueue中的PVC对象。
1)使用resync定期同步pvc和pv的必要性是什么?为什么这么设计?
2)在volumeWorker和claimWorker中,处理PV和PVC是异步的。因此,一些PV对象的处理失败,可能是对应PVC处理未完成导致的。所以,PV在处理失败的obj时,并未直接将其重新Add进volumeWorker队列,而是等待resync协程将其重新放入队列。此时,使用queue.AddRateLimited()这类方法,是不是也可以达到响应的目的?resync协程是否还有其他的作用?
环境信息
相关代码
pkg/controller/volume/persistentvolume
备注
Hello, 我是云原生社区机器人妙尔尼尔(Mjölnir) @mjolnir-bot. 我将帮助你更好的来使用issue.
你似乎没有使用我们社区任何模板的格式填写问题。为了给你最好的帮助,我们建议您使用其中一种 templates.
可以联系社区管委会 或者SIG 核心人员,或者我的维护者:
- @rootsongjc , @stevensu1977
如果我们在几个工作日内仍未回复你创建的issue,可以尝试以下方法:
:owl: Hoot! I am a [Mjölnir-Bot], a bot for cloudnativeto. My owner is stevensu1977.
_Originally posted by @mjolnir-bot in https://github.com/cloudnativeto
问题描述
kube-controller中的pv_controller有三个协程:
* resync:定期使用List方法,同步所有pvc到claimQueue,同步所有pv到volumeQueue; * volumeWorker:处理volumeQueue中的PV对象; * claimWorker:处理claimQueue中的PVC对象。1)使用resync定期同步pvc和pv的必要性是什么?为什么这么设计?
2)在volumeWorker和claimWorker中,处理PV和PVC是异步的。因此,一些PV对象的处理失败,可能是对应PVC处理未完成导致的。所以,PV在处理失败的obj时,并未直接将其重新Add进volumeWorker队列,而是等待resync协程将其重新放入队列。此时,使用queue.AddRateLimited()这类方法,是不是也可以达到响应的目的?resync协程是否还有其他的作用?
环境信息
相关代码
pkg/controller/volume/persistentvolume
备注
可以看看这个issue https://github.com/kubernetes/kubernetes/issues/71761 有提出取代resync的方案,但没有实施