首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
云原生插件 OpenKruise 代码详解
HrimfaxiYKW
创建于2023-08-03
订阅专栏
本专栏基于 OpenKruise V1.4 对常见的 workload 以及各种拓展功能进行详细的代码级解析
等 1 人订阅
共14篇文章
创建于2023-08-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
OpenKruise 概述
本文是系列专栏《OpenKruise 代码详解》的综述,包含了所有 workload 的源码分析及 feature 特性
BroadcastJob
关键词: each nodo one job Reconcile 预处理 打 lables( addLabelToPodTemplate(job) ) broadcastjob-name = job.
OpenKruise: PodUnavailableBudget
Webhook-PUBValidating 只需要关注函数 Handle() =>validatingPodUnavailableBudgetFn 校验本身 spec 的合法性 validatePod
Deletion Protection
特性开关 删除条件 这个比较简单,和官网文档描述一致,我直接贴出来 删除时机 我们拿 cloneSet 举例,来看什么时候会走到函数 ValidateWorkloadDeletion
OpenKruise: ResourceDistribution
ResourceDistribution 目前支持 Secret 和 ConfigMap 两类资源的分发和同步 使用示例 Reconcile 参数解析 拿到分发的资源信息: resource, err
OpenKruise: Container Restart
ContainerRecreateRequest 可以帮助用户重启/重建存量 Pod 中一个或多个容器。 和 Kruise 提供的原地升级类似,当一个容器重建的时候,Pod 中的其他容器还保持正常运行
OpenKruise: Kruise-daemon
Container-Recreate 调用层级 通过 crr 拿到 pod: pod := convertCRRToPod(crr) 再通过函数 runtimeManager.GetPodStatus
UnitedDeployment
UnitedDeployment 是创建并管理多个 workload 的,一个 UnitedDeployment 只能管理一种 workload,然后通过 subsets 进行调度 Reconcile
WorkloadSpread
每一个WorkloadSpread定义多个区域(定义为subset), 每个subset对应一个maxReplicas数量。WorkloadSpread利用Webhook注入subset定义的域信息,
SidecarSet + PodLaunchPriority
SidecarSet SidecarSet 将 sidecar 容器的定义和生命周期与业务容器解耦,通过 selector 注入容器到指定 pod 创建时注入 运行时原地升级[包括热升级] e.g.
AdvancedCronJob
相比原生的 job,AdvancedCronJob 支持创建 broadcastJob, 本质上如果还有其他 job 的扩展,也可以在这里实现 Reconcile reconcileJob 预处理 通
Advanced DaemonSet
api: apis/apps/v1alpha1/daemonset_types.go controller: pkg/controller/daemonset/ ⚠️ demonset 保证的是在对应
OpenKruise: CloneSet 代码详解
本文主要对 openkruise-workload cloneset 代码进行剖析,另外还包括生命周期钩子的原理
OpenKruise: Advanced Statefulset 代码详解
本章主要介绍了 openkruise workload Advanced Statefulset 的代码实现,同时也描述了 kruise-daemon imagepuller 的原理