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

Hypernetes简介——真正多租户的Kubernetes Distro的更多相关文章

  1. Hypernetes简介

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

  2. 你的 Docker 应用是安全的吗?

    近一年来,Docker 已经逐渐成为 container 界的事实标准,成为技术人员不可或缺的技能之一,就像 Docker 宣称的那样,「Build,Ship,and Run Any App,Anyw ...

  3. Kubernetes 多租户:多租户介绍

    多租户集群由多个用户和/或工作负载共享,这些用户和/或工作负载被称为"租户".多租户集群的运营方必须将租户彼此隔离,以最大限度地减少被盗用的租户或恶意租户可能对集群和其他租户造成的 ...

  4. 支撑大规模公有云的Kubernetes改进与优化 (3)

    这一篇我们来讲网易为支撑大规模公有云对于Kubernetes的定制化. 一.总体架构 网易的Kubernetes集群是基于网易云IaaS平台OpenStack上面进行部署的,在外面封装了一个容器平台的 ...

  5. How To Build Kubernetes Platform (构建Kubernetes平台方案参考)

    Architecture Architecture Diagram Non-Prod Environment Prod Environment Cluster Networking Container ...

  6. 企业级rancher搭建Kubernetes(采用rancher管理平台搭建k8s)

    一.简介 Rancher简介 来源官方:https://www.cnrancher.com/ Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源软件去从 ...

  7. 附024.Kubernetes全系列大总结

    Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...

  8. Flink Native Kubernetes实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Kubernetes隔离pod的网络

    本章介绍如何通过限制pod可以与其他哪些pod通信,来确保pod之间的网络安全. 是否可以进行这些配置取决于集群中使用的容器网络插件.如果网络插件支持,可以通过NetworkPolicy资源配置网络隔 ...

随机推荐

  1. 手动爬虫之京东笔记本栏(ptyhon3)

    import urllib.request as ur import urllib.error as ue import re # 目标网址 url = 'https://list.jd.com/li ...

  2. Scala学习之For、Function、Lazy(4)

    1.for的使用 for的使用在各种编程语言中是最常见的,这里只是聊聊for在Scala中的表现形式,由于Scala语言是完全面向对象的,所以直接导致for的不同呈现,下面举几个例子说明一下 obje ...

  3. ETCD数据空间压缩清理

    场景:做etcd数据镜像的时候出现如下错误  Error: etcdserver: mvcc: database space exceeded 通过查找官方文档https://coreos.com/e ...

  4. c++用vector创建二维数组

    1 vector二维数组的创建和初始化 std::vector <int> vec(10,90); //将10个一维动态数组初始为90std::vector<std::vector& ...

  5. <2014 04 29> c/c++常用库总结

    C 标准库 ============================================================================================== ...

  6. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  7. Spring 的IOC容器之XML方式

    1. Spring 入门 1.1 概述 Spring 是一个分层的 JavaEE 轻量级开源框架; Spring 的核心是控制反转(IOC)和面向切面(AOP); 1.2 特点 方便解耦,简化开发; ...

  8. Mindjet MindManager 出现Runtime Error解决方案

    Mindjet MindManager文件打开报错怎么解决?文件打开后提示Runtime Error!Program:C:\Program Files\MindManager 9\Mindmanage ...

  9. 从一个git仓库迁移到另外一个git仓库

    1 从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare git://github.com/username/project.git git操作的结果会有一个XX ...

  10. Activity # runOnUiThread 与 View # post

    There is no real difference, except that the View.post is helpful when you don't have a direct acces ...