diff --git a/keps/sig-node/20190226-pod-overhead.md b/keps/sig-node/20190226-pod-overhead.md index f911d503f82f..fc4001383d33 100644 --- a/keps/sig-node/20190226-pod-overhead.md +++ b/keps/sig-node/20190226-pod-overhead.md @@ -25,26 +25,31 @@ This includes the Summary and Motivation sections. ## Table of Contents -* [Release Signoff Checklist](#release-signoff-checklist) -* [Summary](#summary) -* [Motivation](#motivation) - + [Goals](#goals) - + [Non-Goals](#non-goals) -* [Proposal](#proposal) - + [API Design](#api-design) - - [Pod overhead](#pod-overhead) - + [RuntimeClass admission controller](#runtimeclass-admission-controller) - + [Implementation Details](#implementation-details) - + [Risks and Mitigations](#risks-and-mitigations) -* [Design Details](#design-details) - + [Graduation Criteria](#graduation-criteria) - + [Upgrade / Downgrade Strategy](#upgrade---downgrade-strategy) - + [Version Skew Strategy](#version-skew-strategy) -* [Implementation History](#implementation-history) -* [Drawbacks](#drawbacks) -* [Alternatives](#alternatives) - + [Introduce pod level resource requirements](#introduce-pod-level-resource-requirements) - + [Leaving the PodSpec unchanged](#leaving-the-podspec-unchanged) +- [Pod Overhead](#pod-overhead) + - [Table of Contents](#table-of-contents) + - [Release Signoff Checklist](#release-signoff-checklist) + - [Summary](#summary) + - [Motivation](#motivation) + - [Goals](#goals) + - [Non-Goals](#non-goals) + - [Proposal](#proposal) + - [API Design](#api-design) + - [Pod overhead](#pod-overhead) + - [Container Runtime Interface (CRI)](#container-runtime-interface-cri) + - [ResourceQuota changes](#resourcequota-changes) + - [RuntimeClass changes](#runtimeclass-changes) + - [RuntimeClass admission controller](#runtimeclass-admission-controller) + - [Implementation Details](#implementation-details) + - [Risks and Mitigations](#risks-and-mitigations) + - [Design Details](#design-details) + - [Graduation Criteria](#graduation-criteria) + - [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy) + - [Version Skew Strategy](#version-skew-strategy) + - [Implementation History](#implementation-history) + - [Drawbacks](#drawbacks) + - [Alternatives](#alternatives) + - [Introduce pod level resource requirements](#introduce-pod-level-resource-requirements) + - [Leaving the PodSpec unchanged](#leaving-the-podspec-unchanged) ## Release Signoff Checklist @@ -128,6 +133,7 @@ Pod { Overhead *ResourceRequirements } } +``` All PodSpec and RuntimeClass fields are immutable, including the `Overhead` field. For scheduling, the pod `Overhead` resource requests are added to the container resource requests. @@ -161,18 +167,22 @@ instance for sizing the Kata Container VM. LinuxContainerResources is added to the LinuxPodSandboxConfig for both overhead and container totals, as optional fields: +``` type LinuxPodSandboxConfig struct { Overhead *LinuxContainerResources ContainerResources *LinuxContainerResources } +``` WindowsContainerResources is added to a newly created WindowsPodSandboxConfig for both overhead and container totals, as optional fields: +``` type WindowsPodSandboxConfig struct { Overhead *WindowsContainerResources ContainerResources *WindowsContainerResources } +``` ContainerResources field in the LinuxPodSandboxConfig and WindowsPodSandboxConfig matches the pod-level limits (i.e. total of container limits). Overhead is tracked separately since the sandbox overhead won't necessarily @@ -187,7 +197,6 @@ add the pod `Overhead`to the container resource request summation. Expand the runtimeClass type to include sandbox overhead, `Overhead *Overhead`. -``` Where Overhead is defined as follows: ``` @@ -195,6 +204,7 @@ type Overhead struct { PodFixed *ResourceRequirements } ``` + In the future, the `Overhead` definition could be extended to include fields that describe a percentage based overhead (scale the overhead based on the size of the pod), or container-level overheads. These are left out of the scope of this proposal.