Skip to content

Commit

Permalink
docs | tasks | configure-pod-container | Quality of Service (#15193)
Browse files Browse the repository at this point in the history
* quality of service

* fix docs /fr
  • Loading branch information
icheikhrouhou authored and k8s-ci-robot committed Sep 9, 2019
1 parent ce3e326 commit aed1e52
Show file tree
Hide file tree
Showing 5 changed files with 314 additions and 0 deletions.
259 changes: 259 additions & 0 deletions content/fr/docs/tasks/configure-pod-container/quality-service-pod.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
---
title: Configurer la qualité de service pour les pods
content_template: templates/task
weight: 30
---


{{% capture overview %}}

Cette page montre comment configurer les Pods pour qu'ils soient affectés à des classes particulières de qualité de service (QoS). Kubernetes utilise des classes de QoS pour prendre des décisions concernant l'ordonnancement et les évictions des pods.

{{% /capture %}}


{{% capture prerequisites %}}

{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}

{{% /capture %}}


{{% capture steps %}}

## Les Classes de QoS

Quand Kubernetes crée un Pod, il affecte une de ces classes QoS au Pod :

* Guaranteed
* Burstable
* BestEffort

## Créez un namespace

Créez un namespace de manière à ce que les ressources que vous créez dans cet exercice soient isolées du reste de votre cluster.

```shell
kubectl create namespace qos-example
```

## Créez un Pod qui se fait attribuer une classe QoS de Guaranteed

Pour qu'un Pod reçoive une classe de QoS Guaranteed :

* Chaque conteneur du Pod doit avoir une limite de mémoire et une demande de mémoire, et elles doivent être les mêmes.
* Chaque conteneur dans le Pod doit avoir une limite CPU et une demande CPU, et ils doivent être les mêmes.

Ci-dessous le fichier de configuration d'un Pod qui a un seul conteneur.
Le conteneur dispose d'une limite de mémoire et d'une demande de mémoire, tous deux égaux à 200 MiB. Le conteneur a également une limite CPU et une demande CPU, toutes deux égales à 700 milliCPU :

{{< codenew file="pods/qos/qos-pod.yaml" >}}

Créez le Pod :

```shell
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod.yaml --namespace=qos-example
```

Consultez des informations détaillées sur le Pod :

```shell
kubectl get pod qos-demo --namespace=qos-example --output=yaml
```

Le résultat indique que Kubernetes a donné au pod une classe de qualité de service de type Guaranteed. De plus, il affiche que la demande de mémoire du conteneur du pod correspond à sa limite de mémoire, et que la demande de CPU correspond à sa limite de CPU.

```yaml
spec:
containers:
...
resources:
limits:
cpu: 700m
memory: 200Mi
requests:
cpu: 700m
memory: 200Mi
...
qosClass: Guaranteed
```
{{< note >}}
Si un conteneur spécifie sa propre limite de mémoire, mais ne spécifie pas de demande de mémoire, Kubernetes attribue automatiquement une demande de mémoire correspondant à la limite. De même, si un conteneur spécifie sa propre limite CPU, mais ne spécifie pas de demande de CPU, Kubernetes lui attribue automatiquement une demande de CPU qui correspond à cette limite.
{{< /note >}}
Supprimez votre Pod :
```shell
kubectl delete pod qos-demo --namespace=qos-example
```

## Créez un Pod qui se fait attribuer une classe QoS de type Burstable

Un Pod reçoit une classe QoS de Burstable si :

* Le Pod ne répond pas aux critères de la classe QoS Guaranteed.
* Au moins un conteneur dans le Pod dispose d'une demande de mémoire ou de CPU.

Voici le fichier de configuration d'un pod qui a un seul conteneur. Le conteneur a une limite de mémoire de 200 MiB et une demande de mémoire de 100 MiB.

{{< codenew file="pods/qos/qos-pod-2.yaml" >}}

Créez le Pod :

```shell
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-2.yaml --namespace=qos-example
```

Consultez des informations détaillées sur le Pod :

```shell
kubectl get pod qos-demo-2 --namespace=qos-example --output=yaml
```

La sortie montre que Kubernetes a accordé au pod une classe QoS de type Burstable.
```yaml
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: qos-demo-2-ctr
resources:
limits:
memory: 200Mi
requests:
memory: 100Mi
...
qosClass: Burstable
```
Supprimez votre Pod :
```shell
kubectl delete pod qos-demo-2 --namespace=qos-example
```

## Créez un Pod qui se fait attribuer une classe QoS de type BestEffort

Pour qu'un pod puisse avoir la classe QoS de BestEffort, les conteneurs dans le pod ne doivent pas
avoir des limites ou des demandes de mémoire ou de CPU.

Voici le fichier de configuration d'un Pod qui a un seul conteneur. Le conteneur n'a pas des limites ou des demandes de mémoire ou de CPU :

{{< codenew file="pods/qos/qos-pod-3.yaml" >}}

Créez le Pod :

```shell
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-3.yaml --namespace=qos-example
```

Consultez des informations détaillées sur le Pod :

```shell
kubectl get pod qos-demo-3 --namespace=qos-example --output=yaml
```

Le résultat montre que Kubernetes a accordé au pod une classe QoS de BestEffort.

```yaml
spec:
containers:
...
resources: {}
...
qosClass: BestEffort
```
Supprimez votre Pod :
```shell
kubectl delete pod qos-demo-3 --namespace=qos-example
```

## Créez un pod qui contient deux conteneurs


Voici le fichier de configuration d'un Pod qui a deux conteneurs. Un conteneur spécifie une
demande de mémoire de 200 MiB. L'autre conteneur ne spécifie aucune demande ou limite.

{{< codenew file="pods/qos/qos-pod-4.yaml" >}}

Notez que le pod répond aux critères de la classe QoS Burstable. En d'autres termes, il ne répond pas aux exigences de la classe de qualité de service Guaranteed, et l'un de ses conteneurs dispose d'une demande de mémoire.

Créez le Pod :

```shell
kubectl apply -f https://k8s.io/examples/pods/qos/qos-pod-4.yaml --namespace=qos-example
```

Consultez des informations détaillées sur le Pod :

```shell
kubectl get pod qos-demo-4 --namespace=qos-example --output=yaml
```

Le résultat montre que Kubernetes a accordé au pod une classe QoS de Burstable:

```yaml
spec:
containers:
...
name: qos-demo-4-ctr-1
resources:
requests:
memory: 200Mi
...
name: qos-demo-4-ctr-2
resources: {}
...
qosClass: Burstable
```
Supprimez votre pod :
```shell
kubectl delete pod qos-demo-4 --namespace=qos-example
```

## Nettoyage

Supprimez votre namespace.

```shell
kubectl delete namespace qos-example
```

{{% /capture %}}

{{% capture whatsnext %}}


### Pour les développeurs d'applications

* [Allocation des ressources CPU aux conteneurs et pods](/docs/tasks/configure-pod-container/assign-cpu-resource/)

* [Allocation des ressources mémoire aux conteneurs et pods](/fr/docs/tasks/configure-pod-container/assign-memory-resource/)


### Pour les administrateurs de cluster

* [Configuration des demandes et des limites de mémoire par défaut pour un Namespace](/docs/tasks/administer-cluster/memory-default-namespace/)

* [Configuration des demandes et des limites par défaut de CPU pour un Namespace](/docs/tasks/administer-cluster/cpu-default-namespace/)

* [Configuration des contraintes de mémoire minimales et maximales pour un Namespace](/docs/tasks/administer-cluster/memory-constraint-namespace/)

* [Configuration des contraintes minimales et maximales du CPU pour un Namespace](/docs/tasks/administer-cluster/cpu-constraint-namespace/)

* [Configuration des quotas de mémoire et de CPU pour un Namespace](/docs/tasks/administer-cluster/quota-memory-cpu-namespace/)

* [Configuration du quota de pods pour un Namespace](/docs/tasks/administer-cluster/quota-pod-namespace/)

* [Configuration des quotas pour les objets API](/docs/tasks/administer-cluster/quota-api-object/)
{{% /capture %}}





14 changes: 14 additions & 0 deletions content/fr/examples/pods/qos/qos-pod-2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-2
namespace: qos-example
spec:
containers:
- name: qos-demo-2-ctr
image: nginx
resources:
limits:
memory: "200Mi"
requests:
memory: "100Mi"
9 changes: 9 additions & 0 deletions content/fr/examples/pods/qos/qos-pod-3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-3
namespace: qos-example
spec:
containers:
- name: qos-demo-3-ctr
image: nginx
16 changes: 16 additions & 0 deletions content/fr/examples/pods/qos/qos-pod-4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Pod
metadata:
name: qos-demo-4
namespace: qos-example
spec:
containers:

- name: qos-demo-4-ctr-1
image: nginx
resources:
requests:
memory: "200Mi"

- name: qos-demo-4-ctr-2
image: redis
16 changes: 16 additions & 0 deletions content/fr/examples/pods/qos/qos-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Pod
metadata:
name: qos-demo
namespace: qos-example
spec:
containers:
- name: qos-demo-ctr
image: nginx
resources:
limits:
memory: "200Mi"
cpu: "700m"
requests:
memory: "200Mi"
cpu: "700m"

0 comments on commit aed1e52

Please sign in to comment.