CNCF 开源项目,把 K8s Worker 节点上的本地/远程存储转为 Persistent Volume,以下是这几种方案的对比
维度
Local PV Hostpath
Local PV LVM
Local PV ZFS
Replicated PV Mayastor
底层技术
文件系统目录 (Ext4/XFS)
LVM 逻辑卷
ZFS 文件系统
SPDK + NVMe-oF
存储类型
文件存储
块存储
文件+块存储
块存储
数据副本
1份(单节点)
1份(单节点)
1份(单节点)
2+份(跨节点同步)
节点故障容忍
❌
❌
❌
✅
快...
集中监控方案对比
维度
Prometheus
Zabbix
夜莺 N9E
数据采集
✅ 自己拉取(pull)
✅ 自己采集(agent)
❌ 不做采集,靠外部
数据存储
✅ 本地 TSDB
✅ 自带数据库
❌ 不存数据,接外部库
查询语言
PromQL
自有查询
用数据源的查询语言
可视化
基础
中等
基础(官方建议用 Grafana)
告警引擎
Alertmanager
内置
✅ 这是核心
通知渠道
几种(需要配置)
几十种
20种内置
告警自愈
❌
✅
✅
多数据源
❌ 只管自己
❌ 只管自己
✅ Prom/ES/Loki...
recording rules的核心优势,是将海量数据进行提前计算比如cpu mem使用率这类基础的数据,如果节点只有10 50台可能无所谓,查询的时候感觉不出区别,但如果有500台,那是否使用recording rules的差异就会相当明显
编写recording rules——使用prometheusRule CRD旨在说明如何进行recording rules配置编写与使用,这种方式也是kube-prometheus-stack使用的方式,是使用Operator的原生方式
1234567891011121314151617181920212223242526272829303132...
起因是通过Grafana仪表盘查看到集群etcd频繁进行出现切换的情况changes(etcd_server_leader_changes_seen_total{cluster=~“$cluster”}[1d])怀疑是磁盘性能不足导致etcd频繁切换主节点所以把磁盘从机械换成SSD,etcd挂载的是一块单独的分区,隶属于vgs k8s的lv etcd
12345678910111213141516171819当前使用的是/dev/mapper/k8s-etcd即vdb的分卷,现在准备改成vdclsblkNAME ...
起因是我发现我们客户在做GPU基准测试的时候,使用的是OrionX驱动科技的方案,并且它是优于原生的k8s调度方案的,那么有没有开源版本的类似的组件,可以让我来进行测试呢?
有的兄弟有的
GPU 虚拟化方案调研
方案
类型
核心机制
优劣
趋动科技 OrionX
商业
通过环境变量控制 GPU 分配
功能完整但要付费,厂商锁定
HAMi
开源 CNCF 孵化
拦截 CUDA API,显存限额 + 算力比例
OrionX 的开源替代,社区活跃
NVIDIA MPS
原生免费
多进程真正并发共享 GPU
真共享,但没有显存隔离,一个进程能吃满显存
NVIDIA Time...
机制解析在k8s中,DNS解析有两套,一套是k8s集群自带的dns解析,由CoreDNS组件维护,一套是节点自带的DNS系统(即/etc/resolve.conf那一套)
这个跟网络插件无关,无论使用什么CNI k8s都会部署CoreDNS
通过dnsPolicy参数进行控制,这个参数在pod以及各种控制器的spac下都可以找到
dnsPolicy
效果
ClusterFirst(默认)
先查 CoreDNS,查不到再转发上游
Default
用 Node 的 DNS,不走 CoreDNS
None
完全自定义,需要手动指定 dnsConfig
...
业务describe为无法下载pause镜像
原因①
crictl images发现镜像pause确实已经被清理了
crictl rmi --prune 命令crictl的老版本存在bug,会无视使用pause镜像的容器,删掉pause镜像
原因②
但如果只是因为crictl删了镜像,其实无所谓,因为k8s自己会去拉取镜像仓库中的pause镜像。但如果一个节点本身不具备拉取镜像的能力,那它就没办法从这个故障中自我恢复了
crictl pull k8s-deploy/pause:3.9 报错nerdctl pull k8s-deploy/pause:3.9 拉取成功,说明镜像存在,但是k...
很多集群规化的时候没规划好,kubelet所在分区总是会因为镜像太多,导致触发85%阈值,也就是会启diskpresure污点,导致pod被驱逐
所以写个脚本放进daemonset里自动定时清理节点上的脚本
pod需要挂载到node节点上,以便可以操作节点上的命令来操作磁盘
存在多种架构的CPU,需要打额外架构的镜像
思路一:脚本挂载节点nsenter1234567891011121314使用nsenter命令本意是进入命名空间,但是可以进入到PID为1的进程也就是initV或者systemd可以挂载所有命名空间,也就是成为这个节点本身"Linux 目前有 8 种命名空间(...