跳至主要內容
6 张图带你深入了解 kube-scheduler

6 张图带你深入了解 kube-scheduler

本文目录:

  • kube-scheduler 用途
  • Scheduler Pod 调度流程
  • 源码调用链路
  • Scheduler Framework
  • 如何扩展

kube-scheduler 用途

顾名思义:负责将 Pod 调度到 Node 上。


Clay原创大约 6 分钟云原生Kubernetes
从0开始装一套 KubeVirt 1.2.1

从0开始装一套 KubeVirt 1.2.1

KubeVirt 架构

架构

  • virt-api : 负责提供一些 KubeVirt 特有的 api,像是 console, vnc, startvm, stopvm 等。
  • virt-controller : 管理和监控 VMI 对象及其关联的 Pod,对其状态进行更新。
  • virt-hander : 以 DaemonSet 运行在每一个节点上,监听 VMI 的状态向上汇报,管理 VMI 的生命周期。
  • virt-launcher : 以 Pod 方式运行,每个 VMI Object 都会对应一个 virt-launcher Pod,容器内有单独的 libvirtd,用于启动和管理虚拟机。

Clay原创大约 6 分钟云原生Kubernetes
故障排查 之 单点登录跳转失败(Ingress 相关)

故障排查 之 单点登录跳转失败(Ingress 相关)

故障现象

单点登录失败,但是其他接口正常

根因分析

问题要点是:单点登录失败,看代码是 request 和 response 的 RedirectUri 不一样导致的。

目前的南北流量架构为:


Clay原创大约 2 分钟云原生Kubernetes
K8s 负载感知调度实践(koordinator & crane)

K8s 负载感知调度实践(koordinator & crane)

上篇 “深入了解 kube-scheduler” ,已经知道 kube-scheduler 的工作流程,以及如何实现自定义插件。koordinator 和 crane 都是基于Scheduler Framework 进行实现的 负载感知插件。本文不再赘述,感兴趣可以看上篇文章。

背景

原生 Kubernetes 调度器仅基于资源的 Request 进行调度,在生产环境资源的真实使用率和申请率往往相差巨大,造成资源浪费的同时也会造成节点的负载不均衡


Clay原创大约 3 分钟云原生Kubernetes
K8s 集群巡检

K8s 集群巡检

上次发文 K8s 无备份,不运维,文章开篇,插入了一张 K8s 集群巡检的图片,好多小伙伴私信留言,问我要开源地址。由于其通用性不高,大多数公司需要结合自身的架构情况进行不同的巡检,所以我没有开源。

今天发现有小伙伴还在群里讨论,有没有类似的工具/平台,虽然没有开源,我把其关键的 巡检指标后端核心伪代码 分享出来,供各位同行参考。


Clay原创大约 11 分钟云原生Kubernetes
K8s CPU Throttle 优化方案

K8s CPU Throttle 优化方案

CPU Throttle 问题详解

受内核调度控制周期(cfs_period)影响,容器的 CPU 利用率往往具有一定的欺骗性,下图展示了某容器一段时间的 CPU 使用情况(单位为0.01核),可以看到在 1s 级别的粒度下(图中紫色折线),容器的 CPU 用量较为稳定,平均在 2.5 核左右。根据经验,管理员会将 CPU Limit设置为 4 核。本以为这已经保留了充足的弹性空间,然而若我们将观察粒度放大到 100ms 级别(图中绿色折线),容器的 CPU 用量呈现出了严重的毛刺现象,峰值达到 4 核以上。此时容器会产生频繁的 CPU Throttle,进而导致应用性能下降、RT 抖动,但我们从常用的 CPU 利用率指标中竟然完全无法发现!


Clay原创大约 4 分钟云原生Kubernetes
K8s 驱逐场景以及规避方案

K8s 驱逐场景以及规避方案

Pod 驱逐场景总结

从一个 SRE 角度看, Pod 驱逐分为两种情况:

  • 较安全驱逐 & 提高稳定性的良性驱逐
    • API 发起驱逐,典型案例:kubectl drain
    • Node Not Ready 时,Controller Manager 发起的驱逐
  • 有风险的驱逐
    • 节点压力驱逐
      • 节点磁盘空间不足、内存不足 或 Pid 不足, kubelet 发起驱逐
      • 节点内存不足,内核发起 OOM
    • 节点打污点(NoExecute),导致 Pod 被驱逐,或者移除亲和性标签,导致 Pod 被驱逐, Controller Manager 发起的驱逐
    • Pod 超过自身 Limit 限制, 内核用满,临时存储用满等
    • 优先级抢占驱逐

Clay原创大约 3 分钟云原生Kubernetes
2
3
4
5