Fix nits in the Evented PLEG page

There are typos and inaccuracies in the current page.
This PR fixes them.
pull/40906/head
Qiming Teng 2023-04-30 20:06:56 +08:00
parent 7bdcd3da4c
commit 5130686665
1 changed files with 40 additions and 30 deletions

View File

@ -5,88 +5,97 @@ content_type: task
weight: 90
---
{{< feature-state for_k8s_version="v1.26" state="beta" >}}
{{< feature-state for_k8s_version="v1.27" state="beta" >}}
<!-- overview -->
This page shows how to migrate notes to use event based updates for container status. The event-based
This page shows how to migrate nodes to use event based updates for container status. The event-based
implementation reduces node resource consumption by the kubelet, compared to the legacy approach
that relies on polling.
You may know this feature as _evented Pod lifecycle event generator (PLEG)_. That's the name used
internally within the Kubernetes project for a key implementation detail.
The polling based approach is referred to as _generic PLEG_.
## {{% heading "prerequisites" %}}
* You need to run a version of Kubernetes that provides this feature.
Kubernetes {{< skew currentVersion >}} includes beta support for event-based container
status updates. The feature is beta and is disabled by default.
{{< version-check >}}
Kubernetes v1.27 includes beta support for event-based container
status updates. The feature is beta but is _disabled_ by default
because it requires support from the container runtime.
* {{< version-check >}}
If you are running a different version of Kubernetes, check the documentation for that release.
* The container runtime in use must support container lifecycle events.
The kubelet automatically switches back to the legacy generic PLEG
mechanism if the container runtime does not announce support for
container lifecycle events, even if you have this feature gate enabled.
<!-- steps -->
## Why switch to Evented PLEG?
* The current `Generic PLEG` incurs non-negligible overhead due to frequent polling of container statuses.
* This overhead is exacerbated by Kubelet's parallelism, limiting its scalability
and causing poor performance and reliability problems.
* The goal of `Evented PLEG` is to reduce unnecessary work during inactivity by replacing periodic polling.
* The _Generic PLEG_ incurs non-negligible overhead due to frequent polling of container statuses.
* This overhead is exacerbated by Kubelet's parallelized polling of container states, thus limiting
its scalability and causing poor performance and reliability problems.
* The goal of _Evented PLEG_ is to reduce unnecessary work during inactivity
by replacing periodic polling.
## Switching to Evented PLEG
1. Start the Kubelet with the [feature gate](/docs/reference/command-line-tools-reference/feature-gates/)
`EventedPLEG` enabled. In Kubelet feature gates can be enabled by editing
[config file](/docs/tasks/administer-cluster/kubelet-config-file/) and restarting the Kubelet service.
`EventedPLEG` enabled. You can manage the kubelet feature gates editing the kubelet
[config file](/docs/tasks/administer-cluster/kubelet-config-file/) and restarting the kubelet service.
You need to do this on each node where you are using this feature.
2. Please make sure the node is [drained](/docs/tasks/administer-cluster/safely-drain-node/) before proceeding.
2. Make sure the node is [drained](/docs/tasks/administer-cluster/safely-drain-node/) before proceeding.
3. Start the `CRI Runtime` with the `Evented PLEG` support.
3. Start the container runtime with the container event generation enabled.
{{< tabs name="tab_with_code" >}}
{{% tab name="containerd" %}}
{{% tab name="Containerd" %}}
Version 1.7+
{{% /tab %}}
{{% tab name="CRI-O" %}}
Version 1.26+
Check if the CRI-O is already configured to emit `CRI Events` by verifying the configuration:
Check if the CRI-O is already configured to emit CRI events by verifying the configuration,
```shell
crio config | grep enable_pod_events
```
If it is enabled it should show:
If it is enabled, the output should be similar to the following:
```
```none
enable_pod_events = true
```
To enable it, start the cri-o daemon with the flag `--enable-pod-events=true` or using a drop in config like:
To enable it, start the CRI-O daemon with the flag `--enable-pod-events=true` or
use a dropin config with the following lines:
```
```toml
[crio.runtime]
enable_pod_events: true
```
{{% /tab %}}
{{< /tabs >}}
{{< version-check >}}
4. Verify that `Evented PLEG` is in use by looking for the term `EventedPLEG` in the kubelet logs.
4. Verify that the kubelet is using event-based container stage change monitoring.
To check, look for the term `EventedPLEG` in the kubelet logs.
The output is similar to this:
The output should be similar to this:
```
```console
I0314 11:10:13.909915 1105457 feature_gate.go:249] feature gates: &{map[EventedPLEG:true]}
```
If you have set LOG_LEVEL to 4 and above, you might see more entries that
indicate `Evented PLEG` is in use by the kubelet.
If you have set `--v` to 4 and above, you might see more entries that indicate
that the kubelet is using event-based container state monitoring.
```
```console
I0314 11:12:42.009542 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=3b2c6172-b112-447a-ba96-94e7022912dc
I0314 11:12:44.623326 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=b3fba5ea-a8c5-4b76-8f43-481e17e8ec40
I0314 11:12:44.714564 1110177 evented.go:238] "Evented PLEG: Generated pod status from the received event" podUID=b3fba5ea-a8c5-4b76-8f43-481e17e8ec40
@ -94,5 +103,6 @@ internally within the Kubernetes project for a key implementation detail.
## {{% heading "whatsnext" %}}
* Learn more about
[KEP 3386](https://github.com/kubernetes/enhancements/blob/5b258a990adabc2ffdc9d84581ea6ed696f7ce6c/keps/sig-node/3386-kubelet-evented-pleg/README.md).
* Learn more about the design in the Kubernetes Enhancement Proposal (KEP):
[Kubelet Evented PLEG for Better Performance](https://github.com/kubernetes/enhancements/blob/5b258a990adabc2ffdc9d84581ea6ed696f7ce6c/keps/sig-node/3386-kubelet-evented-pleg/README.md).