Bird
Raised Fist0
Kubernetesdevops~10 mins

Container logging architecture in Kubernetes - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to specify the logging driver for a Docker container.

Kubernetes
docker run --log-driver=[1] nginx
Drag options to blanks, or click blank then click option'
Ajson-file
Bsyslog
Cnone
Djournald
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing a logging driver that disables logging like 'none'.
Using a system logging driver when the default is expected.
2fill in blank
medium

Complete the command to view logs of a Kubernetes pod named 'webapp'.

Kubernetes
kubectl logs [1]
Drag options to blanks, or click blank then click option'
Adeployment/webapp
Bpod/webapp
Cservice/webapp
Dnode/webapp
Attempts:
3 left
💡 Hint
Common Mistakes
Using deployment or service names instead of pod names.
Trying to get logs from nodes directly.
3fill in blank
hard

Fix the error in the Fluentd configuration snippet to collect container logs from the correct path.

Kubernetes
<source>
  @type tail
  path [1]
  pos_file /var/log/fluentd-containers.log.pos
  tag kubernetes.*
  format json
</source>
Drag options to blanks, or click blank then click option'
A/var/log/syslog
B/var/log/pods/*.log
C/var/log/docker/*.log
D/var/log/containers/*.log
Attempts:
3 left
💡 Hint
Common Mistakes
Using pod log paths instead of container log paths.
Using system log paths like syslog.
4fill in blank
hard

Fill both blanks to create a Kubernetes DaemonSet manifest snippet that deploys a logging agent on all nodes.

Kubernetes
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd
spec:
  selector:
    matchLabels:
      name: fluentd
  template:
    metadata:
      labels:
        name: fluentd
    spec:
      containers:
      - name: fluentd
        image: fluentd:latest
        volumeMounts:
        - name: varlog
          mountPath: [1]
      volumes:
      - name: varlog
        hostPath:
          path: [2]
Drag options to blanks, or click blank then click option'
A/var/log/containers
B/var/log/pods
C/var/log
D/var/lib/docker/containers
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up container mount path and host path.
Using pod log paths instead of container log paths.
5fill in blank
hard

Fill all three blanks to define a Kubernetes ConfigMap for Fluentd with a filter to add Kubernetes metadata.

Kubernetes
apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
data:
  fluent.conf: |
    <filter kubernetes.**>
      @type [1]
      kubernetes_url [2]
      cache_size [3]
    </filter>
Drag options to blanks, or click blank then click option'
Akubernetes_metadata
Bhttps://kubernetes.default.svc
C1000
Drecord_transformer
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong filter types like record_transformer.
Incorrect Kubernetes API URL.
Setting cache_size to a non-numeric value.

Practice

(1/5)
1. In Kubernetes, where do containers typically write their logs?
easy
A. Directly to files inside the container's filesystem
B. To a database inside the container
C. To a remote logging server
D. To stdout and stderr streams

Solution

  1. Step 1: Understand container logging basics

    Containers are designed to write logs to standard output (stdout) and standard error (stderr) streams instead of files inside the container.
  2. Step 2: Recall Kubernetes logging capture method

    Kubernetes captures these stdout and stderr streams from containers to manage logs effectively.
  3. Final Answer:

    To stdout and stderr streams -> Option D
  4. Quick Check:

    Container logs = stdout/stderr [OK]
Hint: Remember containers log to stdout/stderr, not files [OK]
Common Mistakes:
  • Thinking logs are stored inside container files
  • Assuming logs go directly to remote servers
  • Confusing stdout/stderr with database logging
2. Which of the following is the correct way Kubernetes stores container logs on a node?
easy
A. As log files under /var/log/containers directory on the node
B. In a centralized database on the master node
C. Inside the container's writable layer
D. In memory only, not persisted on disk

Solution

  1. Step 1: Identify Kubernetes node log storage

    Kubernetes stores container logs as files on the node, typically under the /var/log/containers directory.
  2. Step 2: Eliminate incorrect options

    Logs are not stored in a centralized database on the master, nor inside the container writable layer, and they are persisted on disk, not just in memory.
  3. Final Answer:

    As log files under /var/log/containers directory on the node -> Option A
  4. Quick Check:

    Node logs path = /var/log/containers [OK]
Hint: Kubernetes logs are files under /var/log/containers on nodes [OK]
Common Mistakes:
  • Assuming logs are stored only in memory
  • Thinking logs are inside container writable layer
  • Believing logs are centralized on master node
3. Given a Kubernetes cluster with a logging agent running on each node, what is the primary role of this agent?
medium
A. To collect container logs from node files and send them to a central system
B. To create log files inside each container
C. To delete old logs from the container filesystem
D. To restart containers when logs grow too large

Solution

  1. Step 1: Understand logging agent function

    Logging agents run on nodes to gather logs from container log files stored on the node.
  2. Step 2: Identify agent's purpose

    The agent sends collected logs to a central logging system for easy access and analysis.
  3. Final Answer:

    To collect container logs from node files and send them to a central system -> Option A
  4. Quick Check:

    Logging agent = collect and forward logs [OK]
Hint: Logging agents gather and forward logs to central systems [OK]
Common Mistakes:
  • Thinking agents create logs inside containers
  • Assuming agents delete logs automatically
  • Believing agents restart containers based on log size
4. You notice that your Kubernetes logging agent is not forwarding logs to the central system. Which of the following is the most likely cause?
medium
A. Containers are writing logs to stdout/stderr
B. The logging agent cannot access the /var/log/containers directory on the node
C. The central logging system is storing logs on the node
D. Kubernetes does not support logging agents

Solution

  1. Step 1: Analyze logging agent failure

    If the agent cannot access the node's log directory, it cannot read logs to forward them.
  2. Step 2: Check other options for correctness

    Containers writing to stdout/stderr is normal; Kubernetes supports logging agents; central system storing logs on node is unrelated to forwarding failure.
  3. Final Answer:

    The logging agent cannot access the /var/log/containers directory on the node -> Option B
  4. Quick Check:

    Agent access to logs = critical [OK]
Hint: Check logging agent's access to node log files first [OK]
Common Mistakes:
  • Blaming containers writing to stdout/stderr
  • Assuming Kubernetes lacks logging agent support
  • Confusing central system storage with forwarding issues
5. You want to implement a centralized logging solution in Kubernetes. Which combination correctly describes the container logging flow?
hard
A. Containers write logs to stdout/stderr -> Kubernetes stores logs in etcd -> Logging agent collects logs from etcd
B. Containers write logs to files inside container -> Kubernetes copies files to master -> Logging agent forwards logs
C. Containers write logs to stdout/stderr -> Kubernetes stores logs on node -> Logging agent collects and forwards logs
D. Containers send logs directly to central server -> Kubernetes stores logs on node -> Logging agent deletes logs

Solution

  1. Step 1: Understand container log writing

    Containers write logs to stdout/stderr streams, not files inside the container.
  2. Step 2: Trace Kubernetes log handling

    Kubernetes captures these logs and stores them as files on the node.
  3. Step 3: Identify logging agent role

    Logging agents collect these node log files and forward them to a central logging system.
  4. Final Answer:

    Containers write logs to stdout/stderr -> Kubernetes stores logs on node -> Logging agent collects and forwards logs -> Option C
  5. Quick Check:

    Logging flow = stdout -> node files -> agent -> central [OK]
Hint: Follow logs: stdout -> node storage -> agent -> central system [OK]
Common Mistakes:
  • Thinking logs are stored in etcd
  • Assuming containers write logs to files inside container
  • Believing logging agent deletes logs