-
Notifications
You must be signed in to change notification settings - Fork 70
Introducing Kubemodel blog post #441
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
base: main
Are you sure you want to change the base?
Conversation
spa-raj
commented
Dec 3, 2025
- Blog post introducing Kubemodel - Opencost Data Model 2.0 which I worked on as part of my LFX Fall 2025 Mentorship.
Signed-off-by: Sparsh <[email protected]>
Signed-off-by: Sparsh <[email protected]>
✅ Deploy Preview for opencost ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
ameijer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
general feedback - this is a tech blog post, I suggest you embed code snippets of a few selected data structures and walk the users through it. EMbed in places like the o(1) discussions etc
|
|
||
| ## The Challenge: Tracking Resources in a Dynamic Environment | ||
|
|
||
| Kubernetes is inherently dynamic. Pods come and go, deployments scale up and down, and resource names can be reused across recreation cycles. Traditional metric tracking that relies solely on resource names struggles in this environment: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Kubernetes is inherently dynamic. Pods come and go, deployments scale up and down, and resource names can be reused across recreation cycles. Traditional metric tracking that relies solely on resource names struggles in this environment: | |
| Kubernetes is inherently dynamic. Pods come and go, deployments scale up and down, and resource names can be reused across recreation cycles. Traditional metric tracking that relies solely on resource names struggles in this environment for a number of reasons including: |
|
|
||
| Kubernetes is inherently dynamic. Pods come and go, deployments scale up and down, and resource names can be reused across recreation cycles. Traditional metric tracking that relies solely on resource names struggles in this environment: | ||
|
|
||
| - **Name reuse**: When a pod is recreated with the same name, historical cost data can become ambiguous |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - **Name reuse**: When a pod is recreated with the same name, historical cost data can become ambiguous | |
| - **Name reuse**: When a pod is recreated with the same name, historical cost data can become ambiguous. This is particularly problematic in stateful set pods |
| - **Owner/Controller** - Deployments, StatefulSets, ReplicaSets, DaemonSets, Jobs | ||
| - **Service** - Network service abstractions | ||
| - **Volume & PVC** - Persistent storage resources | ||
| - **ResourceQuota** - Namespace resource limits and requests |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
coming soon - GPU
|
|
||
| ## Binary Serialization with Bingen | ||
|
|
||
| KubeModel introduces **bingen-annotated Go structs** enabling efficient binary serialization. Bingen is IBM Kubecost's internal tool for generating binary serialization code from annotated Go structs. This provides: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| KubeModel introduces **bingen-annotated Go structs** enabling efficient binary serialization. Bingen is IBM Kubecost's internal tool for generating binary serialization code from annotated Go structs. This provides: | |
| KubeModel introduces **bingen-annotated Go structs** enabling efficient binary serialization. Bingen is OpenCost specific tooling for generating binary serialization code from annotated Go structs. This provides: |
|
|
||
| These tests run across multiple time windows (1h, 6h, 24h) to ensure consistency and catch edge cases in real-world scenarios. | ||
|
|
||
| ## The Road Ahead |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this section feel very AI-ish. Nothing in here is regarding what you think the next steps are, just what has already been accomplished, right?
|
|
||
| ## Acknowledgments | ||
|
|
||
| A special thanks to my mentors for their guidance and support throughout this project: [Alex Meijer](https://github.com/ameijer), [Sean Holcomb](https://github.com/Sean-Holcomb), and [Niko Kovacevic](https://github.com/nikovacevic). No newline at end of file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
❤️