Start here. This is the direct spoken answer to practice first.
Why this question matters
Container limits are runtime constraints, not just scheduler metadata. A service can be CPU-throttled or killed for exceeding memory even when the host still has spare resources.
CPU requests influence scheduling and limits can throttle sustained computation. Memory limits create a hard boundary that includes managed heaps, native memory, stacks, buffers, and runtime overhead. Modern .NET detects container limits and adjusts GC behavior, but the application still needs headroom. I would measure realistic working set, allocation rate, GC pauses, CPU, latency, and concurrency before choosing requests and limits.