# Communication entre les nœuds et le plan de contrôle

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Ce document répertorie les chemins de communication entre le <a class='glossary-tooltip' title='Composant sur le master qui expose l&#39;API Kubernetes. Il s&#39;agit du front-end pour le plan de contrôle Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/reference/generated/kube-apiserver/' target='_blank' aria-label='serveur API'>serveur API</a>
et le <a class='glossary-tooltip' title='Un ensemble de machines, appelées des &quot;nœuds&quot;, qui exécutent des applications conteneurisées gérées par Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/reference/glossary/?all=true#term-cluster' target='_blank' aria-label='cluster'>cluster</a> Kubernetes.
L'objectif est de permettre aux utilisateurs de personnaliser leur installation pour renforcer la configuration réseau
afin que le cluster puisse fonctionner sur un réseau non fiable (ou sur des adresses IP publiques complètement)
fournies par un fournisseur de cloud.

<!-- body -->

## Nœud vers le plan de contrôle

Kubernetes utilise un modèle d'API de type "hub-et-spoke". Toutes les utilisations de l'API à partir des nœuds (ou des pods qu'ils exécutent)
se terminent au niveau du serveur API. Aucun des autres composants du plan de contrôle n'est conçu pour exposer
des services distants. Le serveur API est configuré pour écouter les connexions distantes sur un port HTTPS sécurisé
(généralement le port 443) avec une ou plusieurs formes d'authentification
[client](/docs/reference/access-authn-authz/authentication/) activées.
Une ou plusieurs formes d'[autorisation](/docs/reference/access-authn-authz/authorization/) devraient être
activées, en particulier si les [requêtes anonymes](/docs/reference/access-authn-authz/authentication/#anonymous-requests)
ou les [jetons de compte de service](/docs/reference/access-authn-authz/authentication/#service-account-tokens)
sont autorisés.

Les nœuds doivent être provisionnés avec le <a class='glossary-tooltip' title='Fichier cryptograhpiquement sécurisé utilisé pour valider l&#39;accès au cluster Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/tasks/tls/managing-tls-in-a-cluster/' target='_blank' aria-label='certificat'>certificat</a> racine public pour le cluster afin qu'ils puissent
se connecter de manière sécurisée au serveur API avec des informations d'identification client valides. Une bonne approche consiste à ce que les
informations d'identification client fournies au kubelet soient sous la forme d'un certificat client. Consultez
[l'amorçage TLS du kubelet](/docs/reference/access-authn-authz/kubelet-tls-bootstrapping/)
pour la provision automatisée des certificats client du kubelet.

Les <a class='glossary-tooltip' title='Le plus petit et le plus simple des objets Kubernetes. Un Pod est un ensemble de conteneurs fonctionnant sur votre cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/concepts/workloads/pods/pod-overview/' target='_blank' aria-label='pods'>pods</a> qui souhaitent se connecter au serveur API peuvent le faire de manière sécurisée en utilisant un compte de service de sorte
que Kubernetes injecte automatiquement le certificat racine public et un jeton d'accès valide
dans le pod lors de son instanciation.
Le service `kubernetes` (dans le namespace `default`) est configuré avec une adresse IP virtuelle qui est
redirigée (via `<a class='glossary-tooltip' title='kube-proxy est un proxy réseau qui s&#39;exécute sur chaque nœud du cluster.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/reference/command-line-tools-reference/kube-proxy/' target='_blank' aria-label='kube-proxy'>kube-proxy</a>`) vers le point de terminaison HTTPS du serveur API.

Les composants du plan de contrôle communiquent également avec le serveur API via le port sécurisé.

Par conséquent, le mode de fonctionnement par défaut des connexions des nœuds et des pods exécutés sur les
nœuds vers le plan de contrôle est sécurisé par défaut et peut fonctionner sur des 
réseaux non fiables et/ou publics.

## Plan de contrôle vers le nœud

Il existe deux chemins de communication principaux du plan de contrôle (le serveur API) vers les nœuds.
Le premier est du serveur API au processus <a class='glossary-tooltip' title='Un agent qui s&#39;exécute sur chaque nœud du cluster. Il s&#39;assure que les conteneurs fonctionnent dans un pod.' data-bs-toggle='tooltip' data-bs-placement='top' href='/fr/docs/reference/generated/kubelet' target='_blank' aria-label='kubelet'>kubelet</a> qui s'exécute sur chaque nœud du cluster.
Le deuxième est du serveur API vers n'importe quel nœud, pod ou service via la fonctionnalité de _proxy_ du serveur API.

### Serveur API vers kubelet

Les connexions du serveur API au kubelet sont utilisées pour :

* Récupérer les journaux des pods.
* Se connecter (généralement via `kubectl`) aux pods en cours d'exécution.
* Fournir la fonctionnalité de transfert de port du kubelet.

Ces connexions se terminent au niveau du point de terminaison HTTPS du kubelet. Par défaut, le serveur API ne vérifie pas
le certificat de service du kubelet, ce qui rend la connexion vulnérable aux 
attaques de l'homme du milieu et **non sécurisée** pour une utilisation 
sur des réseaux non fiables et/ou publics.

Pour vérifier cette connexion, utilisez le paramètre `--kubelet-certificate-authority` 
pour fournir au serveur API un ensemble de certificats racine à utiliser pour vérifier le certificat de service du kubelet.

Si cela n'est pas possible, utilisez le [tunnel SSH](#tunnels-ssh) entre le serveur API et le kubelet si
nécessaire pour éviter de se connecter via un
réseau non fiable ou public.


Enfin, l'[authentification et/ou l'autorisation du kubelet](/docs/reference/access-authn-authz/kubelet-authn-authz/)
devraient être activées pour sécuriser l'API du kubelet.

### Serveur API vers les nœuds, les pods et les services

Les connexions du serveur API vers un nœud, un pod ou un service sont par défaut des connexions HTTP non sécurisées
et ne sont donc ni authentifiées ni chiffrées. Elles peuvent être exécutées via une connexion HTTPS sécurisée
en préfixant `https:` au nom du nœud, du pod ou du service dans l'URL de l'API, mais elles ne vérifieront pas
le certificat fourni par le point de terminaison HTTPS ni ne fourniront des informations d'identification client. Ainsi,
bien que la connexion soit chiffrée, elle ne garantira aucune intégrité. Ces
connexions **ne sont actuellement pas sûres** pour une utilisation sur des réseaux non fiables ou publics.

### Tunnels SSH

Kubernetes prend en charge les [tunnels SSH](https://www.ssh.com/academy/ssh/tunneling) pour protéger les chemins de communication du plan de contrôle vers les nœuds. Dans cette
configuration, le serveur API initie un tunnel SSH vers chaque nœud du cluster (en se connectant à
le serveur SSH qui écoute sur le port 22) et fait passer tout le trafic destiné à un kubelet, un nœud, un pod ou
un service à travers le tunnel.
Ce tunnel garantit que le trafic n'est pas exposé en dehors du réseau dans lequel les nœuds sont
exécutés.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Note</h4>Les tunnels SSH sont actuellement obsolètes, vous ne devriez donc pas choisir de les utiliser à moins de savoir ce que vous
faites. Le service <a href="#service-konnectivity">Konnectivity</a> est un remplacement pour ce
canal de communication.</div>


### Service Konnectivity








  <div class="feature-state-notice feature-beta">
      <span class="feature-state-name">FEATURE STATE:</span>
      <code>Kubernetes v1.18 [beta]</code>
    </div>
  



En remplacement des tunnels SSH, le service Konnectivity fournit un proxy de niveau TCP pour la
communication entre le plan de contrôle et le cluster. Le service Konnectivity se compose de deux parties : le
serveur Konnectivity dans le réseau du plan de contrôle et les agents Konnectivity dans le réseau des nœuds.
Les agents Konnectivity initient des connexions vers le serveur Konnectivity et maintiennent
les connexions réseau.
Après avoir activé le service Konnectivity, tout le trafic du plan de contrôle vers les nœuds passe
par ces connexions.

Suivez la [tâche du service Konnectivity](/docs/tasks/extend-kubernetes/setup-konnectivity/) pour configurer
le service Konnectivity dans votre cluster.

## A suivre

* En savoir plus sur les [composants du plan de contrôle Kubernetes](/docs/concepts/architecture/#control-plane-components)
* En savoir plus sur le [modèle Hub et Spoke](https://book.kubebuilder.io/multiversion-tutorial/conversion-concepts.html#hubs-spokes-and-other-wheel-metaphors)
* Apprenez comment [sécuriser un cluster](/docs/tasks/administer-cluster/securing-a-cluster/) 
* En savoir plus sur l'[API Kubernetes](/fr/docs/concepts/overview/kubernetes-api/)
* [Configurer le service Konnectivity](/docs/tasks/extend-kubernetes/setup-konnectivity/)
* [Utiliser le transfert de port pour accéder aux applications dans un cluster](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)
* Apprenez comment [récupérer les journaux des pods](/docs/tasks/debug/debug-application/debug-running-pod/#examine-pod-logs), [utiliser kubectl port-forward](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/#forward-a-local-port-to-a-port-on-the-pod)
