作者小头像 Lv.2
117 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
105
12
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2026/10/23 00:50:05 最后回复 yd_245773411 2026/10/23 07:38:20 版块 开发者空间
4 2 0
发布时间 2026/10/23 05:42:19 最后回复 yd_245773411 2026/10/23 07:37:21 版块 开发者空间
8 2 0
发布时间 2026/10/23 07:34:58 最后回复 yd_235361064 2026/10/23 07:36:10 版块 开发者空间
4 2 0
他的回复:
选型本质是先摸清业务画像,再按瓶颈维度选,别一上来只看核数。 1) 先定位瓶颈类型:CPU 密集(编译、转码、加解密)看主频和 vCPU,选计算型 c 系列;内存密集(Redis、大 JVM 堆、ES)看内存核比,选内存型 m 系列(常见 1:8);IO 密集(数据库、大数据、消息队列)看磁盘 IOPS 和网络带宽,选本地盘/高 IO 型;普通 Web 业务用通用型 s 系列就够。同代同系列里主频越高单核越强,PHP/Node 这类单线程敏感业务优先高主频,而不是堆核数。 2) 别只看单价,算单位性能成本:用业务真实压测(不是 sysbench 跑分)测出每元能扛多少 QPS。常见误区是买 16 核但 CPU 长期只跑 15%,不如 4 核 × 4 台水平扩展,还顺带消掉了单点。 3) 弹性优先:无状态服务用弹性伸缩 + 按需实例扛峰,包年包月只覆盖基线;竞价实例能省 70% 以上,但可被回收,适合 CI、离线计算、批处理这类可重试任务。 4) 存储和带宽最容易被忽略:云盘 IOPS 通常随容量线性增长,小容量高性能盘往往不够用,宁可买大一点;公网带宽按峰值包月很浪费,用按流量计费 + CDN 更省。 5) 留 30% 余量:CPU 长期跑 70% 以上,一次突发就雪崩;长期低于 20% 就该降配,别为了「以后可能用得上」多花钱。 一句话总结:先压测定位瓶颈,再按单位性能成本选系列,最后用弹性扛峰值。
发布时间 2026/10/23 00:29:56 最后回复 yd_241984912 2026/10/23 17:56:34 版块 开发者空间
58 20 0
他的回复:
用 CRD 扩展调度逻辑,OpenShift 上走 Operator 模式更稳,不要改 kube-scheduler 源码。核心是把"任务"抽象成自有资源,让调度决策落在控制器里。 1)定义 CRD:group scheduling.example.com、version v1,kind PlanningTask。spec 放优先级、前置任务依赖(dependsOn)、资源画像(cpu/内存/GPU)、可执行时间窗、节点亲和;status 放 phase、assignedNode、conditions,好处是 kubectl get planningtask 就能看排队与分配进度,operator 只做状态机。 2)轻量实现:CRD + 控制器做"二次调度"——监听 spec.nodeName 为空的 Pod,按业务规则算完分后直接调 Pods/Binding 子资源把 Pod 绑到节点,绕过默认调度器的 FIFO 队列。多调度器并存时给 Pod 打 schedulerName 区分职责。 3)复杂场景用调度框架(Scheduling Framework)插件:实现 Filter/Score 扩展点并注册成第二个调度器,能复用 NodeResourcesFit、InterPodAffinity、TaintToleration 等已有插件,比旁路绑定更稳,也不影响默认调度器行为。 4)动态规划任务要处理抢占与回填:用 PriorityClass 区分在线/批处理,批处理配 preemptionPolicy: Never 防止误驱逐在线业务;任务加 activeDeadlineSeconds 与 backoffLimit,控制器在失败时重建 CRD 对象而不是重试同一个 Pod,避免脏状态。 5)OpenShift 侧注意两点:控制器跑在专用 ServiceAccount 上,只给 pods/binding 与自定义资源读写的最小 RBAC,并确认 SCC 允许该 SA 的 securityContext;CRD 的 schema 上线前用 oc explain 校验,后续只做加字段的向后兼容变更,否则既有对象会校验失败被拒。 一句话总结:CRD 只是数据面,真正的调度语义要落在控制器或调度框架插件里,二者配合才能在 OpenShift 上实现可预测的动态调度。
他的回复:
用 CRD 扩展调度逻辑,OpenShift 上走 Operator 模式更稳,不要改 kube-scheduler 源码。核心是把"任务"抽象成自有资源,让调度决策落在控制器里。1)定义 CRD:group scheduling.example.com、version v1,kind PlanningTask。spec 放优先级、前置任务依赖(dependsOn)、资源画像(cpu/内存/GPU)、可执行时间窗、节点亲和;status 放 phase、assignedNode、conditions,好处是 kubectl get planningtask 就能看排队与分配进度,operator 只做状态机。2)轻量实现:CRD + 控制器做"二次调度"——监听 spec.nodeName 为空的 Pod,按业务规则算完分后直接调 Pods/Binding 子资源把 Pod 绑到节点,绕过默认调度器的 FIFO 队列。多调度器并存时给 Pod 打 schedulerName 区分职责。3)复杂场景用调度框架(Scheduling Framework)插件:实现 Filter/Score 扩展点并注册成第二个调度器,能复用 NodeResourcesFit、InterPodAffinity、TaintToleration 等已有插件,比旁路绑定更稳,也不影响默认调度器行为。4)动态规划任务要处理抢占与回填:用 PriorityClass 区分在线/批处理,批处理配 preemptionPolicy: Never 防止误驱逐在线业务;任务加 activeDeadlineSeconds 与 backoffLimit,控制器在失败时重建 CRD 对象而不是重试同一个 Pod,避免脏状态。5)OpenShift 侧注意两点:控制器跑在专用 ServiceAccount 上,只给 pods/binding 与自定义资源读写的最小 RBAC,并确认 SCC 允许该 SA 的 securityContext;CRD 的 schema 上线前用 oc explain 校验,后续只做加字段的向后兼容变更,否则既有对象会校验失败被拒。一句话总结:CRD 只是数据面,真正的调度语义要落在控制器或调度框架插件里,二者配合才能在 OpenShift 上实现可预测的动态调度。