好久没有更新博客了,今天给大家介绍下最近在Hypernetes上做的工作,这个也是之前在微信群里的一个分享。

Hypernetes是一个真正多租户的Kubernetes Distro。

Hypernetes在Kubernetes基础上增加了多租户认证授权、容器SDN网络、基于Hyper的容器执行引擎以及基于Cinder的持久化存储等。

基本上Hypernetes = Bare-metal + Hyper + Kubernetes + Cinder(Ceph) + Neutron + Keystone

在介绍Hypernetes细节之前先首先提一下相关背景,也就是Kubernetes的多租户支持情况。

群里之前已经很多人介绍过Kubernetes了,就不再重复介绍。

这儿主要说一下它在多租户方面的问题。

Kubernetes在多租户方面的支持还是比较少的,没有“租户”这一概念,也只有namespace提供了一个逻辑的资源池(可以给这个namespace设定一些资源的配额),并且它在认证授权、网络、Container Runtime等方面离真正的多租户还都比较远。

  1. 认证方面,虽然支持client certificates,tokens,http basic auth等,但没有用户管理的功能。如果想要新建用户,需要手动修改配置文件并重启服务。最新版本增加了Keystone的认证,可以借助Keystone来管理用户。

  2. 授权方面,目前只有AlwaysDeny ,AlwaysAllow以及ABAC模式。ABAC模式根据一个策略文件来配置不同用户的权限,比如限定用户只能访问特定的namespace等,但对于新创建的namespace等资源需要重复修改策略文件。

  3. Kubernetes要求cluster内部所有的容器之间是全通的,而多租户情况下需要不同租户之前网络是隔离的。

  4. Docker的安全性问题,跟虚拟化还是有不少距离。

正是由于上面这些原因,很多公司都在虚拟机里面来跑Kubernetes,比如Google Container Engine、OpenStack Magnum等。

在虚拟机内部跑容器虽然提升了安全性,但也引入了一些问题,比如容器的网络不能通过IaaS层来统一管理,容器无法直接使用IaaS层的持久化存储,无法集中调度所有容器的资源等。所以我们就做了Hypernetes.

先来看一下Hypernetes的架构图

Hypernetes在Kubernetes基础上增加了一些组件

①增加了Tenant的概念,不同Tenant之间的网络和资源(ns, pod, svc, rc等)是隔离的。这些租户通过keystone管理,并提供认证和授权; ②通过Neutron给不同租户提供二层隔离的网络,并支持Neutron的各种插件(目前主要是ovs); ③通过Hyper提供基于虚拟化的容器执行引擎,保证容器的隔离; ④还有通过Cinder给容器引入各种持久化存储(目前主要是ceph)

关于OpenStack的各个组件以及Hyper这儿就不再介绍了,群里很多大牛已经介绍过。

具体到Hypernetes内部,详细的架构是这样的

为了支持多租户,Hypernetes基于Kubernetes增加了很多组件,这些组件都是以Plugin的形式提供的。

这样非常方便扩展,也很容易将Hypernetes与现有的IaaS在同一个基础架构上运行起来

比如,如果你不喜欢Neutron,可以把它替换成odl等。

Hypernetes是完全开源的,代码见https://github.com/hyperhq/hypernetes

当然,我们也会把Hypernetes做的工作contribute到Kubernetes社区,Brendan Burns大神表示很支持。

嗯,今天的分享就这么多。谢谢大家。

QA

  1. 请教一下,网络呢?kuber自带那套vip全没用?

    Kubernetes自带的功能我们都完整保留了: 1⃣️ kube-proxy做的这部分功能,Hypernetes通过在每个Pod里面的Haproxy实现 2⃣️service对外暴露的公网负载均衡,Hypernetes通过Neutron的Lbaas实现

  2. Hyper是什么

    Hyper是一个基于Hypervisor的容器执行引擎。Hyper跟Docker相比,基于Hypervisor提供了更好的隔离性,同时还保持了Docker创建容器速度快、镜像管理方面等优点。官方网站为https://hyper.sh。

Hypernetes简介的更多相关文章

  1. Hypernetes简介——真正多租户的Kubernetes Distro

    http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...

  2. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  3. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  4. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  5. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  6. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  7. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  8. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  9. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

随机推荐

  1. LeetCode 21 -- Merge Two Sorted Lists

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  2. 主要由顶点容器构成的平面图形类(Shape)——(第一次作业Draw类定义升级)

    // https://github.com/orocos/orocos_kinematics_dynamics/blob/master/orocos_kdl/src/frames.hpp // Vec ...

  3. python27(32位)安装模块报错“error: Unable to find vcvarsall.bat”

    1)首先,下载一个Microsoft Visual C++ Compiler for Python 2.7的补丁,下载地址在这里: http://www.microsoft.com/en-us/dow ...

  4. 谈谈pooling?

    使用pooling的目的之一是获取一定的特征不变性,目前用的比较多的是Max..,非线性对于Deep的重要性不用多说,pooling是主要贡献之一,当然少不了relu类的激活函数.pooling还有一 ...

  5. C#常用操作类库五(电脑操作类)

    /// <summary> /// Computer Information /// </summary> public class ComputerHelper { publ ...

  6. Android中常见功能包描述(转)

    在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进 ...

  7. 如何成为python高手

    本文是从 How to become a proficient Python programmer 这篇文章翻译而来. 这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关 ...

  8. The 11 advantages of Java -Why you choose this language

    Java is never just a language.There are lots of programming languages out there, and few of them mak ...

  9. 如何控制JVM中的JIT行为?

    首先交代一下我自己的测试环境: Ubuntu 12.04 x86-64,OpenJDK 7 64-bit Server VM(mixed mode) MacOS  10.11,HotSpot  7 6 ...

  10. lambda表达式

    什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...