Skip to content

Commit edd2dd0

Browse files
authored
Merge pull request #15337 from kubernetes/dev-1.16
Official 1.16 Release Docs
2 parents 67c20b3 + b2bc619 commit edd2dd0

File tree

220 files changed

+74093
-3472
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

220 files changed

+74093
-3472
lines changed

config.toml

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ time_format_blog = "Monday, January 02, 2006"
6666
description = "Production-Grade Container Orchestration"
6767
showedit = true
6868

69-
latest = "v1.15"
69+
latest = "v1.16"
7070

71-
fullversion = "v1.15.0"
72-
version = "v1.15"
71+
fullversion = "v1.16.0"
72+
version = "v1.16"
7373
githubbranch = "master"
7474
docsbranch = "master"
7575
deprecated = false
@@ -84,10 +84,10 @@ announcement = false
8484
announcement_message = "The Kubernetes Documentation team would like your feedback! Please take a <a href='https://www.surveymonkey.com/r/8R237FN' target='_blank'>short survey</a> so we can improve the Kubernetes online documentation."
8585

8686
[[params.versions]]
87-
fullversion = "v1.15.0"
88-
version = "v1.15"
89-
githubbranch = "v1.15.0"
90-
docsbranch = "release-1.15"
87+
fullversion = "v1.16.0"
88+
version = "v1.16"
89+
githubbranch = "v1.16.0"
90+
docsbranch = "release-1.16"
9191
url = "https://kubernetes.io"
9292

9393
[params.pushAssets]
@@ -102,33 +102,33 @@ js = [
102102
]
103103

104104
[[params.versions]]
105-
fullversion = "v1.14.3"
105+
fullversion = "v1.15.3"
106+
version = "v1.15"
107+
githubbranch = "v1.15.3"
108+
docsbranch = "release-1.15"
109+
url = "https://v1-15.docs.kubernetes.io"
110+
111+
[[params.versions]]
112+
fullversion = "v1.14.6"
106113
version = "v1.14"
107-
githubbranch = "v1.14.3"
114+
githubbranch = "v1.14.6"
108115
docsbranch = "release-1.14"
109116
url = "https://v1-14.docs.kubernetes.io"
110117

111118
[[params.versions]]
112-
fullversion = "v1.13.7"
119+
fullversion = "v1.13.10"
113120
version = "v1.13"
114-
githubbranch = "v1.13.7"
121+
githubbranch = "v1.13.10"
115122
docsbranch = "release-1.13"
116123
url = "https://v1-13.docs.kubernetes.io"
117124

118125
[[params.versions]]
119-
fullversion = "v1.12.9"
126+
fullversion = "v1.12.10"
120127
version = "v1.12"
121-
githubbranch = "v1.12.9"
128+
githubbranch = "v1.12.10"
122129
docsbranch = "release-1.12"
123130
url = "https://v1-12.docs.kubernetes.io"
124131

125-
[[params.versions]]
126-
fullversion = "v1.11.10"
127-
version = "v1.11"
128-
githubbranch = "v1.11.10"
129-
docsbranch = "release-1.11"
130-
url = "https://v1-11.docs.kubernetes.io"
131-
132132
# Language definitions.
133133

134134
[languages]

content/en/blog/_posts/2018-01-00-Introducing-Client-Go-Version-6.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ spec:
7474
```
7575
$ kubectl create -f app.yaml
7676
77-
The App "example-app" is invalid: []: Invalid value: map[string]interface {}{"apiVersion":"mygroup.example.com/v1", "kind":"App", "metadata":map[string]interface {}{"creationTimestamp":"2017-08-31T20:52:54Z", "uid":"5c674651-8e8e-11e7-86ad-f0761cb232d1", "selfLink":"", "clusterName":"", "name":"example-app", "namespace":"default", "deletionTimestamp":interface {}(nil), "deletionGracePeriodSeconds":(\*int64)(nil)}, "spec":map[string]interface {}{"replicas":15, "version":"v1.0.2"}}:
77+
The App "example-app" is invalid: []: Invalid value: map[string]interface {}{"apiVersion":"mygroup.example.com/v1", "kind":"App", "metadata":map[string]interface {}{"creationTimestamp":"2017-08-31T20:52:54Z", "uid":"5c674651-8e8e-11e7-86ad-f0761cb232d1", "clusterName":"", "name":"example-app", "namespace":"default", "deletionTimestamp":interface {}(nil), "deletionGracePeriodSeconds":(\*int64)(nil)}, "spec":map[string]interface {}{"replicas":15, "version":"v1.0.2"}}:
7878
validation failure list:
7979
spec.replicas in body should be less than or equal to 10
8080
spec.version in body should be one of [v1.0.0 v1.0.1]

content/en/blog/_posts/2018-03-00-How-To-Integrate-Rollingupdate-Strategy.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ items:
168168
169169
resourceVersion: "415852"
170170
171-
selfLink: /apis/mysql.orain.com/v1/namespaces/default/mysqlclusters/clustershard-c
172-
173171
uid: 6bb089bb-b56f-11e7-ae02-525400e717a6
174172
175173
spec:

content/en/docs/concepts/architecture/nodes.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,13 @@ includes all containers started by the kubelet, but not containers started direc
290290
If you want to explicitly reserve resources for non-Pod processes, follow this tutorial to
291291
[reserve resources for system daemons](/docs/tasks/administer-cluster/reserve-compute-resources/#system-reserved).
292292

293+
## Node topology
294+
295+
{{< feature-state state="alpha" >}}
296+
297+
If you have enabled the `TopologyManager`
298+
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/), then
299+
the kubelet can use topology hints when making resource assignment decisions.
293300

294301
## API Object
295302

@@ -298,3 +305,7 @@ API object can be found at:
298305
[Node API object](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#node-v1-core).
299306

300307
{{% /capture %}}
308+
{{% capture whatsnext %}}
309+
* Read about [node components](https://kubernetes.io/docs/concepts/overview/components/#node-components)
310+
* Read about node-level topology: [Control Topology Management Policies on a node](/docs/tasks/administer-cluster/topology-manager/)
311+
{{% /capture %}}

content/en/docs/concepts/configuration/assign-pod-node.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,4 +394,8 @@ The design documents for
394394
[node affinity](https://git.k8s.io/community/contributors/design-proposals/scheduling/nodeaffinity.md)
395395
and for [inter-pod affinity/anti-affinity](https://git.k8s.io/community/contributors/design-proposals/scheduling/podaffinity.md) contain extra background information about these features.
396396

397+
Once a Pod is assigned to a Node, the kubelet runs the Pod and allocates node-local resources.
398+
The [topology manager](/docs/tasks/administer-cluster/topology-manager/) can take part in node-level
399+
resource allocation decisions.
400+
397401
{{% /capture %}}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
---
2+
reviewers:
3+
- dchen1107
4+
- egernst
5+
- tallclair
6+
title: Pod Overhead
7+
content_template: templates/concept
8+
weight: 20
9+
---
10+
11+
{{% capture overview %}}
12+
13+
{{< feature-state for_k8s_version="v1.16" state="alpha" >}}
14+
15+
16+
When you run a Pod on a Node, the Pod itself takes an amount of system resources. These
17+
resources are additional to the resources needed to run the container(s) inside the Pod.
18+
_Pod Overhead_ is a feature for accounting for the resources consumed by the pod infrastructure
19+
on top of the container requests & limits.
20+
21+
22+
{{% /capture %}}
23+
24+
25+
{{% capture body %}}
26+
27+
## Pod Overhead
28+
29+
In Kubernetes, the pod's overhead is set at
30+
[admission](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks)
31+
time according to the overhead associated with the pod's
32+
[RuntimeClass](https://kubernetes.io/docs/concepts/containers/runtime-class/).
33+
34+
When Pod Overhead is enabled, the overhead is considered in addition to the sum of container
35+
resource requests when scheduling a pod. Similarly, Kubelet will include the pod overhead when sizing
36+
the pod cgroup, and when carrying out pod eviction ranking.
37+
38+
### Set Up
39+
40+
You need to make sure that the `PodOverhead`
41+
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) is enabled (it is off by default)
42+
across your cluster. This means:
43+
44+
- in {{< glossary_tooltip text="kube-scheduler" term_id="kube-scheduler" >}}
45+
- in {{< glossary_tooltip text="kube-apiserver" term_id="kube-apiserver" >}}
46+
- in the {{< glossary_tooltip text="kubelet" term_id="kubelet" >}} on each Node
47+
- in any custom API servers that use feature gates
48+
49+
{{< note >}}
50+
Users who can write to RuntimeClass resources are able to have cluster-wide impact on
51+
workload performance. You can limit access to this ability using Kubernetes access controls.
52+
See [Authorization Overview](/docs/reference/access-authn-authz/authorization/) for more details.
53+
{{< /note >}}
54+
55+
{{% /capture %}}
56+
57+
{{% capture whatsnext %}}
58+
59+
* [RuntimeClass](/docs/concepts/containers/runtime-class/)
60+
* [PodOverhead Design](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
61+
62+
{{% /capture %}}
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
---
2+
reviewers:
3+
- bsalamat
4+
- k82cn
5+
- ahg-g
6+
title: Resource Bin Packing for Extended Resources
7+
content_template: templates/concept
8+
weight: 10
9+
---
10+
11+
{{% capture overview %}}
12+
13+
{{< feature-state for_k8s_version="1.16" state="alpha" >}}
14+
15+
The kube-scheduler can be configured to enable bin packing of resources along with extended resources using `RequestedToCapacityRatioResourceAllocation` priority function. Priority functions can be used to fine-tune the kube-scheduler as per custom needs.
16+
17+
{{% /capture %}}
18+
19+
{{% capture body %}}
20+
21+
## Enabling Bin Packing using RequestedToCapacityRatioResourceAllocation
22+
23+
Before Kubernetes 1.15, Kube-scheduler used to allow scoring nodes based on the request to capacity ratio of primary resources like CPU and Memory. Kubernetes 1.16 added a new parameter to the priority function that allows the users to specify the resources along with weights for each resource to score nodes based on the request to capacity ratio. This allows users to bin pack extended resources by using appropriate parameters improves the utilization of scarce resources in large clusters. The behavior of the `RequestedToCapacityRatioResourceAllocation` priority function can be controlled by a configuration option called `requestedToCapacityRatioArguments`. This argument consists of two parameters `shape` and `resources`. Shape allows the user to tune the function as least requested or most requested based on `utilization` and `score` values. Resources
24+
consists of `name` which specifies the resource to be considered during scoring and `weight` specify the weight of each resource.
25+
26+
Below is an example configuration that sets `requestedToCapacityRatioArguments` to bin packing behavior for extended resources `intel.com/foo` and `intel.com/bar`
27+
28+
```json
29+
{
30+
"kind" : "Policy",
31+
"apiVersion" : "v1",
32+
33+
...
34+
35+
"priorities" : [
36+
37+
...
38+
39+
{
40+
"name": "RequestedToCapacityRatioPriority",
41+
"weight": 2,
42+
"argument": {
43+
"requestedToCapacityRatioArguments": {
44+
"shape": [
45+
{"utilization": 0, "score": 0},
46+
{"utilization": 100, "score": 10}
47+
],
48+
"resources": [
49+
{"name": "intel.com/foo", "weight": 3},
50+
{"name": "intel.com/bar", "weight": 5}
51+
]
52+
}
53+
}
54+
}
55+
],
56+
}
57+
```
58+
59+
**This feature is disabled by default**
60+
61+
### Tuning RequestedToCapacityRatioResourceAllocation Priority Function
62+
63+
`shape` is used to specify the behavior of the `RequestedToCapacityRatioPriority` function.
64+
65+
```yaml
66+
{"utilization": 0, "score": 0},
67+
{"utilization": 100, "score": 10}
68+
```
69+
70+
The above arguments give the node a score of 0 if utilization is 0% and 10 for utilization 100%, thus enabling bin packing behavior. To enable least requested the score value must be reversed as follows.
71+
72+
```yaml
73+
{"utilization": 0, "score": 100},
74+
{"utilization": 100, "score": 0}
75+
```
76+
77+
`resources` is an optional parameter which by defaults is set to:
78+
79+
``` yaml
80+
"resources": [
81+
{"name": "CPU", "weight": 1},
82+
{"name": "Memory", "weight": 1}
83+
]
84+
```
85+
86+
It can be used to add extended resources as follows:
87+
88+
```yaml
89+
"resources": [
90+
{"name": "intel.com/foo", "weight": 5},
91+
{"name": "CPU", "weight": 3},
92+
{"name": "Memory", "weight": 1}
93+
]
94+
```
95+
96+
The weight parameter is optional and is set to 1 if not specified. Also, the weight cannot be set to a negative value.
97+
98+
### How the RequestedToCapacityRatioResourceAllocation Priority Function Scores Nodes
99+
100+
This section is intended for those who want to understand the internal details
101+
of this feature.
102+
Below is an example of how the node score is calculated for a given set of values.
103+
104+
```
105+
Requested Resources
106+
107+
intel.com/foo : 2
108+
Memory: 256MB
109+
CPU: 2
110+
111+
Resource Weights
112+
113+
intel.com/foo : 5
114+
Memory: 1
115+
CPU: 3
116+
117+
FunctionShapePoint {{0, 0}, {100, 10}}
118+
119+
Node 1 Spec
120+
121+
Available:
122+
intel.com/foo : 4
123+
Memory : 1 GB
124+
CPU: 8
125+
126+
Used:
127+
intel.com/foo: 1
128+
Memory: 256MB
129+
CPU: 1
130+
131+
132+
Node Score:
133+
134+
intel.com/foo = resourceScoringFunction((2+1),4)
135+
= (100 - ((4-3)*100/4)
136+
= (100 - 25)
137+
= 75
138+
= rawScoringFunction(75)
139+
= 7
140+
141+
Memory = resourceScoringFunction((256+256),1024)
142+
= (100 -((1024-512)*100/1024))
143+
= 50
144+
= rawScoringFunction(50)
145+
= 5
146+
147+
CPU = resourceScoringFunction((2+1),8)
148+
= (100 -((8-3)*100/8))
149+
= 37.5
150+
= rawScoringFunction(37.5)
151+
= 3
152+
153+
NodeScore = (7 * 5) + (5 * 1) + (3 * 3) / (5 + 1 + 3)
154+
= 5
155+
156+
157+
Node 2 Spec
158+
159+
Available:
160+
intel.com/foo: 8
161+
Memory: 1GB
162+
CPU: 8
163+
164+
Used:
165+
166+
intel.com/foo: 2
167+
Memory: 512MB
168+
CPU: 6
169+
170+
171+
Node Score:
172+
173+
intel.com/foo = resourceScoringFunction((2+2),8)
174+
= (100 - ((8-4)*100/8)
175+
= (100 - 25)
176+
= 50
177+
= rawScoringFunction(50)
178+
= 5
179+
180+
Memory = resourceScoringFunction((256+512),1024)
181+
= (100 -((1024-768)*100/1024))
182+
= 75
183+
= rawScoringFunction(75)
184+
= 7
185+
186+
CPU = resourceScoringFunction((2+6),8)
187+
= (100 -((8-8)*100/8))
188+
= 100
189+
= rawScoringFunction(100)
190+
= 10
191+
192+
NodeScore = (5 * 5) + (7 * 1) + (10 * 3) / (5 + 1 + 3)
193+
= 7
194+
195+
```
196+
197+
{{% /capture %}}

0 commit comments

Comments
 (0)