Vous pouvez configurer un conteneur complémentaire pour Syslog à exécuter dans le même espace que NCP. La procédure suivante suppose que l'image d'agent Syslog est exemple/rsyslog.

Procédure

  1. Configurez des agents de nœud NCP et NSX pour vous connecter à un fichier.
    Dans le fichier yaml pour les agents de nœud NCP et NSX, définissez le paramètre log_dir et spécifiez le volume à monter. Par exemple,
        [DEFAULT]
        log_dir = /var/log/nsx-ujo/
        ...
    
        spec:
          ...
          containers:
            - name: nsx-ncp
              ...
              volumeMounts:
              - name: nsx-ujo-log-dir
                # Mount path must match [DEFAULT] option "log_dir"
                mountPath: /var/log/nsx-ujo
          volumes:
            ...
            - name: nsx-ujo-log-dir
              hostPath:
                path: /var/log/nsx-ujo

    Vous pouvez modifier le nom du fichier journal en définissant le paramètre log_file. Les noms par défaut sont ncp.log, nsx_node_agent.log et nsx_kube_proxy.log. Si l'option log_dir est définie sur un chemin différent de /var/log/nsx-ujo, un volume hostPath ou un volume emptyDir doit être créé et monté sur la spécification d'espace correspondante.

  2. Assurez-vous que le chemin d'accès de l'hôte existe et est accessible en écriture par l'utilisateur nsx-ncp.
    1. Exécutez les commandes suivantes.
          mkdir -p <host-filesystem-log-dir-path>
          chmod +w <host-filesystem-log-dir-path>
    2. Ajoutez l'utilisateur nsx-ncp ou définissez le mode de chemin d'accès de l'hôte sur 777.
          useradd -s /bin/bash nsx-ncp
          chown nsx-ncp:nsx-ncp <host-filesystem-log-dir-path>
      or
          chmod 777 <host-filesystem-log-dir-path>
  3. Dans le fichier yaml de spécification de l'espace NCP, ajoutez un ConfigMap pour Syslog. Par exemple,
        kind: ConfigMap
        metadata:
          name: rsyslog-config
          labels:
            version: v1
        data:
          ncp.conf: |
            module(load="imfile")
        
            ruleset(name="remote") {
              action(type="omfwd"
              Protocol="tcp"
              Target="nsx.example.com"
              Port="514")
        
              stop
            }
        
            input(type="imfile"
              File="/var/log/nsx-ujo/ncp.log"
              Tag="ncp"
              Ruleset="remote"
  4. Dans le fichier yaml de l'espace NCP, ajoutez le conteneur rsyslog et montez les volumes appropriés, où rsyslog peut trouver les données de configuration et lire les journaux d'autres conteneurs. Par exemple,
         spec:
           containers:
           - name: nsx-ncp
             ...
           - name: rsyslog
             image: example/rsyslog
             imagePullPolicy: IfNotPresent
             volumeMounts:
             - name: rsyslog-config-volume
               mountPath: /etc/rsyslog.d
               readOnly: true
             - name: nsx-ujo-log-dir
               mountPath: /var/log/nsx-ujo
           volumes:
             ...
             - name: rsyslog-config-volume
               configMap:
                 name: rsyslog-config
             - name: nsx-ujo-log-dir
               hostPath:
                 path: <host-filesystem-log-dir-path>