http://www.dockone.io/article/838

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. 请教一下,网络呢?kubernetes自带那套vip全没用?

    Kubernetes自带的功能我们都完整保留了:

    • kube-proxy做的这部分功能,Hypernetes通过在每个Pod里面的Haproxy实现
    • service对外暴露的公网负载均衡,Hypernetes通过Neutron的Lbaas实现
  2. Hyper是什么

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

原文链接:http://www.cnblogs.com/feisky/p/4975173.html

http://www.tuicool.com/articles/2YrQri

最新文章

  1. 前端开发自学之JavaScript——显示当前时间
  2. 数据字典生成工具之旅(8):SQL查询表的约束默认值等信息
  3. hadoop fs -mkdir testdata错误 提示No such file or directory
  4. PhpStorm PHP开发神器
  5. Odoo Entypo Regular Icon List
  6. Elasticsearch的PHP的API使用(一)
  7. 几种基于HTTP协议的RPC性能比较
  8. BOM(制造数据管理)
  9. C语言 猜数游戏--产生一个随机数
  10. 利用JavaScript获取页面文档内容
  11. SQL Server 2012 数据库各个版本功能对比
  12. android4.0下如何判断手机是否有底部物理按键(menu物理按键)
  13. PHP中的函数声明与使用
  14. RSA Encrypting/Decrypting、RSA+AES Encrypting/Decrypting
  15. SAP FI配置步骤
  16. Testing - 软件测试知识梳理 - 比较质量保证(QA)与质量控制(QC)
  17. PHP实现验证码制作
  18. NSIS程序安装包制作
  19. ecplise自动提示失效,使用补全自动提示快捷键(Alt+/),但只显示“No Default Proposals”
  20. mininet invalid literal for int() with base 10: 'cpu.cfs_period_us:'

热门文章

  1. delphi --批量添加
  2. Spoken English Practice(I won't succumb to you, not ever again)
  3. IDEA 录制宏+设置快捷键 实现写时编译
  4. 二.数据库游标对象cursor与实例
  5. 【人员招聘】岗位职责和技能要求——By Me
  6. sql server安装教程(2008 R2,图形界面安装/命令提示符安装即静默安装)
  7. tensorflow 的rnn的示例 ptb_word_lm.py 的完整代码
  8. POS杂项数据SAP记账程序
  9. TCP/IP三次握手与四次挥手(转)
  10. cas无缝单点登录(原创)