この方法では、NCP のすべてのコンポーネントのログをリダイレクトできます。アプリケーションは、デフォルトで有効になっている stderr にログを記録するように設定する必要があります。次の手順では、Syslog エージェント イメージが example/rsyslog であることを前提としています。

手順

  1. DaemonSet yaml ファイルを作成します。次はその例です。
        apiVersion: v1
        kind: ConfigMap
        metadata:
          name: rsyslog-config
          labels:
            version: v1
        data:
          nsx-ncp.conf: |
            module(load="imfile")
        
            ruleset(name="remote") {
              if $msg contains 'nsx-container' then
                action(type="omfwd"
                Protocol="tcp"
                Target="nsx.example.com"
                Port="514")
          
                stop
              }
          
              input(type="imfile"
                File="/var/log/containers/nsx-node-agent-*.log"
                Tag="nsx-node-agent"
                Ruleset="remote")
          
              input(type="imfile"
                File="/var/log/containers/nsx-ncp-*.log"
                Tag="nsx-ncp"
                Ruleset="remote")
          
              input(type="imfile"
                File="/var/log/syslog"
                Tag="nsx-cni"
                Ruleset="remote")
        ---
        # rsyslog DaemonSet
        apiVersion: extensions/v1beta1
        kind: DaemonSet
        metadata:
          name: rsyslog
          labels:
            component: rsyslog
            version: v1
        spec:
          template:
            metadata:
              labels:
              component: rsyslog
              version: v1
        spec:
          hostNetwork: true
          containers:
          - name: rsyslog
            image: example/rsyslog
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - name: rsyslog-config-volume
              mountPath: /etc/rsyslog.d
            - name: log-volume
              mountPath: /var/log
            - name: container-volume
              mountPath: /var/lib/docker/containers
          volumes:
          - name: rsyslog-config-volume
            configMap:
            name: rsyslog-config
          - name: log-volume
            hostPath:
              path: /var/log
          - name: container-volume
            hostPath:
              path: /var/lib/docker/containers
  2. DaemonSet を作成します。
    kubectl apply -f <daemonset yaml file>