-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Streaming Encoding for LIST Responses #5116
Comments
/sig api-machinery |
I'm glad to see this proposal. We have also implemented similar capabilities in our inner repo and are preparing to push this part to upstream. We have submitted a CFP for the upcoming KubeCon China conference. In our implementation, we use sync.Pool to efficiently manage memory allocation and cache the serialized results of each item. When the buffer reaches a certain size, we execute a flush operation to parallelize the serialization processing and write to http2. Additionally, we have added support for gzip compression, which is only enabled when the first batch of cached data reaches 128 * 1024. For json serialization, we have customized the As for protobuf, we generate code through a generator to ensure reverse protobuf marshalling compatibility.
And it has conducted extensive testing with large datasets and have obtained comparative results. @yulongfang Can you share some benchmark results? |
Thank @chenk008 for your introduction. We have many large-scale clusters in Alibaba Cloud. When the controllers of these large-scale clusters are restarted, they will initiate a full list request to the apiserver, which will have a certain impact on the stability of the cluster. We have to use larger machines to run the apiserver, resulting in a waste of resources. In this context, we adopted the method to carry out relevant optimization and achieved the following results. list json format return data stress test scenario description:
list json format return data related stress test data: qps 0.05
qps 0.1
list protobuf Format Returned data Stress test scenario description:
list configmaps format Returned data Related stress test data: qps 0.05
qps 0.1
|
FYI: Technical details are usually discussed in KEP PRs or elsewhere, with the KEP issue serving as a place to link back work. @chenk008 @yulongfang you might consider reviewing #5119 |
Hey @chenk008 @yulongfang please see the previous discussion in kubernetes/kubernetes#129304 and kubernetes/kubernetes#129334. We also added running a automatic benchmark of list requests. You can see the results in https://perf-dash.k8s.io/#/?jobname=benchmark%20list&metriccategoryname=E2E&metricname=Resources&Resource=memory&PodName=kube-apiserver-benchmark-list-master%2Fkube-apiserver We currently run it in JSON + configmap with |
/milestone v1.33 |
@jpbetz @dipesh-rawat this is target to v1.33 and the KEP was merged. |
@serathius @pacoxu Unfortunately, the enhancement freeze deadline has passed, and this KEP issue was not To move forward, we’ll need a short exception request filed so the team can add the lead-opted-in label and manually include this in the tracking board. If you still wish to progress this enhancement in v1.33, please file an exception request as soon as possible, within three days. If you have any questions, you can reach out in the #release-enhancements channel on Slack and we'll be happy to help. Thanks! (cc v1.33 Release Lead @npolshakova) |
@serathius Since the release team has APPROVED the exception request here. This will be considered to be added to the milestone for v1.33 release. |
Hello @serathius 👋, v1.33 Enhancements team here. This enhancement is targeting stage Here's where this enhancement currently stands:
With all the KEP requirements in place and merged into k/enhancements, this enhancement is all good for the upcoming enhancements freeze. 🚀 Could we please link the KEP README in the issue description.
The status of this enhancement is marked as /label tracked/yes |
I've manually added this KEP to the tracking board and marked it as tracked for enhancements freeze🚀 Could one of the sig leads add the |
@serathius Would you be able to assist with the above request? It would be great to get the label added as work is being done in this v1.33 release. |
I'm not a SIG api-machinery lead, so I don't think I should use it. I can ask nicely on Slack. |
/label lead-opted-in |
Enhancement Description
k/enhancements
) update PR(s): KEP-5116: Add KEP (Streaming response encoding) #5119k/k
) update PR(s):deferredResponseWriter
kubernetes#130264k/website
) update(s):The text was updated successfully, but these errors were encountered: