示例图片二

设备集群上的Kubernetes | 系列文章(6)

2020-06-30 12:50:15 安乡梁喑投资有限公司 已读

原标题:设备集群上的Kubernetes | 系列文章(6)

鄂温克族自治旗助尊房地产中介代理有限公司

题图摄于旧金山Ghirardelli广场

(转发 VMware 中国研发中央系列文章,本文作者系 VMware 边缘计算实验室主任)

Kubernetes是首源于Google、在比来三五年里大炎的容器编排工具。制服了其他竞争对手之后,Kubernetes现在千真万确地在云计算环境中占有垄断地位。在收购了Heptio、Bitnami等颇有影响的初创公司之后,VMware成为Kubernetes全球社区中举足轻重的贡献者。2020年3月,VMware发布了Cloud Foundation 4,内置革命性的Tanzu平台,周详声援Kubernetes在云中更高效透明的运维管理。

与此同时,相等众的用户和厂商在一连尝试将Kubernetes行使于边缘计算环境中。然而,边缘计算毕竟分别于云计算,许众云中数见不鲜的基本倘若,在边缘上是不走立、或者成本过高以至于不实际的。

本篇将浅析其中的委屈,并比较分别技术方案的优弱点。这边凝神于设备层的探讨,而不是云边缘(Cloud Edge)或移动边缘计算(MEC)。对于Kubernetes来讲,后两者的技术环境与云中相比差别不大,基本能够无缝迁移。

第六篇 设备集群上的Kubernetes

原生Kubernetes的基本倘若

Kubernetes原本设计是在云计算环境中运走,于是它的基本倘若就是云计算资源、基础设施即服务(IaaS)的特性,包括:

计算是足够的、可分布式安放的

网络是安详的、可双向联通的

存储是易失的、本地的,或持久化的、网络化的

管理是长途的、自动化的、自服务的

坦然是确保的、可控的、可编程的

计算是足够的、可分布式安放的

网络是安详的、可双向联通的

存储是易失的、本地的,或持久化的、网络化的

管理是长途的、自动化的、自服务的

坦然是确保的、可控的、可编程的

Kubernetes由此而来的架构设计思路足够行使了以上特性,例如:

主节点众实例、从节点众层次抽象、分布式安放

主从节点间双向联通、高频同步

元数据存储持久化、网络化,有状态行使可持久化

长途、跨云的管理手段

坦然策略自动化

主节点众实例、从节点众层次抽象、分布式安放

主从节点间双向联通、高频同步

元数据存储持久化、网络化,有状态行使可持久化

长途、跨云的管理手段

坦然策略自动化

设备层的局限

然而Kubernetes的设计思路并不十足适用于设备层,由于这边清淡的资源特点是:

将Kebernetes行使于设备层的分别技术方案迥异的焦点,就是如何解决以上这些题目。

超融相符持久化存储

上篇介绍的超融相符设备集群方案 ,能够较益地解决本地存储易失的题目。业界也有一些基于裸金属(Bare Metal)的开源持久化存储方案可供选择,这边不再赘述。

在虚拟化设备集群上安放Kubernetes行使的步骤如下:

装配开源柔件govmomi和govc,遵命vSphere存储Kubernetes指南配置虚机,稀奇是为一切虚机竖立disk.EnableUUID为true,以确保VMDK的ID是恒定唯一的

以kubernetes.io/vsphere-volume做持久化卷(PersistentVolume)的挑供者,将StorageClass声明在vsanDatastore之上

装配开源柔件govmomi和govc,遵命vSphere存储Kubernetes指南配置虚机,稀奇是为一切虚机竖立disk.EnableUUID为true,以确保VMDK的ID是恒定唯一的

以kubernetes.io/vsphere-volume做持久化卷(PersistentVolume)的挑供者,将StorageClass声明在vsanDatastore之上

如许就能够实现三层组织的高可用性:

如设备失效,设备集群代理/管理器可在另外一台设备上重修该虚机节点;

如虚机节点失效,设备集群代理/管理器可发现并重启该节点;

如设备失效,设备集群代理/管理器可在另外一台设备上重修该虚机节点;

如虚机节点失效,设备集群代理/管理器可发现并重启该节点;

在以上任何情况下,保存在持久化存储路径下的数据不丢失。

坦然性题目留在后篇团体介绍。

下面的商议主要针对计算、网络、管理、维护这几方面睁开。

早期追求

Target

Target是美国一家著名的大型连锁超市。在2017岁首,Target就最先用Kubernetes和Spinnaker自建Unimatrix平台,进走长途集群管理。Target采用舰队管理(Fleet Management)的模式,将含主从节点设备的整个集群安放到1850个门店中,每个集群由十足主从复用的三个节点设备构成,每个门店内的集群都是互相自力的。并在Unimatrix上声援Kubernetes API,以对接云端Kubernetes社区内雄厚的行使生态。Unimatrix方案将Agent安放到门店,以对接Kubernetes集群和云的通信。

Chick-Fill-A

Chick-Fill-A是美国一家特意著名的餐饮连锁商。在2018年将2000间门店从Docker迁移到Kubernetes平台上。每个门店以一组Intel NUC设备构成三节点集群,行使Kubernetes和大量开源柔件集成进走舰队管理(Fleet Management)。

Chick-Fill-A的方案团体上与Target是相通的,都是全集群安放到边缘设备上,并以其他手段进走舰队管理,与Kubernetes相补充,形成众层管理组织。

现有方案上面的两例都是Kubernetes的用户为解决自身遇到的题目所自建的方案,下面介绍的是几个业内正在推广的技术方案。

KubeEdge

https://kubeedge.io/

KubeEdge于2019年成为云原生计算基金会(CNCF)旗下的沙箱项现在,是特意为物联网和边缘计算场景的设备层设计的。在它的架构中CloudCore是和Kubernetes主节点一路放在云上,EdgeCore片面运走于设备上,工程案例之间的网络可只单向可见。

CloudCore内部的EdgeController与Kubernetes API服务器的交互,主要是经过在https://github.com/kubeedge/kubeedge/blob/master/cloud/pkg/edgecontroller/controller/下的downstream.go和upstream.go这两个程序里调用kubernetes.Clientset的API来完善的。比如:

// DownstreamController watch kubernetes api server and send change to edge

type DownstreamController struct {

kubeClient *kubernetes.Clientset

……

}

// UpstreamController subscribe messages from edge and sync to k8s api server

type UpstreamController struct {

kubeClient *kubernetes.Clientset

// message channel

……

}

而EdgeCore片面,除了行使现有的容器运走时(CRI)工具之外,其他与CloudCore交互的程序都是自建的,实现相通于Kubelet的功能。EdgeHub与CloudHub之间的接口不兼容于Kubelet,而是基于websocket或QUIC制定实现的。

https://github.com/kubeedge/kubeedge/blob/master/docs/proposals/quic-design.md

最稀奇的是在边缘上还有MQTT Broker与EdgeCore通信,将物联网制定映射进来,再经过EventBus转发到DeviceTwin里往。至今只望到ModBus和蓝牙这两栽制定实现映射,而这栽将边缘容器平台和边缘行使逻辑同化在一首设计的架构是特意稀奇的。

由于要以自建代码声援全套的Kubelet机制,并保持与Kubernetes API服务器兼容,KubeEdge必要跟Kubernetes的逐个发布追赶实现。2020年2月发布的KubeEdge 1.2与2019年12月发布的Kubernetes 1.17兼容。

K3S

https://k3s.io/

K3S是Rancher发布的开源项现在,它的主要设计思路是将Kubernetes集群幼型化、轻量化之后团体放在边缘侧,经过其他管理通道与云侧协同。这很相通于上节介绍的Target或Chick-Fil-A的传统思路。

K3S行使Kubernetes的基础代码、再由自建代码封装,将一切的程序都打包进联相符个二进制文件,装配特意方便。但它的命令走必须由K3S触发,比如sudo k3s kubectl get node。K3S中来自第三方的代码主要荟萃在k3s/pkg/generated现在录下。K3S能够不详地被望作Kubernetes一个非官方的、轻量级的、API兼容的项现在。2020年5月K3S最新发布版声援Kubernetes 1.17.5。

幼型化的K3S内嵌轻量级数据库SQLite,也声援外挂数据库。K3S对于非OS的外部柔件倚赖也减到很矮。倘若辅以负载平衡节点 的话,K3S就能够实现高可用性的安放模式。

Virtual Kubelet

Virtual Kubelet是CNCF基金会的沙箱项现在,它是kubelet的API兼容实现,以批准由其他在云或边缘上的服务实现的节点能够像kubelet相通与Kubernetes主节点通信。固然Virtual Kubelet最初的现在标是声援无服务(serverless)等容器平台,但也声援其他类型的服务。Virtual Kubelet挑供可插入的Provider接口,开发人员可实现Kubelet所必要的如下功能:

后端必要的管道性声援,管理pod、容器和Kubernetes语境下的声援性资源的生命周期

后端必要的管道性声援,管理pod、容器和Kubernetes语境下的声援性资源的生命周期

例如Azure IoT Edge Connector就是一个基于Virtual Kubelet Provider接口的实现。经过封装的IoT Edge Provider与Virtual Kubelet交互,能够标准Kubernetes API的手段将边缘行使安放到设备上。自然该安放是以分别于云行使的异步手段实现。

与此相通的,技术上能够实现声援其他边缘行使安放的Provider,而主从节点其实都在云侧,经过既有边缘计算平台的通道进走管理。

MicroK8s

MicroK8s是由Ubuntu推出的开源柔件,它封装成snap式样的Kubernetes各行使的一个荟萃体。它的特点是:

MicroK8s里的自建代码很少,主要实现snap打包的功能,它是特意简化的Kubernetes发走版。Snap包的格式主要用于Ubuntu类编制,在其他各Linux发走版上 也有声援。

MicroK8s的命令走必须由microk8s触发,比如sudo mirok8s kubectl get node 。它的主从节点必要都安放在边缘侧,然后从云侧以其他通道进走长途管理。

选项比较

以上介绍了几栽现在比较主流的将Kubernetes安放到边缘上的开源项现在和技术方案。每栽方案各有优弱点,列外对比如下:

Kubernetes KubeEdge K3S Virtual Kubelet MicroK8S 主节点位置 云 云 边缘 云 边缘 从节点位置 边缘 边缘 边缘 云* 边缘 管理层级 单层 单层 众层 众层 众层 主从网络 双向 单向 双向 双向 双向 边缘资源消耗 大 中 幼 幼 幼 代码更新 上游 自建 自建 上游 自建 上游 认证发走版 原生 仅为扩展 是 仅为扩展 是

从清淡开发人员和用户的角度起程,最理想的将Kubernetes安放在边缘侧的方案,答当具有如下特点:

资源消耗少

十足兼容

- 代码与Kubernetes上游同步

- 认证发走版

管理浅易

- 主节点在云侧

- 从节点在边缘

资源消耗少

十足兼容

- 代码与Kubernetes上游同步

- 认证发走版

管理浅易

- 主节点在云侧

- 从节点在边缘

然而从上外中能够望出,任何现有方案都无法已足一切的理想化需求。如许的需求,能够只有Kubernetes项现在重构之后才有能够已足。

异国银弹

在现有条件下,倘若不及已足一切理想化需求,是否能够退一步望,哪些是能够屏舍或迁就的需求。比如:

总之,在现有条件下,用户必要根据本身的实际状况和需求选择正当本身的Kubernetes安下班具,倘若Kubernetes是必要的话。异国放之四海而皆准的方案,也就是“异国银弹”。

- 未完待续 -

  周日020 英超 哈德斯菲尔德 VS 纽卡斯尔联  比赛时间:2017-08-20 20:30  亚盘:1.09 平/半 0.81  平均标赔:2.36 3.3 2.84

大家好,我是X博士。

  原标题:机场巴士司机出院,自称可能是揪口罩使自己感染

虽然美国对华为的5G技术在海外输出各种阻拦,不过最终欧盟还是允许其进入。

中油网讯:据中石油透露,2018年中国石油海外油气权益产量首次突破9800万吨,对外合作油气产量突破1000万吨,这标志着中国石油在国际市场上的影响力得到提升。人民币石油将崛起,终结美元石油一家独大的格局?