Hypernetes简介
好久没有更新博客了,今天给大家介绍下最近在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等方面离真正的多租户还都比较远。
认证方面,虽然支持client certificates,tokens,http basic auth等,但没有用户管理的功能。如果想要新建用户,需要手动修改配置文件并重启服务。最新版本增加了Keystone的认证,可以借助Keystone来管理用户。
授权方面,目前只有AlwaysDeny ,AlwaysAllow以及ABAC模式。ABAC模式根据一个策略文件来配置不同用户的权限,比如限定用户只能访问特定的namespace等,但对于新创建的namespace等资源需要重复修改策略文件。
Kubernetes要求cluster内部所有的容器之间是全通的,而多租户情况下需要不同租户之前网络是隔离的。
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
请教一下,网络呢?kuber自带那套vip全没用?
Kubernetes自带的功能我们都完整保留了: 1⃣️ kube-proxy做的这部分功能,Hypernetes通过在每个Pod里面的Haproxy实现 2⃣️service对外暴露的公网负载均衡,Hypernetes通过Neutron的Lbaas实现
Hyper是什么
Hyper是一个基于Hypervisor的容器执行引擎。Hyper跟Docker相比,基于Hypervisor提供了更好的隔离性,同时还保持了Docker创建容器速度快、镜像管理方面等优点。官方网站为https://hyper.sh。
Hypernetes简介的更多相关文章
- Hypernetes简介——真正多租户的Kubernetes Distro
http://www.dockone.io/article/838 Hypernetes是一个真正多租户的Kubernetes Distro. Hypernetes在Kubernetes基础上增加了多 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- HTTPS简介
一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
随机推荐
- jquery.hover()函数使用
<script> $(document).ready(function (t) { $(".wadver li").hover(function(event) { $( ...
- 虚机centos和本机Windows之间文件的拷贝无法用xftp时用FileZilla也行
步骤如下: 1.如果Centos没有安装ssh,则需要先安装: 2.查看虚拟机中IP地址,命令如下: ifconfig 3.在windows中安装ftp软件 FileZilla启动软件如图: 6 这 ...
- A与B相交后的图形查询
按照A与B图形得到相交后的图斑 <!-- <%@ Page Language="C#" AutoEventWireup="true" CodeBeh ...
- Spring的Bean的基本概念
Spring其实就是一个大型的工厂,而Spring容器中的Bean就是该工厂的产品.Spring容器能够生产哪些产品,取决于配置文件的配置. 对于我们而言,使用Spring框架做两件事:开发Bean. ...
- Singleton Design Pattern
The Singleton pattern is one of the simplest design patterns, which restricts the instantiation of a ...
- 简述reflow和repaint
今天在看面试题的时候遇到reflow和repaint的问题,以前并没有接触过,所以拿来学习一下~ reflow 和 repaint 会拖慢浏览器的速度,而且用户和Web页面都不能在 reflow 和 ...
- (利用tempdata判断action是直接被访问还是重定向访问)防止微信活动中用户绕过关注公众号的环节
说明:这个不是在进行微信公众号开发,也就是说在不能获取用户openid的前提下做的下面操作 1.动机:最近有个微信活动(关注了服务号的可以免费领取礼品),要做这么一个功能,活动的入口在微信服务号的菜单 ...
- c语言结构体&常指针和常量指针的区别
结构体: 关系密切但数据类型不尽相同, 常指针和常量指针的区别: char * const cp : 定义一个指向字符的指针常数,即const指针,常指针. const char* p : 定义一个指 ...
- track by
ng-repeat指令中使用track by子语句解决重复数据遍历的错误 <li ng-repat="x in [2, 2]" ng-bind="x"&g ...
- ios 多种传值方式
在网上看了看传值方法,没有找到完整的.在这把自己看到的几种传值方法写写吧. 1 . 属性传值 2 . 通知传值 3 . 代理传值 4 . block传值 5 . 单列传值 6 . ShareAppli ...