Kubernetes集群在企业内部多租户共享场景下的管理.docx
《Kubernetes集群在企业内部多租户共享场景下的管理.docx》由会员分享,可在线阅读,更多相关《Kubernetes集群在企业内部多租户共享场景下的管理.docx(10页珍藏版)》请在课桌文档上搜索。
1、随着容器编排技术的成熟,KUbemeteS也逐渐成为云计算的标准,但其使用的场景也各不相同。在KUberneteS集群环境下实现多租户场景下,仍然面临着诸如:权限管理,资源隔离,平台内部网络安全,资源调度等问题。本文主要介绍在公司内部多租户场景下,Kubernetes集群的管理。RBAC权限管理企业内部容器平台:业务可控,组织架构复杂,更加注重权限的细粒度管理。Kubemetes提供namespace作为基础的资源隔离单位和基于RBAC的权限管理方式,可以说Kubernetes多租户的实现离不开这两个核心内容。RBAC作为一种基于角色的并且灵活的访问控制机制且相较于其他的权限管理插件更加广泛,
2、在Kubernetes集群中默认强制开启。RBAC中的核心概念:基于单个名称空间:Role,RoleBinding整个集群级别:ClusterRole,ClusterRoleBinding尊于角色的访问控制as权限,/jJ读get诵I写Write11定义角色赋予权限角色绑定角色,CIusterRoIe更新UPdate列出IiSt监视WatCh绑定角色I-I用户账户服务账户1. Role2. CIusterRoIe3. RoIeBinding4. CIusterRoIeBinding接下来说下RBAC的授权过程:创建Role(角色)。Role可理解对资源对象拥有的权限,就是给定对资源可以对做什么
3、。例如:公司信息部经理,可以管理公司的信息部。创建绑定角色的用户。例如:李四绑定角色。例如:李四能力强,让他担任信息部部门经理。用下面两个集群来说明Role,RoleBinding和ClusterRole,ClusterRoleBinding。NamespacelNamespace4roleBinding*IolelK一一Iadminro2JlXolelroleBindingadminrole2Namcspacc2roleBindingNamespc3roleBinding*yadminrole2roleladminrole2espacel,roleBindingrBurstable和Best
4、Effort三个服务质量。对于QoS类为Guaranteed的Pod:Pod中的每个容器必须指定内存请求和内存限制,并且两者要相等。Pod中的每个容器必须指定CPU请求和CPU限制,并且两者要相等。这类Pod资源具有最高优先级。如果满足下面条件,将会指定Pod的QoS类为Burstable:当Pod设置的CPU或者内存限制资源与请求资源不相等时,此类Pod具有中等优先级。对于QoS类为BestEffort的Pod:Pod中的容器必须没有设置内存和CPU限制或请求。此类Pod优先级别为最低级别。requests和IimitS没看设置requests小于IimitSrequests等于Iirnit
5、S内存资源紧缺时,BeStEffort类别的POd将首当其冲地被终止,因为系统不为其提供任何级别的资源保证,换来的好处是在用时做到尽可能的占用资源。当BestEffort类别的Pod不存在时,Burstable类别的Pod将会被终止。Guaranteed类别的Pod拥有最高优先级,它们不会被杀死,除非其内存资源需求超限,或者OOM时没有其他更低优先级的Pod资源存在。每个运行状态容器都有其OoM得分,得分越高越会被优先杀死。OOM得分主要根据两个维度来计算:由QoS类别继承而来的默认分值和容器可用内存资源比例。同等级优先级的Pod资源在OOM时,与自身的requests属性相比,其内存占用比例
6、最大的POd对象将首先被杀死。OoM是内存耗尽时的处理机制,与可压缩资源CPU无关,CPU资源无法获得保证时,Pod仅仅时暂时获取不到相应资源而已。因此,在针对POd的QoS等级,调整部署时Pod相应的服务等级,可在计算资源紧缺时保证服务的可用性。集群内部网络访问策略&流量控制Kubernetes基于namespace实现环境隔离,但是namespace不能对不同的namespace之间的网络层访问做出有效的网络隔离,因此需要做出有效的网络访问策略来阻断集群内不同的namespace中的服务,未发生或已发生的未经允许的访问。默认情况下Pod对象可以接受来自任何源的流量,也向外部发出期望的所有流
7、量,KUberneteS集群部署CanaI网络插件,网络策略也位于特定的命名空间中,NetworkPolicy对象资源使用标签选择Pod,并定义选定Pod所允许的通信规则。在附加网络策略机制后,Pod对象会因NetPolicy对象的选定而被隔离。NetworkPolicy提供了基于策略的网络控制,用于隔离应用并减少攻击面。使用标签选择器模,并通过策略控制他们之间的流量以及来自外部的流量。设置IngreSS策略,可以允许或拒绝哪些流量访问哪些Podo设置Egress策略,可以拒绝Pod的流量对外进行访问。配置实例:功能:通过使用标签选择器(包括namespaceSelector和podSelec
8、tor)来控制Pod之间的流量要决定三件事:控制对象:通过SPeC字段,podSelector等条件筛选流方向:Ingress(入Pod流量)+from,Egress(出POd流量)+to流特征:对端(通过name/PodSeIeCtOr),IP段CipBlock),协议(protocol),端口(port)Q&AQ:如何实现各租户之间数据隔离和共享?如何实现各租户的需求个性化定制?A:不同项目程序运行在不同namespace中+NetpoIicy实现数据的隔离,反之则可实现数据共享的需求。Q:我们需要在同一个KubemetesCluster上部署dev和qa两套环境。是用namespace隔
9、离好,还是label隔离好?A:用namespace隔离好,namespace是KUbemeteS提出的作为基础隔离资源的的单位,而Iabel标签,是用来做资源标记的,需要进行资源选择时使用。Q:请问RBAC中的ServiceAccount和User区别是什么?它们有什么区别和应用场景呢?谢谢。A:ServiceAccount是集群内部服务账号,用于集群内表明要执行的具体操作,如创建,删除,修改,查看等;User是常规用户,用来管理使用。Q:RABC可以实现权限管理某种角色只能管理某些POd吗?比如这个产品线只管自己产品线的Pod?是在同一个ns的。A:RABC权限管理支持ROIe和CIUSt
10、erRoIe两类角色,其中Role作用于名称空间级别(namespace),ClusterRole作用于整个集群。RABC可以用户授权对名称空间内的Pod资源进行管理。Q:你们开发对线上Kubernetes是什么权限,怎么管理?A:开发对线上Kubernetes只有只读权限,通过Rbac进行权限控制。Q:关于网络选择,Ingress策略和EgreSS适用场景该怎么选择?A:IngreSS适用为流量入站时的网络控制策略,而Egress适用于流量出站时的网络控制策略。附解决K8s多租户集群安全隔离难题解决多租户集群的安全隔离问题对于企业上云而言至关重要。本文讨论了Kubernetes多租户集群的概
11、念和常见的应用模式、企业内共享集群的业务场景以及Kubernetes现有的安全管理功能。什么是多租户集群首先,我们讨论一下“租户”是什么。租户的概念不仅是集群用户,还包括构成计算、网络、存储和其他资源的工作负载集。在多租户集群中,对单个集群中不同租户进行隔离,这样恶意租户就无法攻击其他租户,共享集群资源也能合理地分配给租户。根据隔离的安全级别,可以将集群分为软隔离(SoftMulti-tenancy)和硬隔离(HardMUlti-tenancy)。软隔离适用于企业内的多租户集群,因为默认情况下不会有恶意租户。在这种情况下,软隔离主要是保护内部团队之间的业务并防护可能的安全攻击。硬隔离适用于那些
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kubernetes 集群 企业内部 租户 共享 场景 管理
链接地址:https://www.desk33.com/p-1426284.html