virtaul-kubelet调研

介绍

Virtual Kubelet是Kubernetes kubelet的二次实现。它会伪装成一个kubelet以便使用者可以连接到其他API,这些API的入口被成为Provider。VK的主要方案是将Kubernetes API扩展到无服务器容器平台。Virtual Kubelet是插件式的,即插即用,非常灵活方便,并且使用的是kubernetes原语。

Virtual Kubelet 不是用来实现集群联邦的手段。它是用来扩展node属性到一个容器平台上。

当前支持功能如下:

  • 创建,删除和更新Pod
  • 容器 logs, exec, and metrics
  • 获取单个Pod或多个Pod状态
  • 节点地址,节点容量,节点守护程序
  • 自定义虚拟网络

virtual-kubelet架构图

image.png

目前的社区的virtual kubelet 不具备任何生产能力,但是提供了一个library,可以给各家公有云厂商,用来构建自己的virtual kubelet 版本。virtual kubelet 的代码总体比较简单,没太必要详解了。

virtual kubelet 在启动的时候,会马上创建一个Node 出来
node 背后的provider 提供接口查询相关node 信息
它会同时watch node 和 pod 的事件,也就是要有两个控制器,用于更新node 的信息
针对分配到该节点上的pod,增加消息处理
消息处理的过程,是把消息放在另一个队列里
provider的worker 去处理,这里会作深度拷贝
处理完以后,更新pod 的status

优点

  • 对原生Kubernetes集群无侵入
  • 提供Kubelet典型特性接口,Provider仅需实现对应服务管理平台资源到Node和Pod对象特性的实现
  • 扩展 Kubernetes 集群:Virtual Kubelet 允许将外部平台作为 Kubernetes 集群的计算资源,从而扩展 Kubernetes 的应用场景和规模。
  • 跨云平台和边缘计算:Virtual Kubelet 可以将云平台和边缘设备作为 Kubernetes Node 节点,实现跨云平台和边缘计算的 Pod 调度和管理。
  • 节省成本:使用 Virtual Kubelet 可以将临时性工作负载等低优先级应用调度到外部资源上,节省 Kubernetes 集群的成本和资源占用。

缺点

将非集群内资源抽象成Node和Pod对象对资源使用上有一定局限性,很难提供超出原有kubelet和IaaS平台能力范畴,IaaS深度整合需要自行实现CRD

仅能作为转换器,用于容器和虚拟机统一管理时还是需要依托已有的平台能力,无法像Kubevirt等方案作为一个单独的Iaas管理平台使用

安全性问题:Virtual Kubelet 可能会将 Pods 调度到不同的云提供商或边缘设备上,需要采取相应的安全措

解决了什么问题?

  • 弹性能力、免容量规划、按需使用按需计费。集群资源不足调度时,VK将Pod调度到第三方集群中(如阿里ECI、华为CCI)

  • 碎片资源整合(将多个集群碎片资源整合成一个大的资源池,需要比较重的Scheduler开发)- tensile-kube

    • 一个作业需要N个资源,但是现有集群A、B、C等所剩资源都不满足N,而集群A、B、C资源总和又能满足N。
  • 便捷化运维集群(类似KOK,多集群调度方案) - tensile-kube

    • 当我们进行单个集群升级、变更时,往往需要通知业务迁移、集群屏蔽调度等,在此设计下,我们只需要将virtual-node设置为不可能调度。这样后期单个集群升级、替换,可以只在运维层操作,用户不用从旧集群迁移至新集群、无感知。
image.png

Virutal-Kubelet适用场景

image.png

Virtual-Kuberlet适合在已有IaaS层管理平台和Kubernetes集群环境下进行二者的打通,实现在Kubernetes集群上统一管理容器和非容器平台,同时由于Virtual-Kubelet在Serverless和纳管其他已有容器平台(Openstack Zun,Docker Swarm)方面也具有很高适配性,Virtual-Kubelet可以提供一套统一的API,方便开发者打通全流程。

已提供的实现者(provider)

支持类型 云容器实例
Alibaba Cloud ECI Provider ECI
Azure Container Instances Provider
AWS Fargate Provider Amazon ECS
OpenStack Zun Provider
Tensile Kube Provider
HUAWEI 无状态负载(Deployment)、有状态负载(StatefulSet)、普通任务(Job) CCI

新的提供者需实现

image.png

案例

当前有两个集群,左侧集群是含有VK节点的集群,右侧集群则是我们期望Pod实际使用资源的集群,也就是在左侧集群创建一个指定pod.spec.nodeName=virtual-kubelet节点的Pod,实际上运行在右侧集群上。

image.png

问题

  • 以VK启动在其他平台的Pod,网络互通形式?
  • 考虑资源同步问题 configMap/pvc/pv/字典、镜像
  • 日志收集
    • sidecar(filebeat + logstash + elasticsearch)
  • 资源回传

限制

Severless容器服务,用户不感知Node,所以不支持hostpath挂载以及DaemonSet部署

?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 容器技术概念入门篇 从进程说开去 容器本身没有价值,有价值的是“容器编排”。 容器其实是一种沙盒技术。顾名思义,沙...
    白板时钟阅读 2,514评论 0 2
  • kubelet 参数 kubelet是在每个节点上运行的。 kubelet 使用描述 pod 的 YAML 或 J...
    耳机在哪里阅读 4,535评论 0 0
  • 文章是基于“Kubernetes权威指南”和博客[https://kuboard.cn/learning/]的学习...
    彦帧阅读 1,050评论 0 1
  • 云原生基本概念:[https://www.bilibili.com/read/cv18627327] ??在容器化...
    今天你写BUG了吗阅读 577评论 0 0
  • 1、请详述kube-proxy原理? 答:集群中每个Node上都会运行一个kube-proxy服务进...
    ZWei_f65a阅读 50评论 0 0