如何复现DaemonSet部署后无就绪Pod场景及获取错误事件
DaemonSet部署后无Pod就绪的复现与错误事件排查
一、复现DaemonSet部署后无Pod就绪的场景
你可以通过修改示例DaemonSet配置,人为制造异常来触发无Pod就绪的情况,常见触发方式包括:
- 镜像拉取失败:将容器镜像替换为不存在的地址,比如把
quay.io/fluentd_elasticsearch/fluentd:v2.5.2改成invalid/fluentd:wrong-tag - 权限不足:挂载主机上容器无访问权限的目录(如
/root),导致容器启动失败 - 资源不足:将CPU/内存请求调至节点无法承载的数值,比如把CPU请求改为
2000m,Pod会因资源不够处于Pending状态 - 配置错误:写错挂载卷名称、hostPath路径不存在等
以下是修改后可复现镜像拉取失败场景的DaemonSet配置:
apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd namespace: logging labels: app: fluentd-logging spec: selector: matchLabels: name: fluentd template: metadata: labels: name: fluentd spec: containers: - name: fluentd-elasticsearch # 改为不存在的镜像地址,触发拉取失败 image: invalid/fluentd:wrong-tag resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log terminationGracePeriodSeconds: 30 volumes: - name: varlog hostPath: path: /var/log
二、使用字段选择器获取DaemonSet相关错误事件
要筛选出与目标DaemonSet关联的事件,可使用kubectl get events命令配合字段选择器,对应的规则为:involvedObject.kind=DaemonSet,involvedObject.name="你的DaemonSet名称"
具体命令示例(替换fluentd为你的DaemonSet名称,logging为对应命名空间):
kubectl get events -n logging --field-selector involvedObject.kind=DaemonSet,involvedObject.name=fluentd
该命令会列出所有关联到fluentd DaemonSet的事件,包含镜像拉取失败、资源不足等错误信息,可直接用于定位Pod无法就绪的原因。
内容的提问来源于stack exchange,提问作者susanna
相关产品推荐
相关产品推荐

