胡伟煌

个人博客

置顶 kube-controller-manager源码分析(三)之 Informer机制

以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析k8s中各个核心组件经常使用到的Informer机制(即List-Watch)。该部分的代码主要位于client-go这个第三方包中。 此部分的逻辑主要位于/vendor/k8s.io/client-go/tools/cache包中,代码目录结构如下: 123456789101112131415161718192......

置顶 kubelet源码分析(五)之 syncPod

以下代码分析基于 kubernetes v1.12.0 版本。 本文主要分析kubelet中syncPod的部分。 1. managePodLoop managePodLoop通过读取podUpdateschannel的信息,执行syncPodFn函数,而syncPodFn函数在newPodWorkers的时候赋值了,即kubelet.syncPod。 managePodLoop完整代码......

Cgroup v2和v1的区别

本文主要介绍cgroup v2和v1的区别。 Cgroups(Control Groups)是 Linux 内核提供的一种资源限制、审计与隔离机制。它允许 将进程分组,并对这些组应用资源限制(如 CPU、内存、IO 等)。目前存在两个主要版本:cgroup v1 和 cgroup v2。 1. cgroup v1 和 v2 的主要区别 1.1. 层级结构设计 cgroup v1: 每......

Volcano的使用

本文主要介绍volcano的使用,内容由官网文档进行整理。 1. Volcano介绍 Volcano作为一个通用批处理平台,Volcano与几乎所有的主流计算框 架无缝对接,如Spark 、TensorFlow 、PyTorch 、 Flink 、Argo 、MindSpore 、 PaddlePaddle,Ray等。还提供了包括异构设备调度,网络拓扑感知调度,多集群调度,在离线混部调度......

Volcano GPU虚拟化

本文主要描述如何通过volcano实现GPU资源的虚拟化。基于volcano官方文档整理。 1. 背景 随着大模型和AI的发展,GPU算力的需求越来越高,但是GPU成本高昂,对于小型工作负载,单个GPU可能造成资源浪费;而对于大型工作负载,单个GPU的算力又可能未被充分挖掘。因此需要通过GPU虚拟化的技术来提高GPU的利用率。 2. Volcano虚拟化方式 Volcano主要支持硬件和......
GPU

k8s管理GPU容器

本文主要描述如何在k8s中管理GPU的节点和容器。 Kubernetes(K8s)对 GPU 的支持,适合用于机器学习、深度学习、图像处理等高性能计算场景。 1. 实现思路 K8s 本身不直接管理 GPU,而是通过 NVIDIA 的 GPU 设备插件(NVIDIA Device Plugin) 将 GPU 资源暴露给容器。整个流程如下: 1物理 GPU → 安装驱动 + 宿主机工具 → 容器......
GPU

workqueue源码分析

本文主要分析client-go中使用的workqueue,从而来分析k8s是如何基于任务队列做并发控制的。其中代码参考: https://github.com/kubernetes/client-go/tree/release-1.30 1. 概述 k8s的控制器大多是基于任务队列的方式进行并发控制,甚至包括基于controller-manager开发的自定义operator控制器。以下......

runc源码分析

runc代码目录结构 123456789101112131415161718├── create.go # createCommand├── delete.go # deleteCommand├── events.go # eventsCommand├── exec.go # execCommand├── features.go # featuresCommand├── kil......

大模型相关概念

本文主要介绍大模型领域常用的名词概念等。 MCP MCP的概念 MCP的全称是Model Context Protocol,即模型上下文协议。根据官网的解释,MCP 是一个开放协议,它规范了应用程序向 LLM 提供上下文的方式。MCP 就像 AI 应用程序的 USB-C端口一样。正如 USB-C 提供了一种标准化的方式将您的设备连接到各种外围设备和配件一样,MCP 也提供了一种标准化的方......

kine的使用

创建kine的数据表 如果kine连接MySQL使用的用户有创建表的权限,则会自动创建表名为kine的数据表,如果MySQL用户没有创建表的权限,则需要手动创建数据表,建表语句如下: 1234567891011121314151617CREATE TABLE `kine` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name`......