Sie können einen Sidecar-Container für Syslog für die Ausführung in demselben Pod wie NCP konfigurieren. Bei dem folgenden Verfahren wird davon ausgegangen, dass das Syslog-Agent-Image „example/rsyslog“ ist.

Prozedur

  1. Konfigurieren Sie NCP und den NSX-Knoten-Agent für die Protokollierung in einer Datei.
    Legen Sie in der yaml-Datei für NCP und den NSX-Knoten-Agent den Parameter „log_dir“ fest, und geben Sie bereitzustellende Volume an. Beispiel:
        [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

    Sie können den Namen der Protokolldatei ändern, indem Sie den log_file-Parameter festlegen. Die Standardnamen sind ncp.log nsx_node_agent.log und nsx_kube_proxy.log. Wenn die log_dir -Option auf einen anderen Pfad als /var/log/nsx-ujo festgelegt ist, muss entweder ein hostPath- oder emptyDir-Volume erstellt und für die entsprechende Pod-Spezifikation bereitgestellt werden.

  2. Stellen Sie sicher, dass der Host-Pfad existiert und vom Benutzer nsx-ncp beschreibbar ist.
    1. Führen Sie die folgenden Befehle aus.
          mkdir -p <host-filesystem-log-dir-path>
          chmod +w <host-filesystem-log-dir-path>
    2. Fügen Sie den Benutzer nsx-ncp hinzu oder ändern Sie den Modus des Hostpfads auf 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. Fügen Sie in der yaml-Spezifikationsdatei des NCP-Pods ein ConfigMap-Objekt für Syslog hinzu. Beispiel:
        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. Fügen Sie in der yaml-Datei des NCP Pods den rsyslog-Container hinzu, und stellen Sie die entsprechenden Volumes bereit, auf denen Rsyslog Konfigurationsdaten finden und Protokolle von anderen Containern lesen kann. Beispiel:
         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>