Skip to content

Commit f0490e5

Browse files
authored
Merge pull request #20785 from kubernetes/dev-1.19
Official 1.19 Release Docs
2 parents 3cb0307 + b36f791 commit f0490e5

File tree

111 files changed

+53403
-1387
lines changed

Some content is hidden

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

111 files changed

+53403
-1387
lines changed

config.toml

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,10 @@ time_format_blog = "Monday, January 02, 2006"
115115
description = "Production-Grade Container Orchestration"
116116
showedit = true
117117

118-
latest = "v1.18"
118+
latest = "v1.19"
119119

120-
fullversion = "v1.18.0"
121-
version = "v1.18"
120+
fullversion = "v1.19.0"
121+
version = "v1.19"
122122
githubbranch = "master"
123123
docsbranch = "master"
124124
deprecated = false
@@ -157,39 +157,40 @@ js = [
157157
]
158158

159159
[[params.versions]]
160-
fullversion = "v1.18.0"
160+
fullversion = "v1.19.0"
161+
version = "v1.19"
162+
githubbranch = "v1.19.0"
163+
docsbranch = "master"
164+
url = "https://kubernetes.io"
165+
166+
[[params.versions]]
167+
fullversion = "v1.18.8"
161168
version = "v1.18"
162-
githubbranch = "v1.18.0"
169+
githubbranch = "v1.18.8"
163170
docsbranch = "release-1.18"
164-
url = "https://kubernetes.io"
171+
url = "https://v1-18.docs.kubernetes.io"
165172

166173
[[params.versions]]
167-
fullversion = "v1.17.4"
174+
fullversion = "v1.17.11"
168175
version = "v1.17"
169-
githubbranch = "v1.17.4"
176+
githubbranch = "v1.17.11"
170177
docsbranch = "release-1.17"
171178
url = "https://v1-17.docs.kubernetes.io"
172179

173180
[[params.versions]]
174-
fullversion = "v1.16.8"
181+
fullversion = "v1.16.14"
175182
version = "v1.16"
176-
githubbranch = "v1.16.8"
183+
githubbranch = "v1.16.14"
177184
docsbranch = "release-1.16"
178185
url = "https://v1-16.docs.kubernetes.io"
179186

180187
[[params.versions]]
181-
fullversion = "v1.15.11"
188+
fullversion = "v1.15.12"
182189
version = "v1.15"
183-
githubbranch = "v1.15.11"
190+
githubbranch = "v1.15.12"
184191
docsbranch = "release-1.15"
185192
url = "https://v1-15.docs.kubernetes.io"
186193

187-
[[params.versions]]
188-
fullversion = "v1.14.10"
189-
version = "v1.14"
190-
githubbranch = "v1.14.10"
191-
docsbranch = "release-1.14"
192-
url = "https://v1-14.docs.kubernetes.io"
193194

194195
# User interface configuration
195196
[params.ui]

content/en/docs/concepts/cluster-administration/logging.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ weight: 60
99

1010
<!-- overview -->
1111

12-
Application and systems logs can help you understand what is happening inside your cluster. The logs are particularly useful for debugging problems and monitoring cluster activity. Most modern applications have some kind of logging mechanism; as such, most container engines are likewise designed to support some kind of logging. The easiest and most embraced logging method for containerized applications is to write to the standard output and standard error streams.
12+
Application logs can help you understand what is happening inside your application. The logs are particularly useful for debugging problems and monitoring cluster activity. Most modern applications have some kind of logging mechanism; as such, most container engines are likewise designed to support some kind of logging. The easiest and most embraced logging method for containerized applications is to write to the standard output and standard error streams.
1313

1414
However, the native functionality provided by a container engine or runtime is usually not enough for a complete logging solution. For example, if a container crashes, a pod is evicted, or a node dies, you'll usually still want to access your application's logs. As such, logs should have a separate storage and lifecycle independent of nodes, pods, or containers. This concept is called _cluster-level-logging_. Cluster-level logging requires a separate backend to store, analyze, and query logs. Kubernetes provides no native storage solution for log data, but you can integrate many existing logging solutions into your Kubernetes cluster.
1515

@@ -94,6 +94,7 @@ the rotation and there are two files, one 10MB in size and one empty,
9494
`kubectl logs` will return an empty response.
9595
{{< /note >}}
9696

97+
[cosConfigureHelper]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh
9798
### System component logs
9899

99100
There are two types of system components: those that run in a container and those
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
---
2+
reviewers:
3+
- dims
4+
- 44past4
5+
title: System Logs
6+
content_type: concept
7+
weight: 60
8+
---
9+
10+
<!-- overview -->
11+
12+
System component logs record events happening in cluster, which can be very useful for debugging.
13+
You can configure log verbosity to see more or less detail.
14+
Logs can be as coarse-grained as showing errors within a component, or as fine-grained as showing step-by-step traces of events (like HTTP access logs, pod state changes, controller actions, or scheduler decisions).
15+
16+
<!-- body -->
17+
18+
## Klog
19+
20+
klog is the Kubernetes logging library. [klog](https://github.com/kubernetes/klog)
21+
generates log messages for the Kubernetes system components.
22+
23+
For more information about klog configuration, see the [Command line tool reference](/docs/reference/command-line-tools-reference/).
24+
25+
An example of the klog native format:
26+
```
27+
I1025 00:15:15.525108 1 httplog.go:79] GET /api/v1/namespaces/kube-system/pods/metrics-server-v0.3.1-57c75779f-9p8wg: (1.512ms) 200 [pod_nanny/v0.0.0 (linux/amd64) kubernetes/$Format 10.56.1.19:51756]
28+
```
29+
30+
### Structured Logging
31+
32+
{{< feature-state for_k8s_version="v1.19" state="alpha" >}}
33+
34+
{{<warning>}}
35+
Migration to structured log messages is an ongoing process. Not all log messages are structured in this version. When parsing log files, you must also handle unstructured log messages.
36+
37+
Log formatting and value serialization are subject to change.
38+
{{< /warning>}}
39+
40+
Structured logging is a effort to introduce a uniform structure in log messages allowing for easy extraction of information, making logs easier and cheaper to store and process.
41+
New message format is backward compatible and enabled by default.
42+
43+
Format of structured logs:
44+
```
45+
<klog header> "<message>" <key1>="<value1>" <key2>="<value2>" ...
46+
```
47+
48+
Example:
49+
```
50+
I1025 00:15:15.525108 1 controller_utils.go:116] "Pod status updated" pod="kube-system/kubedns" status="ready"
51+
```
52+
53+
54+
### JSON log format
55+
56+
{{< feature-state for_k8s_version="v1.19" state="alpha" >}}
57+
58+
{{<warning >}}
59+
JSON output does not support many standard klog flags. For list of unsupported klog flags, see the [Command line tool reference](/docs/reference/command-line-tools-reference/).
60+
61+
Not all logs are guaranteed to be written in JSON format (for example, during process start). If you intend to parse logs, make sure you can handle log lines that are not JSON as well.
62+
63+
Field names and JSON serialization are subject to change.
64+
{{< /warning >}}
65+
66+
The `--logging-format=json` flag changes the format of logs from klog native format to JSON format.
67+
Example of JSON log format (pretty printed):
68+
```json
69+
{
70+
"ts": 1580306777.04728,
71+
"v": 4,
72+
"msg": "Pod status updated",
73+
"pod":{
74+
"name": "nginx-1",
75+
"namespace": "default"
76+
},
77+
"status": "ready"
78+
}
79+
```
80+
81+
Keys with special meaning:
82+
* `ts` - timestamp as Unix time (required, float)
83+
* `v` - verbosity (required, int, default 0)
84+
* `err` - error string (optional, string)
85+
* `msg` - message (required, string)
86+
87+
88+
List of components currently supporting JSON format:
89+
* {{< glossary_tooltip term_id="kube-controller-manager" text="kube-controller-manager" >}}
90+
* {{< glossary_tooltip term_id="kube-apiserver" text="kube-apiserver" >}}
91+
* {{< glossary_tooltip term_id="kube-scheduler" text="kube-scheduler" >}}
92+
* {{< glossary_tooltip term_id="kubelet" text="kubelet" >}}
93+
94+
### Log verbosity level
95+
96+
The `-v` flag controls log verbosity. Increasing the value increases the number of logged events. Decreasing the value decreases the number of logged events.
97+
Increasing verbosity settings logs increasingly less severe events. A verbosity setting of 0 logs only critical events.
98+
99+
### Log location
100+
101+
There are two types of system components: those that run in a container and those
102+
that do not run in a container. For example:
103+
104+
* The Kubernetes scheduler and kube-proxy run in a container.
105+
* The kubelet and container runtime, for example Docker, do not run in containers.
106+
107+
On machines with systemd, the kubelet and container runtime write to journald.
108+
Otherwise, they write to `.log` files in the `/var/log` directory.
109+
System components inside containers always write to `.log` files in the `/var/log` directory,
110+
bypassing the default logging mechanism.
111+
Similar to the container logs, you should rotate system component logs in the `/var/log` directory.
112+
In Kubernetes clusters created by the `kube-up.sh` script, log rotation is configured by the `logrotate` tool.
113+
The `logrotate` tool rotates logs daily, or once the log size is greater than 100MB.
114+
115+
## {{% heading "whatsnext" %}}
116+
117+
* Read about the [Kubernetes Logging Architecture](/docs/concepts/cluster-administration/logging/)
118+
* Read about [Structured Logging](https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/1602-structured-logging)
119+
* Read about the [Conventions for logging severity](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md)

content/en/docs/concepts/cluster-administration/monitoring.md renamed to content/en/docs/concepts/cluster-administration/system-metrics.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
---
2-
title: Metrics For The Kubernetes Control Plane
2+
title: Metrics For Kubernetes System Components
33
reviewers:
44
- brancz
55
- logicalhan
66
- RainbowMango
77
content_type: concept
88
weight: 60
9-
aliases:
10-
- controller-metrics.md
119
---
1210

1311
<!-- overview -->
1412

1513
System component metrics can give a better look into what is happening inside them. Metrics are particularly useful for building dashboards and alerts.
1614

17-
Metrics in Kubernetes control plane are emitted in [prometheus format](https://prometheus.io/docs/instrumenting/exposition_formats/) and are human readable.
18-
19-
15+
Kubernetes components emit metrics in [Prometheus format](https://prometheus.io/docs/instrumenting/exposition_formats/).
16+
This format is structured plain text, designed so that people and machines can both read it.
2017

2118
<!-- body -->
2219

@@ -39,7 +36,7 @@ Note that {{< glossary_tooltip term_id="kubelet" text="kubelet" >}} also exposes
3936

4037
If your cluster uses {{< glossary_tooltip term_id="rbac" text="RBAC" >}}, reading metrics requires authorization via a user, group or ServiceAccount with a ClusterRole that allows accessing `/metrics`.
4138
For example:
42-
```
39+
```yaml
4340
apiVersion: rbac.authorization.k8s.io/v1
4441
kind: ClusterRole
4542
metadata:
@@ -101,6 +98,14 @@ Take metric `A` as an example, here assumed that `A` is deprecated in 1.n. Accor
10198

10299
If you're upgrading from release `1.12` to `1.13`, but still depend on a metric `A` deprecated in `1.12`, you should set hidden metrics via command line: `--show-hidden-metrics=1.12` and remember to remove this metric dependency before upgrading to `1.14`
103100

101+
## Disable accelerator metrics
102+
103+
The kubelet collects accelerator metrics through cAdvisor. To collect these metrics, for accelerators like NVIDIA GPUs, kubelet held an open handle on the driver. This meant that in order to perform infrastructure changes (for example, updating the driver), a cluster administrator needed to stop the kubelet agent.
104+
105+
The responsibility for collecting accelerator metrics now belongs to the vendor rather than the kubelet. Vendors must provide a container that collects metrics and exposes them to the metrics service (for example, Prometheus).
106+
107+
The [`DisableAcceleratorUsageMetrics` feature gate](/docs/references/command-line-tools-reference/feature-gate.md#feature-gates-for-alpha-or-beta-features:~:text= DisableAcceleratorUsageMetrics,-false) disables metrics collected by the kubelet, with a [timeline for enabling this feature by default](https://github.com/kubernetes/enhancements/tree/411e51027db842355bd489691af897afc1a41a5e/keps/sig-node/1867-disable-accelerator-usage-metrics#graduation-criteria).
108+
104109
## Component metrics
105110

106111
### kube-controller-manager metrics
@@ -124,8 +129,6 @@ cloudprovider_gce_api_request_duration_seconds { request = "detach_disk"}
124129
cloudprovider_gce_api_request_duration_seconds { request = "list_disk"}
125130
```
126131

127-
128-
129132
## {{% heading "whatsnext" %}}
130133

131134
* Read about the [Prometheus text format](https://github.com/prometheus/docs/blob/master/content/docs/instrumenting/exposition_formats.md#text-based-format) for metrics

content/en/docs/concepts/configuration/configmap.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,9 @@ when new keys are projected to the Pod can be as long as the kubelet sync period
213213
propagation delay, where the cache propagation delay depends on the chosen cache type
214214
(it equals to watch propagation delay, ttl of cache, or zero correspondingly).
215215

216-
{{< feature-state for_k8s_version="v1.18" state="alpha" >}}
216+
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
217217

218-
The Kubernetes alpha feature _Immutable Secrets and ConfigMaps_ provides an option to set
218+
The Kubernetes beta feature _Immutable Secrets and ConfigMaps_ provides an option to set
219219
individual Secrets and ConfigMaps as immutable. For clusters that extensively use ConfigMaps
220220
(at least tens of thousands of unique ConfigMap to Pod mounts), preventing changes to their
221221
data has the following advantages:

content/en/docs/concepts/configuration/pod-priority-preemption.md

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -51,40 +51,6 @@ Kubernetes already ships with two PriorityClasses:
5151
These are common classes and are used to [ensure that critical components are always scheduled first](/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/).
5252
{{< /note >}}
5353

54-
## How to disable preemption
55-
56-
{{< caution >}}
57-
Critical pods rely on scheduler preemption to be scheduled when a cluster
58-
is under resource pressure. For this reason, it is not recommended to
59-
disable preemption.
60-
{{< /caution >}}
61-
62-
{{< note >}}
63-
In Kubernetes 1.15 and later, if the feature `NonPreemptingPriority` is enabled,
64-
PriorityClasses have the option to set `preemptionPolicy: Never`.
65-
This will prevent pods of that PriorityClass from preempting other pods.
66-
{{< /note >}}
67-
68-
Preemption is controlled by a kube-scheduler flag `disablePreemption`, which is
69-
set to `false` by default.
70-
If you want to disable preemption despite the above note, you can set
71-
`disablePreemption` to `true`.
72-
73-
This option is available in component configs only and is not available in
74-
old-style command line options. Below is a sample component config to disable
75-
preemption:
76-
77-
```yaml
78-
apiVersion: kubescheduler.config.k8s.io/v1alpha1
79-
kind: KubeSchedulerConfiguration
80-
algorithmSource:
81-
provider: DefaultProvider
82-
83-
...
84-
85-
disablePreemption: true
86-
```
87-
8854
## PriorityClass
8955

9056
A PriorityClass is a non-namespaced object that defines a mapping from a
@@ -138,7 +104,7 @@ description: "This priority class should be used for XYZ service pods only."
138104
139105
## Non-preempting PriorityClass {#non-preempting-priority-class}
140106
141-
{{< feature-state for_k8s_version="v1.15" state="alpha" >}}
107+
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
142108
143109
Pods with `PreemptionPolicy: Never` will be placed in the scheduling queue
144110
ahead of lower-priority pods,
@@ -162,10 +128,6 @@ which will allow pods of that PriorityClass to preempt lower-priority pods
162128
If `PreemptionPolicy` is set to `Never`,
163129
pods in that PriorityClass will be non-preempting.
164130

165-
The use of the `PreemptionPolicy` field requires the `NonPreemptingPriority`
166-
[feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
167-
to be enabled.
168-
169131
An example use case is for data science workloads.
170132
A user may submit a job that they want to be prioritized above other workloads,
171133
but do not wish to discard existing work by preempting running pods.

content/en/docs/concepts/configuration/secret.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -717,9 +717,9 @@ A container using a Secret as a
717717
Secret updates.
718718
{{< /note >}}
719719

720-
{{< feature-state for_k8s_version="v1.18" state="alpha" >}}
720+
{{< feature-state for_k8s_version="v1.19" state="beta" >}}
721721

722-
The Kubernetes alpha feature _Immutable Secrets and ConfigMaps_ provides an option to set
722+
The Kubernetes beta feature _Immutable Secrets and ConfigMaps_ provides an option to set
723723
individual Secrets and ConfigMaps as immutable. For clusters that extensively use Secrets
724724
(at least tens of thousands of unique Secret to Pod mounts), preventing changes to their
725725
data has the following advantages:

0 commit comments

Comments
 (0)