一文读懂 Kubernetes 资源对象序列化实现

Kubernetes 超算平台构建资源合集

kubernetes 资源的序列化

序列化和反序列化在很多项目中都有应用,Kubernetes也不例外。Kubernetes中定义了大量的API对象,为此还单独设计了一个包(https://github.com/kubernetes/api),方便多个模块引用。API对象在不同的模块之间传输(尤其是跨进程)可能会用到序列化与反序列化,不同的场景对于序列化个格式又不同,比如grpc协议用protobuf,用户交互用yaml(因为yaml可读性强),etcd存储用json。Kubernetes反序列化API对象不同于我们常用的json.Unmarshal()函数(需要传入对象指针),Kubernetes需要解析对象的类型(Group/Version/Kind),根据API对象的类型构造API对象,然后再反序列化。因此,Kubernetes定义了Serializer接口,专门用于API对象的序列化和反序列化。本文引用源码为kubernetes的release-1.21分支。

Serializer
因为Kubernetes需要支持json、yaml、protobuf三种数据格式的序列化和反序列化,有必要抽象序列化和反序列化的统一接口,源码链接:https://github.com/kubernetes/apimachinery/blob/release-1.21/pkg/runtime/interfaces.go#L86

kubernetes 异构设备插件管理

从kubernetes1.8版本开始,提供了设备插件框架,设备厂商无需修改kubernetes核心代码就可以将自己生产的设备的资源(kubernetes可管理的资源包括CPU、内存和存储资源)可以让kubelet使用(这一点与操作系统一样,所有设备厂商自己实现驱动)。设备厂商可以自己人工或者以DaemonSet方式部署,而不是定制kubernetes代码。目标设备包括GPU、高性能NIC(网络接口卡)、FPGA、InfiniBand以及其他类似的需要厂商指定初始化和安装的计算资源。
参考连接:https://github.com/ldd91/deepops/blob/master/device-plugin.md

kubeflow 组件部署

ubeFlow 是一个开源的项目,旨在为 Kubernetes 提供可组合、便携式、可扩展的机器学习技术栈。它最初是为了解决在 Kubernetes 上运行分布式机器学习任务所带来的挑战而创建的。Kubernetes 本身是一个容器平台,但在近年来,越来越多的公司开始用它来运行各种工作负载,特别是机器学习任务。由于分布式机器学习任务通常需要不同的参数服务器(PS)和工作节点(worker),并且不同领域的学习任务对 PS 和 worker 有不同的需求,因此 Kubernetes 在处理机器学习任务时存在一些困难。
KubeFlow 的核心组件是 TFJob,它是一个 Kubernetes 资源类型,用于定义 TensorFlow 作业。使用 TFJob,机器学习工程师可以按照他们对业务的理解,确定 PS 与 worker 的个数以及数据与日志的输入输出,而不需要编写繁杂的配置。KubeFlow 还提供了许多其他功能,如作业调度、多租户、网络隔离等,以简化机器学习任务在 Kubernetes 上的部署和管理。KubeFlow 的目标是让机器学习任务在 Kubernetes 上变得简单、可靠、可扩展和高效。

注意事项
默认情况下Kubernetes环境需要提供StorageClass:local-storage
国内环境拉取镜像失败可以增加前缀 (推荐方式) gcr.io/ml-pipeline/metadata-envoy:2.0.0-alpha.7 => m.daocloud.io/gcr.io/ml-pipeline/metadata-envoy:2.0.0-alpha.7,手动拉取之后重新打TAG
从 Kubeflow 1.3 开始,所有组件都只能使用 kustomize 进行部署。
kustomize 5.0.0
官方文档:https://github.com/kubeflow/manifests/tree/v1.7.0
方法一:一键部署命令
测试环境信息:
CentOS Linux release 7.8.2003 (Core)
Kubernetes v1.26.0 (官方文档提示支持1.24/1.25)
Kubernetes网络组件: calico

https://github.com/kubeflow/manifests/tree/v1.7.0
下载并解压
tar -zxvf manifests-1.7.0.tar.gz
cd manifests-1.7.0
while ! kustomize build example | awk ‘!/well-defined/’ | kubectl apply -f -; do echo “Retrying to apply resources”; sleep 10; done

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值