È possibile configurare un container sidecar per syslog da eseguire nello stesso pod di NCP. La procedura seguente presuppone che l'immagine dell'agente syslog sia example/rsyslog.
Procedura
- Configurare NCP e l'agente del nodo NSX per la creazione del registro in un file.
Nel file YAML per NCP e l'agente del nodo NSX impostare il parametro log_dir e specificare il volume da montare. Ad esempio
[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
È possibile modificare il nome del file del registro impostando il parametro log_file. I nomi predefiniti sono ncp.log, nsx_node_agent.log e nsx_kube_proxy.log. Se l'opzione log_dir è impostata su un percorso diverso da /var/log/nsx-ujo, è necessario creare un volume hostPath o un volume emptyDir e montarlo nelle specifiche del pod corrispondente.
- Verificare che il percorso dell'host esista e che sia scrivibile dall'utente nsx-ncp.
- Eseguire i comandi seguenti.
mkdir -p <host-filesystem-log-dir-path> chmod +w <host-filesystem-log-dir-path>
- Aggiungere l'utente nsx-ncp o modificare la modalità del percorso dell'host impostandola su 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>
- Eseguire i comandi seguenti.
- Nel file YAML delle specifiche del pod NCP, aggiungere un elemento ConfigMap per syslog. Ad esempio
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"
- Nel file YAML del pod NCP aggiungere il container rsyslog e montare i volumi appropriati in cui rsyslog può trovare i dati di configurazione e leggere i registri di altri container. Ad esempio
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>