您可以為 Syslog 設定側車容器,以便在與 NCP 相同的網繭中執行。下列程序假設 Syslog 代理程式映像為 example/rsyslog。

程序

  1. 設定 NCP 和 NSX 節點代理程式以記錄至檔案。
    在 NCP 和 NSX 節點代理程式的 yaml 檔案中設定 log_dir 參數,並指定要掛接的磁碟區。例如,
        [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

    您可以藉由設定 log_file 參數來變更記錄檔名稱。預設名稱為 ncp.lognsx_node_agent.lognsx_kube_proxy.log。如果 log_dir 選項設為 /var/log/nsx-ujo 以外的路徑,則必須建立 hostPath 磁碟區或 emptyDir 磁碟區,並將其掛接至對應的網繭規格。

  2. 確保主機路徑存在且可由使用者 nsx-ncp 寫入。
    1. 執行下列命令。
          mkdir -p <host-filesystem-log-dir-path>
          chmod +w <host-filesystem-log-dir-path>
    2. 新增使用者 nsx-ncp 或將主機路徑的模式變更為 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. 在 NCP 網繭的規格 yaml 檔案中,新增 Syslog 的 ConfigMap。例如,
        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. 在 NCP 網繭的 yaml 檔案中新增 rsyslog 容器,然後掛接可讓 rsyslog 從其他容器中找到組態資料及讀取記錄的適當磁碟區。例如,
         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>