22.5. Attacher un pod à un réseau supplémentaire


En tant qu'utilisateur du cluster, vous pouvez attacher un pod à un réseau supplémentaire.

22.5.1. Ajouter un pod à un réseau supplémentaire

Vous pouvez ajouter un module à un réseau supplémentaire. Le pod continue à envoyer le trafic réseau normal lié au cluster sur le réseau par défaut.

Lorsqu'un module est créé, des réseaux supplémentaires lui sont rattachés. Toutefois, si un module existe déjà, il n'est pas possible d'y attacher des réseaux supplémentaires.

Le pod doit se trouver dans le même espace de noms que le réseau supplémentaire.

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Connectez-vous au cluster.

Procédure

  1. Ajouter une annotation à l'objet Pod. Un seul des formats d'annotation suivants peut être utilisé :

    1. Pour attacher un réseau supplémentaire sans aucune personnalisation, ajoutez une annotation avec le format suivant. Remplacez <network> par le nom du réseau supplémentaire à associer au pod :

      metadata:
        annotations:
          k8s.v1.cni.cncf.io/networks: <network>[,<network>,...] 1
      1
      Pour spécifier plus d'un réseau supplémentaire, séparez chaque réseau par une virgule. N'incluez pas d'espace entre les virgules. Si vous spécifiez plusieurs fois le même réseau supplémentaire, plusieurs interfaces réseau seront attachées à ce pod.
    2. Pour joindre un réseau supplémentaire avec des personnalisations, ajoutez une annotation avec le format suivant :

      metadata:
        annotations:
          k8s.v1.cni.cncf.io/networks: |-
            [
              {
                "name": "<network>", 1
                "namespace": "<namespace>", 2
                "default-route": ["<default-route>"] 3
              }
            ]
      1
      Indiquer le nom du réseau supplémentaire défini par un objet NetworkAttachmentDefinition.
      2
      Spécifier l'espace de noms dans lequel l'objet NetworkAttachmentDefinition est défini.
      3
      Facultatif : Spécifiez un remplacement de l'itinéraire par défaut, tel que 192.168.17.1.
  2. Pour créer le module, entrez la commande suivante. Remplacez <name> par le nom du module.

    $ oc create -f <name>.yaml
  3. Facultatif : Pour confirmer que l'annotation existe dans le CR Pod, entrez la commande suivante, en remplaçant <name> par le nom du module.

    $ oc get pod <name> -o yaml

    Dans l'exemple suivant, le pod example-pod est rattaché au réseau supplémentaire net1:

    $ oc get pod example-pod -o yaml
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        k8s.v1.cni.cncf.io/networks: macvlan-bridge
        k8s.v1.cni.cncf.io/networks-status: |- 1
          [{
              "name": "openshift-sdn",
              "interface": "eth0",
              "ips": [
                  "10.128.2.14"
              ],
              "default": true,
              "dns": {}
          },{
              "name": "macvlan-bridge",
              "interface": "net1",
              "ips": [
                  "20.2.2.100"
              ],
              "mac": "22:2f:60:a5:f8:00",
              "dns": {}
          }]
      name: example-pod
      namespace: default
    spec:
      ...
    status:
      ...
    1
    Le paramètre k8s.v1.cni.cncf.io/networks-status est un tableau JSON d'objets. Chaque objet décrit l'état d'un réseau supplémentaire attaché au pod. La valeur de l'annotation est stockée sous forme de texte brut.

22.5.1.1. Spécification des options d'adressage et de routage spécifiques au pod

Lorsque vous attachez un module à un réseau supplémentaire, vous pouvez vouloir spécifier d'autres propriétés de ce réseau dans un module particulier. Cela vous permet de modifier certains aspects du routage, ainsi que de spécifier des adresses IP et des adresses MAC statiques. Pour ce faire, vous pouvez utiliser les annotations au format JSON.

Conditions préalables

  • Le pod doit se trouver dans le même espace de noms que le réseau supplémentaire.
  • Installez le CLI OpenShift (oc).
  • Vous devez vous connecter au cluster.

Procédure

Pour ajouter un pod à un réseau supplémentaire tout en spécifiant des options d'adressage et/ou de routage, procédez comme suit :

  1. Modifiez la définition de la ressource Pod. Si vous modifiez une ressource Pod existante, exécutez la commande suivante pour modifier sa définition dans l'éditeur par défaut. Remplacez <name> par le nom de la ressource Pod à modifier.

    oc edit pod <name> $ oc edit pod <name>
  2. Dans la définition de la ressource Pod, ajoutez le paramètre k8s.v1.cni.cncf.io/networks au mappage du pod metadata. Le paramètre k8s.v1.cni.cncf.io/networks accepte une chaîne JSON d'une liste d'objets référençant le nom des ressources personnalisées (CR) NetworkAttachmentDefinition en plus de spécifier des propriétés supplémentaires.

    metadata:
      annotations:
        k8s.v1.cni.cncf.io/networks: '[<network>[,<network>,...]]' 1
    1
    Remplacez <network> par un objet JSON comme indiqué dans les exemples suivants. Les guillemets simples sont obligatoires.
  3. Dans l'exemple suivant, l'annotation spécifie l'attachement réseau qui aura la route par défaut, en utilisant le paramètre default-route.

    apiVersion: v1
    kind: Pod
    metadata:
      name: example-pod
      annotations:
        k8s.v1.cni.cncf.io/networks: '
        {
          "name": "net1"
        },
        {
          "name": "net2", 1
          "default-route": ["192.0.2.1"] 2
        }'
    spec:
      containers:
      - name: example-pod
        command: ["/bin/bash", "-c", "sleep 2000000000000"]
        image: centos/tools
    1
    La clé name est le nom du réseau supplémentaire à associer au pod.
    2
    La clé default-route spécifie la valeur d'une passerelle sur laquelle le trafic doit être acheminé si aucune autre entrée de routage n'est présente dans la table de routage. Si plus d'une clé default-route est spécifiée, le pod ne sera pas activé.

La route par défaut permet d'acheminer vers la passerelle tout le trafic qui n'est pas spécifié dans d'autres routes.

Important

La définition de la route par défaut sur une interface autre que l'interface réseau par défaut pour OpenShift Container Platform peut faire en sorte que le trafic prévu pour le trafic pod-to-pod soit acheminé sur une autre interface.

Pour vérifier les propriétés de routage d'un pod, la commande oc peut être utilisée pour exécuter la commande ip à l'intérieur d'un pod.

oc exec -it <nom_du_pod> -- ip route
Note

Vous pouvez également consulter le site k8s.v1.cni.cncf.io/networks-status du pod pour savoir quel réseau supplémentaire s'est vu attribuer la route par défaut, grâce à la présence de la clé default-route dans la liste d'objets au format JSON.

Pour définir une adresse IP statique ou une adresse MAC pour un pod, vous pouvez utiliser les annotations au format JSON. Pour ce faire, vous devez créer des réseaux qui autorisent spécifiquement cette fonctionnalité. Ceci peut être spécifié dans un rawCNIConfig pour le CNO.

  1. Modifiez le CR CNO en exécutant la commande suivante :

    $ oc edit networks.operator.openshift.io cluster

Le fichier YAML suivant décrit les paramètres de configuration du CNO :

Configuration YAML de l'opérateur de réseau de cluster

name: <name> 1
namespace: <namespace> 2
rawCNIConfig: '{ 3
  ...
}'
type: Raw

1
Indiquez un nom pour la pièce jointe réseau supplémentaire que vous créez. Le nom doit être unique au sein de l'adresse namespace.
2
Indiquez l'espace de noms dans lequel créer la pièce jointe au réseau. Si vous ne spécifiez pas de valeur, l'espace de noms default est utilisé.
3
Spécifiez la configuration du plugin CNI au format JSON, qui est basé sur le modèle suivant.

L'objet suivant décrit les paramètres de configuration pour l'utilisation d'une adresse MAC statique et d'une adresse IP à l'aide du plugin CNI macvlan :

macvlan Objet de configuration JSON du plugin CNI utilisant une adresse IP et MAC statique

{
  "cniVersion": "0.3.1",
  "name": "<name>", 1
  "plugins": [{ 2
      "type": "macvlan",
      "capabilities": { "ips": true }, 3
      "master": "eth0", 4
      "mode": "bridge",
      "ipam": {
        "type": "static"
      }
    }, {
      "capabilities": { "mac": true }, 5
      "type": "tuning"
    }]
}

1
Spécifie le nom de la pièce jointe réseau supplémentaire à créer. Le nom doit être unique au sein de l'adresse namespace.
2
Spécifie un tableau de configurations de plugins CNI. Le premier objet spécifie une configuration de plugin macvlan et le second objet spécifie une configuration de plugin tuning.
3
Spécifie qu'une demande est faite pour activer la fonctionnalité d'adresse IP statique des capacités de configuration d'exécution du plugin CNI.
4
Spécifie l'interface utilisée par le plugin macvlan.
5
Spécifie qu'une demande est faite pour activer la fonctionnalité d'adresse MAC statique d'un plugin CNI.

L'attachement réseau ci-dessus peut être référencé dans une annotation au format JSON, avec des clés permettant de spécifier l'adresse IP statique et l'adresse MAC qui seront attribuées à un pod donné.

Modifier le pod avec :

oc edit pod <name> $ oc edit pod <name>

macvlan Objet de configuration JSON du plugin CNI utilisant une adresse IP et MAC statique

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
  annotations:
    k8s.v1.cni.cncf.io/networks: '[
      {
        "name": "<name>", 1
        "ips": [ "192.0.2.205/24" ], 2
        "mac": "CA:FE:C0:FF:EE:00" 3
      }
    ]'

1
Utilisez le site <name> comme indiqué lors de la création du site rawCNIConfig ci-dessus.
2
Fournir une adresse IP, y compris le masque de sous-réseau.
3
Indiquer l'adresse MAC.
Note

Les adresses IP statiques et les adresses MAC ne doivent pas nécessairement être utilisées en même temps ; vous pouvez les utiliser séparément ou ensemble.

Pour vérifier l'adresse IP et les propriétés MAC d'un module avec des réseaux supplémentaires, utilisez la commande oc pour exécuter la commande ip dans un module.

oc exec -it <nom_du_pod> -- ip a
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.