Recent Kubernetes scheduler improvements and Windows container runtime updates let teams run .NET 10 services with production-grade density and restart behavior. Combined with OpenTelemetry SDK changes and declarative IaC tooling, deployment pipelines now produce repeatable environments without manual node configuration.
The practical result is faster iteration for ASP.NET Core APIs and background services while retaining Windows-specific dependencies such as COM interop and legacy authentication libraries. The following sections outline the current patterns that matter for teams moving workloads onto orchestrated Windows nodes.
#Windows Node Scheduling and Resource Limits
Kubernetes 1.32+ improved the Windows node kubelet to enforce CPU and memory limits more accurately for containerd runtimes. Set explicit requests and limits on every pod to avoid noisy-neighbor issues on shared nodes.
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "1Gi"
#OpenTelemetry Instrumentation in .NET 10
The OpenTelemetry .NET SDK now ships automatic instrumentation for ASP.NET Core 10 and Entity Framework Core out of the box. Enable it at startup to export traces and metrics to any compatible collector without custom middleware.
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddAspNetCoreInstrumentation())
.WithMetrics(m => m.AddAspNetCoreInstrumentation());
#Declarative Infrastructure with Bicep
Bicep modules for AKS Windows node pools now support the latest Windows Server 2025 base image and automatic OS patching. Store the module in a shared registry so every environment receives identical node configuration.
- Define node pool size and taints once, reference from multiple environments
- Use parameter files to switch between dev and prod SKU sizes
- Integrate with GitHub Actions for drift detection on every PR
#Edge and Observability Considerations
When extending workloads to edge locations, keep the same OpenTelemetry pipeline. Sidecar collectors on Windows nodes forward spans over gRPC to a central backend, preserving trace context across the cluster boundary.
Adopt these patterns incrementally: start with resource limits and OpenTelemetry on a single node pool, then introduce Bicep modules for the remaining environments. This sequence minimizes risk while delivering measurable improvements in deployment consistency and troubleshooting speed.
Comments
No comments yet