From ced18e88ff91f95d1bf84ddef585f9c680273160 Mon Sep 17 00:00:00 2001 From: Christophe Gasmi Date: Sun, 13 Dec 2020 17:15:20 +0100 Subject: [PATCH] Update install-kubeadm.md from EN version --- .../tools/kubeadm/install-kubeadm.md | 245 +++++++++++------- 1 file changed, 154 insertions(+), 91 deletions(-) diff --git a/content/fr/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md b/content/fr/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md index 69d3467d11..3783b264c4 100644 --- a/content/fr/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md +++ b/content/fr/docs/setup/production-environment/tools/kubeadm/install-kubeadm.md @@ -1,16 +1,17 @@ --- title: Installer kubeadm -description: kubeadm installation Kubernetes content_type: task -weight: 20 +weight: 10 +card: + name: setup + weight: 20 + title: Installez l'outil de configuration kubeadm --- -Cette page vous -apprend comment installer la boîte à outils `kubeadm`. -Pour plus d'informations sur la création d'un cluster avec kubeadm, une fois que vous avez -effectué ce processus d'installation, voir la page: [Utiliser kubeadm pour créer un cluster](/fr/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/). +Cette page vous apprend comment installer la boîte à outils `kubeadm`. +Pour plus d'informations sur la création d'un cluster avec kubeadm, une fois que vous avez effectué ce processus d'installation, voir la page: [Utiliser kubeadm pour créer un cluster](/fr/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/). @@ -19,39 +20,53 @@ effectué ce processus d'installation, voir la page: [Utiliser kubeadm pour cré * Une ou plusieurs machines exécutant: - Ubuntu 16.04+ - - Debian 9 + - Debian 9+ - CentOS 7 - - RHEL 7 - - Fedora 25/26 (best-effort) + - Red Hat Enterprise Linux (RHEL) 7 + - Fedora 25+ - HypriotOS v1.0.1+ - - Container Linux (testé avec 1800.6.0) + - Flatcar Container Linux (testé avec 2512.3.0) * 2 Go ou plus de RAM par machine (toute quantité inférieure laissera peu de place à vos applications) * 2 processeurs ou plus * Connectivité réseau complète entre toutes les machines du cluster (réseau public ou privé) * Nom d'hôte, adresse MAC et product_uuid uniques pour chaque nœud. Voir [ici](#verify-the-mac-address-and-product-uuid-are-unique-for-every-node) pour plus de détails. * Certains ports doivent êtres ouverts sur vos machines. Voir [ici](#check-required-ports) pour plus de détails. -* Swap désactivé. Vous devez impérativement désactiver le swap pour que la kubelet fonctionne correctement. +* Swap désactivé. Vous **devez** impérativement désactiver le swap pour que la kubelet fonctionne correctement. -## Vérifiez que les adresses MAC et product_uuid sont uniques pour chaque nœud {#verify-the-mac-address-and-product-uuid-are-unique-for-every-node} +## Vérifiez que les adresses MAC et product_uuid sont uniques pour chaque nœud {#verify-mac-address} * Vous pouvez obtenir l'adresse MAC des interfaces réseau en utilisant la commande `ip link` ou` ifconfig -a` * Le product_uuid peut être vérifié en utilisant la commande `sudo cat/sys/class/dmi/id/product_uuid` Il est très probable que les périphériques matériels aient des adresses uniques, bien que -certaines machines virtuelles puissent avoir des valeurs identiques. Kubernetes utilise -ces valeurs pour identifier de manière unique les nœuds du cluster. +certaines machines virtuelles puissent avoir des valeurs identiques. Kubernetes utilise ces valeurs pour identifier de manière unique les nœuds du cluster. Si ces valeurs ne sont pas uniques à chaque nœud, le processus d'installation peut [échouer](https://github.com/kubernetes/kubeadm/issues/31). ## Vérifiez les cartes réseaux -Si vous avez plusieurs cartes réseaux et que vos composants Kubernetes ne sont pas accessibles par la -route par défaut, nous vous recommandons d’ajouter une ou plusieurs routes IP afin que les adresses -de cluster Kubernetes soient acheminées via la carte approprié. +Si vous avez plusieurs cartes réseaux et que vos composants Kubernetes ne sont pas accessibles par la route par défaut, +nous vous recommandons d’ajouter une ou plusieurs routes IP afin que les adresses de cluster Kubernetes soient acheminées via la carte approprié. + +## Permettre à iptables de voir le trafic ponté + +Assurez-vous que le module `br_netfilter` est chargé. Cela peut être fait en exécutant `lsmod | grep br_netfilter`. Pour le charger explicitement, appelez `sudo modprobe br_netfilter`. + +Pour que les iptables de votre nœud Linux voient correctement le trafic ponté, vous devez vous assurer que `net.bridge.bridge-nf-call-iptables` est défini sur 1 dans votre configuration` sysctl`, par ex. + +```bash +cat <}}. -Les autres runtimes basés sur la CRI incluent: +{{< tabs name="container_runtime" >}} +{{% tab name="Linux nodes" %}} -- [containerd](https://github.com/containerd/cri) (plugin CRI construit dans containerd) -- [cri-o](https://cri-o.io/) -- [frakti](https://github.com/kubernetes/frakti) +Par défaut, Kubernetes utilise le +{{< glossary_tooltip term_id="cri" text="Container Runtime Interface">}} (CRI) +pour s'interfacer avec votre environnement d'exécution de conteneur choisi. + +Si vous ne spécifiez pas de runtime, kubeadm essaie automatiquement de détecter un +Runtime de conteneur en parcourant une liste de sockets de domaine Unix bien connus. +Le tableau suivant répertorie les environnements d'exécution des conteneurs et leurs chemins de socket associés: + +{{< table caption = "Les environnements d'exécution des conteneurs et leurs chemins de socket" >}} +| Runtime | Chemin vers le socket de domaine Unix | +|------------|---------------------------------------| +| Docker | `/var/run/docker.sock` | +| containerd | `/run/containerd/containerd.sock` | +| CRI-O | `/var/run/crio/crio.sock` | +{{< /table >}} + +
+Si Docker et containerd sont détectés, Docker est prioritaire. C'est +nécessaire car Docker 18.09 est livré avec containerd et les deux sont détectables même si vous +installé Docker. +Si deux autres environnements d'exécution ou plus sont détectés, kubeadm se ferme avec une erreur. + +Le kubelet s'intègre à Docker via l'implémentation CRI intégrée de `dockershim`. + +Voir [runtimes de conteneur](/docs/setup/production-environment/container-runtimes/) +pour plus d'informations. +{{% /tab %}} +{{% tab name="autres systèmes d'exploitation" %}} +Par défaut, kubeadm utilise {{< glossary_tooltip term_id="docker" >}} comme environnement d'exécution du conteneur. +Le kubelet s'intègre à Docker via l'implémentation CRI intégrée de `dockershim`. + +Voir [runtimes de conteneur](/docs/setup/production-environment/container-runtimes/) +pour plus d'informations. +{{% /tab %}} +{{< /tabs >}} -Reportez-vous aux [instructions d'installation de la CRI](/docs/setup/cri) pour plus d'informations. ## Installation de kubeadm, des kubelets et de kubectl @@ -108,17 +156,17 @@ Vous installerez ces paquets sur toutes vos machines: * `kubectl`: la ligne de commande utilisée pour parler à votre cluster. kubeadm **n'installera pas** ni ne gèrera les `kubelet` ou` kubectl` pour vous. -Vous devez vous assurer qu'ils correspondent à la version du control plane de Kubernetes que vous - souhaitez que kubeadm installe pour vous. Si vous ne le faites pas, vous risquez qu' - une erreur de version se produise, qui pourrait conduire à un comportement inattendu. - Cependant, une version mineure entre les kubelets et le control plane est pris en charge, - mais la version de la kubelet ne doit jamais dépasser la version de l'API server. Par exemple, - les kubelets exécutant la version 1.7.0 devraient être entièrement compatibles avec un API - server en 1.8.0, mais pas l'inverse. +Vous devez vous assurer qu'ils correspondent à la version du control plane de Kubernetes que vous souhaitez que kubeadm installe pour vous. Si vous ne le faites pas, vous risquez qu'une +erreur de version se produise, qui pourrait conduire à un comportement inattendu. +Cependant, une version mineure entre les kubelets et le control plane est pris en charge, +mais la version de la kubelet ne doit jamais dépasser la version de l'API server. +Par exemple, les kubelets exécutant la version 1.7.0 devraient être entièrement compatiblesavec un API server en 1.8.0, +mais pas l'inverse. + +For information about installing `kubectl`, see [Install and set up kubectl](/fr/docs/tasks/tools/install-kubectl/). {{< warning >}} -Ces instructions excluent tous les packages Kubernetes de toutes les mises à niveau du système -d'exploitation. +Ces instructions excluent tous les packages Kubernetes de toutes les mises à niveau du système d'exploitation. C’est parce que kubeadm et Kubernetes ont besoin d'une [attention particulière lors de la mise à niveau](/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-11/). {{}} @@ -131,118 +179,131 @@ Pour plus d'informations sur les compatibilités de version, voir: {{< tabs name="k8s_install" >}} {{% tab name="Ubuntu, Debian or HypriotOS" %}} ```bash -apt-get update && apt-get install -y apt-transport-https curl -curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - -cat </etc/apt/sources.list.d/kubernetes.list +sudo apt-get update && sudo apt-get install -y apt-transport-https curl +curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - +cat < /etc/yum.repos.d/kubernetes.repo +cat < /etc/sysctl.d/k8s.conf - net.bridge.bridge-nf-call-ip6tables = 1 - net.bridge.bridge-nf-call-iptables = 1 - EOF - sysctl --system - ``` - - Assurez-vous que le module `br_netfilter` est chargé avant cette étape. Cela peut être fait en exécutant `lsmod | grep br_netfilter`. Pour le charger explicitement, lancez `modprobe br_netfilter`. + - Vous pouvez laisser SELinux activé si vous savez comment le configurer, mais il peut nécessiter des paramètres qui ne sont pas pris en charge par kubeadm. + {{% /tab %}} -{{% tab name="Container Linux" %}} -Installez les plugins CNI (requis pour la plupart des réseaux de pod): +{{% tab name="Fedora CoreOS ou Flatcar Container Linux" %}} +Installez les plugins CNI (requis pour la plupart des réseaux de pods) : ```bash -CNI_VERSION="v0.6.0" -mkdir -p /opt/cni/bin -curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-amd64-${CNI_VERSION}.tgz" | tar -C /opt/cni/bin -xz +CNI_VERSION="v0.8.2" +sudo mkdir -p /opt/cni/bin +curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -C /opt/cni/bin -xz ``` -Installez crictl (obligatoire pour kubeadm / Kubelet Container Runtime Interface (CRI)) +Définissez le répertoire pour télécharger les fichiers de commande + +{{< note >}} +La variable DOWNLOAD_DIR doit être définie sur un répertoire accessible en écriture. +Si vous exécutez Flatcar Container Linux, définissez DOWNLOAD_DIR=/opt/bin +{{< /note >}} ```bash -CRICTL_VERSION="v1.11.1" -mkdir -p /opt/bin -curl -L "https://github.com/kubernetes-incubator/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | tar -C /opt/bin -xz +DOWNLOAD_DIR=/usr/local/bin +sudo mkdir -p $DOWNLOAD_DIR ``` -Installez `kubeadm`, `kubelet`, `kubectl` et ajouter un service systemd `kubelet`: +Installer crictl (requis pour Kubeadm / Kubelet Container Runtime Interface (CRI)) + +```bash +CRICTL_VERSION="v1.17.0" +curl -L "https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | sudo tar -C $DOWNLOAD_DIR -xz +``` + +Installez `kubeadm`,` kubelet`, `kubectl` et ajoutez un service systemd` kubelet`: ```bash RELEASE="$(curl -sSL https://dl.k8s.io/release/stable.txt)" +cd $DOWNLOAD_DIR +sudo curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl} +sudo chmod +x {kubeadm,kubelet,kubectl} -mkdir -p /opt/bin -cd /opt/bin -curl -L --remote-name-all https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin/linux/amd64/{kubeadm,kubelet,kubectl} -chmod +x {kubeadm,kubelet,kubectl} - -curl -sSL "https://raw.githubusercontent.com/kubernetes/kubernetes/${RELEASE}/build/debs/kubelet.service" | sed "s:/usr/bin:/opt/bin:g" > /etc/systemd/system/kubelet.service -mkdir -p /etc/systemd/system/kubelet.service.d -curl -sSL "https://raw.githubusercontent.com/kubernetes/kubernetes/${RELEASE}/build/debs/10-kubeadm.conf" | sed "s:/usr/bin:/opt/bin:g" > /etc/systemd/system/kubelet.service.d/10-kubeadm.conf +RELEASE_VERSION="v0.4.0" +curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service +sudo mkdir -p /etc/systemd/system/kubelet.service.d +curl -sSL "https://raw.githubusercontent.com/kubernetes/release/${RELEASE_VERSION}/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf" | sed "s:/usr/bin:${DOWNLOAD_DIR}:g" | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ``` -Activez et démarrez la `kubelet`: +Activez et démarrez `kubelet` : ```bash -systemctl enable --now kubelet +sudo systemctl enable --now kubelet ``` + +{{< note >}} +La distribution Linux Flatcar Container monte le répertoire `/usr` comme un système de fichiers en lecture seule. +Avant de démarrer votre cluster, vous devez effectuer des étapes supplémentaires pour configurer un répertoire accessible en écriture. +Consultez le [Guide de dépannage de Kubeadm](/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/#usr-mounted-read-only/) pour savoir comment configurer un répertoire accessible en écriture. +{{< /note >}} {{% /tab %}} {{< /tabs >}} -La kubelet redémarre maintenant toutes les secondes et quelques, car elle attend dans une boucle -kubeadm, pour lui dire quoi faire. +Le kubelet redémarre maintenant toutes les quelques secondes, +car il attend dans une boucle de crash que kubeadm lui dise quoi faire. ## Configurer le driver de cgroup utilisé par la kubelet sur un nœud master Lorsque vous utilisez Docker, kubeadm détecte automatiquement le pilote ( driver ) de cgroup pour la kubelet -et le configure dans le fichier `/var/lib/kubelet/kubeadm-flags.env` lors de son éxecution. +et le configure dans le fichier `/var/lib/kubelet/config.yaml` lors de son éxecution. -Si vous utilisez un autre CRI, vous devez modifier le fichier `/etc/default/kubelet` avec votre -valeur de `cgroup-driver` comme ceci: +Si vous utilisez un autre CRI, vous devez passer votre valeur `cgroupDriver` avec `kubeadm init`, comme ceci : -```bash -KUBELET_EXTRA_ARGS=--cgroup-driver= +```yaml +apiVersion: kubelet.config.k8s.io/v1beta1 +kind: KubeletConfiguration +cgroupDriver: ``` -Ce fichier sera utilisé par `kubeadm init` et` kubeadm join` pour sourcer des arguments supplémentaires définis par l'utilisateur pour la kubelet. +Pour plus de détails, veuillez lire [Utilisation de kubeadm init avec un fichier de configuration](/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file). Veuillez noter que vous devez **seulement** le faire si le driver de cgroupe de votre CRI n'est pas `cgroupfs`, car c'est déjà la valeur par défaut dans la kubelet. +{{< note >}} +Depuis que le paramettre `--cgroup-driver` est obsolète par kubelet, si vous l'avez dans`/var/lib/kubelet/kubeadm-flags.env` +ou `/etc/default/kubelet`(`/etc/sysconfig/kubelet` pour les RPM), veuillez le supprimer et utiliser à la place KubeletConfiguration +(stocké dans`/var/lib/kubelet/config.yaml` par défaut). +{{< /note >}} + Il est nécessaire de redémarrer la kubelet: ```bash @@ -250,6 +311,10 @@ sudo systemctl daemon-reload sudo systemctl restart kubelet ``` +La détection automatique du pilote cgroup pour d'autres runtimes de conteneur +comme CRI-O et containerd est un travail en cours. + + ## Dépannage Si vous rencontrez des difficultés avec kubeadm, veuillez consulter notre [documentation de dépannage](/fr/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/). @@ -258,5 +323,3 @@ Si vous rencontrez des difficultés avec kubeadm, veuillez consulter notre [docu * [Utiliser kubeadm pour créer un cluster](/fr/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/) - -