跳转至

05故障排除

考试大纲

故障排除:30%

  • 评估集群和节点日志

  • 了解如何监视应用程序

  • 管理容器标准输出和标准错误日志

  • 解决应用程序故障

  • 对群集组件故障进行故障排除

  • 排除网络故障

日志

题目描述:

  • 配置环境 kubectl config use-context k8s
  • 监控 pod foo 的日志并:
  • 提取与错误 unable-to-access-website 相对应的日志行
  • 将这些日志行写入到/opt/KUTR00101/foo

官方文档:

参考解答:

kubectl logs pod foo | grep unable-to-access-website > /opt/KUTR00101/foo

Sidecar 代理

题目描述:

  • 设置配置环境 kubectl config use-context k8s

  • 在不更改其现有容器的情况下,需要将一个现有的 pod 集成到 kubernetes 的内置日志记录 体系结构中(例如 kubectl logs)。添加 streamimg sidecar 容器是实现此要求的一种好方法。

  • 将一个 busybox sidecar 容器添加到现有的 pod legacy-app。新的 sidecar 容器必须运行一下命令:/bin/sh -c tail -n+1 -f /var/log/legacy-app.log

  • 使用名为 logs 的 volume mount 来让文件/var/log/legacy-app.log 可用于 sidecar 容器。

  • 不要更改现有容器。不要修改日志文件的路径,两个容器必须通过/var/log/legacy-app.log 来访问该文件

官方文档:

参考解答:

  • 复制 legacy-app pod 的配置文件
kubectl get pod legacy-app -o yaml > /cka/legacy-app.yaml
  • 修改 legacy-app 的配置
  • 添加 volumes
  • 添加 sidecar container
  • 现有 container 添加 volumeMounts
  • 删除原 legacy-app pod
  • 创建新的 legacy-app pod

Pod 度量指标

题目描述:

  • 设置配置环境 kubectl config use-context k8s

  • 通过 pod label name=cpu-user,找到运行时占用大量 CPU 的 pod,并将占用 CPU 最高的 pod 名称写入到文件/opt/KUTR000401/KUTR00401.txt(已存在)

官方文档:

参考解答:

kubectl top pod -l name=cpu-user

# 将 CPU 占用最高的 pod 名称写入文件
echo $pod_name > /opt/KUTR000401/KUTR00401.txt

节点故障排查

题目描述:

  • 设置配置环境 kubectl config use-context ek8s

  • 名为wk8s-node-0(练习环境使用 vms26.rhce.cc)的 kubernetes worker node 处于 Not Ready 状态。调查发生这种情况的原因,并采取相应措施将 node 恢复为 Ready 状态,确保所做的任何更改永久生效。

  • 可使用以下命令通过ssh连接到故障node:

  • ssh wk8s-node-0 (vms26.rhce.cc)

  • 可使用以下命令在该node上获取更高权限:

  • sudo -i

官方文档:

参考解答:

systemctl status kubelet
systemctl enable --now kubelet