建立 Syslog 的側車容器

您可以為 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.log
    nsx_node_agent.log
    nsx_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>