故障排查
如何升级 Kubernetes 节点的 cgroup 版本
· ☕ 2 分钟
1. cgroup v1 与 v2 接口路径差别 v1 1 2 3 4 /sys/fs/cgroup/cpu/cpu.cfs_quota_us /sys/fs/cgroup/cpu/cpuacct.usage /sys/fs/cgroup/memory/memory.limit_in_bytes /sys/fs/cgroup/memory/memory.usage_in_bytes v2 1 2 3 4 /sys/fs/cgroup/cpu.max /sys/fs/cgroup/cpu.stat /sys/fs/cgroup/memory.max /sys/fs/cgroup/memory.current cgroup v2 是 v1 的升级版本,具有更统一的资层级管理、精准的资源隔离等优点。但也导致了,写代码时,读取相关接口文件时路径不一样,需要做兼容处理。另外,一个思路就是,统一到一个 cgroup 版本。 Kubernetes 默认支持

NVIDIA DCGM 使用指南
· ☕ 9 分钟
1. 什么是 DCGM DCGM (Data Center GPU Manager) 是 NVIDIA 提供的一个用于数据中心 GPU 管理和监控的工具集,提供了以下功能: GPU 行为监控 GPU 配置管理 GPU 策略监督 GPU 健康和诊断 GPU 计费和进程统计 NVSwitch 配置和监控 2. 安装 DCGM 2.1 安装 libnvidia-nscq 一般都是 NVLink 连接 GPU,可以通过 nvidia-smi topo -m 查看是否有 NVSwitch 字样输出判断是否需要安

kubectl logs 无法查看 Pod 日志报错 NotFound
· ☕ 1 分钟
1. 现象 能查看 Pod 的信息 1 2 3 4 kubectl -n my-testns get pod my-testpod NAME READY STATUS RESTARTS AGE my-testpod 1/1 Running 0 2d13h 不能查看 Pod 的日志 1 2 3 kubectl -n my-testns logs my-testpod -f Error from server (NotFound): the server could not find the requested resource ( pods/log my-testpod) 在 Pod 所在主机上可以通过 docker logs 查看容器日志。 测试 Kubelet 的健康状态 OK 1 curl -k https://x.x.x.x:10250/healthz 这里要使用主机的 IP 地址,kubectl logs 命名会直接

将 JuiceFS 元数据从 Redis 迁移到 PGSQL
· ☕ 2 分钟
1. 为什么将元数据存储从 Redis 迁移到 PGSQL PGSQL 成本低 Redis 使用内存存储元数据,PGSQL 使用磁盘存储元数据,成本差异显而易见。 PGSQL 性能可调节 不同的 PGSQL 提供了不同的性能 IOPS。如果对性能没有持续高的要求,使用 PGSQL 是不错的选择。 PGSQL 存储上限更高 如果按照元数据大小估算

为什么 top node、free、Grafana 的数据对不上
· ☕ 3 分钟
1. top 查看节点资源使用率超过 100% 1 2 3 4 5 6 kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master-1 995m 16% 13760Mi 118% master-2 827m 13% 10672Mi 92% master-3 889m 14% 10244Mi 88% 这是由于在计算使用率时,默认使用的是可分配的资源,排除了 Kubelet 保留的部分。在 kubectl 源码中可以看到: 1 2 3 4 5 6 7 for _, n := range nodes { if !o.ShowCapacity { availableResources[n.Name] = n.Status.Allocatable } else { availableResources[n.Name] = n.Status.Capacity } } 如果需要