Skip to content

06. 排障与清理 ​

这一页按“现象 → 原因 → 处理”组织,都是这套环境实际踩过的坑。

先按这个顺序排查 ​

不要一上来改组件配置,按层往下走:

text
1. 节点:Ready?磁盘满?时间同步?
2. Pod:Pending / ImagePull / CrashLoop / OOM?
3. 网络:Service DNS?跨节点?端口?
4. 依赖:PG/S3/Kafka 通不通?
5. 应用:配置、权限、版本
6. 数据:表/分区/文件是否存在

大多数“组件坏了”其实是上一层没准备好。

1. 节点与 K8s ​

现象原因处理
ImagePullBackOfftag 不存在 / imagePullPolicy: Always / 镜像站不通kubectl describe pod 看事件;换固定 tag;确认 certs.d
node2/3 join 超时安全组/内网不通从 node1 nc -vz $NODE2 6443
节点 NotReadyCNI 没装好kubectl -n kube-system get pods;看 calico
Pod 跨节点不通Pod CIDR 与 Calico IPPool 不一致确认 kubeadm --pod-network-cidr=10.244.0.0/16
磁盘压力驱逐系统盘被镜像/日志写满数据盘挂 /data;清理 /var/lib/containerd 旧目录

1.1 containerd 镜像配置不生效 ​

检查:

bash
grep -n 'config_path' /etc/containerd/config.toml

必须是:

toml
config_path = '/etc/containerd/certs.d'

不能是冒号分隔的多个目录,也不能同时配 registry.mirrors。

2. 存储 ​

现象原因处理
PVC Pendinglocal-path 没装/没设默认kubectl get sc
S3 连接超时用了公网 IP / path-style 没开用集群内 Service,开 path-style-access
Iceberg 建表失败JDBC catalog 连不上 PG进 Pod psql 测 5432
No FileSystem for scheme s3缺 S3A 实现用 S3FileIO,或加 hadoop-aws
现象原因处理
broker 起不来advertised.listeners 用了 0.0.0.0用 Pod IP
controller quorum 失败CLUSTER_ID 不一致三个 broker 用同一个
topic ISR 不足副本数大于 brokertopic --replication-factor 3,broker 必须 3
Flink TM 卡 DEPLOYINGblob 端口随机固定 blob.server.port: 6124 并暴露 Service
CDC 不消费增量没开 checkpointSQL 加 execution.checkpointing.interval
CDC 报 server-id 冲突多个作业共用 server-id每个作业用不同区间
Kafka sink 不支持 update/delete用了 kafka connector改 upsert-kafka + 主键

4. Doris ​

现象原因处理
BE Exit 0 / 不 AliveCPU 无 AVX2`lscpu
BE 启动即退出容器 nofile 太小containerd 配 LimitNOFILE=1048576
FE 连接拒绝FE 还没 readykubectl logs doris-fe-0
Stream Load 失败CSV 列数/分隔符不对检查 column_separator、列顺序
JDBC 写 1M 很慢逐批 insert改 Stream Load

5. Spark / Iceberg ​

现象原因处理
executor exit 134Iceberg 向量化 reader 崩spark.sql.iceberg.vectorization.enabled=false
driver 找不到主类--class 或 jar 路径不对检查 jar 内类名
K8s driver PendingServiceAccount/RBAC 不足绑定 edit;检查资源
写 S3 超时endpoint/凭证错用集群内 S3 Service
SHS 看不到应用eventLog 目录不一致提交和 SHS 用同一个 s3a:// 目录
事件日志写不进去S3A 配置缺失加 fs.s3a.*,确认 bucket 存在

6. DolphinScheduler ​

现象原因处理
master 起不来元数据库没初始化先跑 db-init,再重启 master/api
API 建工作流 10001参数结构不对用 UI 建;或直接写 DS 表(仅测试)
K8S 任务 NPEt_ds_cluster 没注册配 {"k8s":"<kubeconfig>"}
K8S 任务 Job 名非法任务名有下划线改成 RFC1123
OOMKilledminMemorySpace 单位是 Mi8192 才是 8Gi
任务成功但 Flink 没作业SQL client 只负责提交去 Flink UI 确认作业状态

7. 清理 ​

测试环境用完直接销毁,不需要保留数据。手动清理顺序:

bash
# 1. 停 DS 工作流(如果还在跑)
# 2. 删 Helm release
helm -n harbor uninstall harbor
helm -n ds-cluster uninstall dolphinscheduler
helm -n doris uninstall doris-operator
helm -n storage uninstall seaweedfs
helm -n monitoring uninstall kube-prometheus-stack

# 3. 删 namespace(会删 PVC,确认不要数据)
kubectl delete namespace data storage harbor doris ds-cluster openmetadata monitoring --ignore-not-found

# 4. 云控制台释放三台实例

删 namespace 会删 local-path 的 PV 数据,先确认没有要保留的内容。

8. 复用检查 ​

重搭后按顺序验证:

bash
kubectl get nodes
kubectl get pods -A | grep -v Running
kubectl -n data get pvc
kubectl -n doris exec doris-fe-0 -- mysql -h127.0.0.1 -P9030 -uroot -e 'SHOW BACKENDS;'
kubectl -n ds-cluster get pods
curl -sS -o /dev/null -w '%{http_code}\n' http://$NODE1:30082/

全部通过,再做端到端。