ZWEI

Time flies.


  • 首页

  • 标签48

  • 分类8

  • 归档113

  • 搜索

vGPU隔离方案

发表于 2020-11-21 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 1.4k | 阅读时长 ≈ 1 分钟

主要两个思路:

  1. 将GPU纳入cgroup管理,目前尚未有成熟的提案,短期内难以实现(阿里云估计是基于cgroup实现的);
  2. 基于GPU驱动封装实现,用户根据需要对驱动的某些关键接口(如显存分配、cuda thread创建等)进行封装劫持,在劫持过程中限制用户进程对计算资源的使用。

此类方案缺点是兼容性依赖于厂商驱动,但是整体方案较为轻量化,性能损耗极小(腾讯云的gpu-manager采用了该方案,据了解浪潮也是采用的这个方案)。
下面,基于对gpu-manager的源码和论文进行研究,讲述“劫持”方案的实现原理。

阅读全文 »

k8s集群GPU调研报告

发表于 2020-11-14 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 3.4k | 阅读时长 ≈ 3 分钟

背景

在kubernetes中运行GPU程序,通常都是将一个GPU卡分配给一个容器。这可以实现比较好的隔离性,确保使用GPU的应用不会被其他应用影响;对于深度学习模型训练的场景非常适合;

但是如果对于模型开发和模型预测的场景就会比较浪费。所以很多用户的诉求是能够让更多的预测服务共享同一个GPU卡上,进而提高集群中Nvidia GPU的利用率。

而这就需要提供GPU资源的划分,而这里GPU资源划分的维度指的就是GPU显存和Cuda Kernel线程的划分。

目前,阿里云、腾讯云、华为都开始支持针对容器的GPU虚拟化。以下分别对这三家进行介绍

阅读全文 »

vGPU虚拟化方案

发表于 2020-11-04 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 2.5k | 阅读时长 ≈ 2 分钟

前言

近几年,随着云计算、机器学习、人工智能、高性能计算、区块链等的兴起,GPU以其在浮点运算与并行运算性能方面的出色表现有了海量的市场需求。GPU早已经不再只是显示卡,而是成为了CPU 之外更大的计算模块。如今,GPU对企业的发展越来越重要。但是,相较于CPU,GPU价格昂贵。所以,如何提高GPU的使用率,对于客户来讲就非常重要。而GPU虚拟化正是能够帮助客户合理分配和使用GPU资源的关键技术。

从用户角度,GPU虚拟化分为虚拟机层面的虚拟化和容器层面的虚拟化。本方案中只针对后者展开讲述。目前,在实现方面主要有两个思路,一个是内核驱动,将GPU纳入cgroup管理,比如阿里云的cGPU方案;二是采用类rCuda方案,将GPU驱动封装劫持,从而限制用户进程对资源的使用。考虑到第二种方案的轻量性,本文的vGPU方案即采用了它。

阅读全文 »

Custom HPA水平自动伸缩

发表于 2020-10-31 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 11k | 阅读时长 ≈ 10 分钟

简介

Custom HPA 是Kubernetes中Pod水平自动伸缩的一种,不同于标准的HPA基于Pod的CPU使用率和内存使用量来控制工作负载中的副本数量,Custom HPA支持以自定义监控指标来实现对工作负载中副本数的控制

阅读全文 »

HPA Pod 水平自动伸缩

发表于 2020-10-24 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 2.5k | 阅读时长 ≈ 2 分钟

HPA 概念

HPA(Horizontal Pod Autoscaling)是kubernetes中自动水平扩展模块,基于用户设定和获取到的指标(CPU,Memory,自定义metrics),对Pod进行伸缩,不是直接操作pod,而是通过scaler client修改Replicas副本数来实现Pod实例数的增减。HPA Controller属于Controller Manager的一个controller。HPA的操作对象是RC、RS或Deployment对应的Pod根据观察到的CPU等实际使用量与用户的期望值进行比对,做出是否需要增减实例数量的决策

阅读全文 »

gpu-admission源码分析

发表于 2020-10-14 | 更新于 2021-01-04 | 分类于 Kubernetes | 评论数:
本文字数: 1.6k | 阅读时长 ≈ 1 分钟

简介

Gpu-admission提供调度扩展器,基于default-scheduler预选出来的节点,进行筛选。

因此我们首先找到入口函数,即pkg/predicate/gpu_predicate.go下的Filter函数。

pkg/predicate/gpu_predicate.go 用于预选出适合的gpu节点(只有一个,因此不需要优选)和device,并写入到pod的注解中。

阅读全文 »

OpenFaas Watchdog

发表于 2020-10-11 | 更新于 2020-12-31 | 分类于 Kubernetes | 评论数:
本文字数: 985 | 阅读时长 ≈ 1 分钟

简介

Watchdog是一个golang编写的轻量化web服务器,watchdog在制作镜像时需要作为entrypoint启动并监听请求,并将请求内容通过stdin传递给用户函数,将函数执行的结果stdout作为请求响应返回给调用者

阅读全文 »

Istio 集成cert-manager

发表于 2020-09-30 | 更新于 2020-12-31 | 分类于 Kubernetes | 评论数:
本文字数: 701 | 阅读时长 ≈ 1 分钟

cert-manager 是什么cert-manager 是一个云原生证书管理开源项目,用于在 Kubernetes 集群中提供 HTTPS 证书并自动续期,支持 Let’s Encrypt, HashiCorp Vault 这些免费证书的签发。在Kubernetes集群中,我们可以通过 Kube ...

阅读全文 »

Istio 部署与安装

发表于 2020-09-21 | 更新于 2020-12-31 | 分类于 Kubernetes | 评论数:
本文字数: 2k | 阅读时长 ≈ 2 分钟

Istio部署

目前 Istio 支持三种方式进行部署:

  1. 使用Helm自定义安装 (已弃用)
  2. 使用Operator安装 (实验阶段)
  3. 使用istioctl工具安装 (官方推荐)
阅读全文 »

Istio 架构与概念

发表于 2020-09-13 | 更新于 2020-12-31 | 分类于 Kubernetes | 评论数:
本文字数: 5.4k | 阅读时长 ≈ 5 分钟

Istio介绍

架构

1

Istio 服务网格从逻辑上分为数据平面和控制平面:

  • 数据平面:有代理(Envoy)组成,以sidecar方式部署在用户业务pod中,共享pod的网络命名空间,通过iptables redirect的方式将原本进入用户容器的流量转发Envoy 代理;Envoy代理负责控制服务间网络通信
  • 控制平面:按需制定流量规则,并下发给代理来实现对流量的控制
阅读全文 »
12…12

zwei

Believe in yourself.

113 日志
7 分类
45 标签
  • TangLei
Advertising Position
© 2021 zwei | 站点总字数: 429k | 站点阅读时长 ≈ 6:30
|