CKA-2026-SideCar

Context

您需要将一个传统应用程序集成到 Kubernetes 的日志架构(例如 kubectl logs)中。

实现这个要求的通常方法是添加一个流式传输并置容器。

Task

更新现有的 synergy-leverager Deployment,

将使用 busybox:stable 镜像,且名为 sidecar 的并置容器,添加到现有的 Pod 。

新的并置容器必须运行以下命令:

/bin/sh -c "tail -n+1 -f /var/log/legacy-app.log"

使用挂载在 /var/log 的 Volume,使日志文件 legacy-app.log 可供并置容器使用。

除了添加所需的卷挂载之外,请勿修改现有容器的规范。

参考:提取volumeMounts、volumes信息https://kubernetes.io/docs/concepts/cluster-administration/logging

apiVersion: v1
kind: Pod
metadata:
  name: counter
spec:
  containers:
  - name: count
    image: busybox:1.28
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/1.log;
        echo "$(date) INFO $i" >> /var/log/2.log;
        i=$((i+1));
        sleep 1;
      done      
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log-1
    image: busybox:1.28
    args: [/bin/sh, -c, 'tail -n+1 -F /var/log/1.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log-2
    image: busybox:1.28
    args: [/bin/sh, -c, 'tail -n+1 -F /var/log/2.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
解答:

步骤1导出yaml

kubectl get deployment synergy-leverager -o yaml  > sidecar.yaml
 

步骤2.编辑 yaml

vim sidecar.yaml

spec:
  containers:
  # ===== 原有容器(count)=====
  - args:
    - /bin/sh
    - -c
    - |
      i=0; while true; do
        echo "$(date) INFO $i" >> /var/log/legacy-app.log;   # 每秒写入一条带时间戳的日志到 /var/log/legacy-app.log
        i=$((i+1));
        sleep 1;
      done
    image: alpine                     # 使用轻量级 Alpine Linux 镜像
    imagePullPolicy: Always
    name: count
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    # + 已有容器 增加 3 行(以下为新增的 volumeMounts 部分)
    volumeMounts:                     # 挂载共享卷
    - name: varlog                    # 引用下面定义的 volumes 中的 varlog 卷
      mountPath: /var/log             # 将卷挂载到容器的 /var/log 目录,使日志文件可被其他容器访问

  # ===== 新增 sidecar 容器 =====
  # + 新容器 增加 6 行
  - name: sidecar
    image: busybox:stable             # 使用 BusyBox 镜像,内含 tail 命令
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log']  # 持续跟踪日志文件并输出到标准输出
    volumeMounts:
    - name: varlog                    # 挂载同一个共享卷
      mountPath: /var/log             # 使 sidecar 能读取 count 容器写入的日志文件

  # ===== 共享卷定义 =====
  # + 增加 3 行
  volumes:
  - name: varlog                      # 卷名称,与 volumeMounts 中的 name 对应
    emptyDir: {}                      # 临时空目录,Pod 生命周期内存在,用于容器间共享文件

步骤3. 应用更新

kubectl apply -f sidecar.yaml

提示 configured,表示配置成功

< 5 > 检查

检查新 Pod 是否 Running

kubectl get pod | grep synergy-leverager

显示 2/2 Running

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值