企业级运维之云原生与Kubernetes实战课程 - 第四章第1讲 ACK集群权限管理

本文涉及的产品
访问控制,不限时长
简介: 1. ACK集群权限管理2. ACK集群升级3. ACK集群节点管理4. ACK集群弹性伸缩5. ACK集群故障处理与疑难处置6. 实验四:流水线部署

企业级运维之云原生与Kubernetes实战课程

第四章 ACK集群管理

 

 

视频地址

https://developer.aliyun.com/learning/course/913/detail/14564

 

本章目标

 

  • 熟悉集群的RAM权限以及集群的RBAC权限、学会如何管理集群权限以及集群组件获取RAM权限的原理;
  • 了解集群升级的原理,以及如何定位集群升级失败的原因;
  • 熟悉集群自动伸缩的原理,常见的配置以及如何定位自动伸缩失败的问题;
  • 熟悉ACK集群常见故障以及排查手段。

 

本章目录

 

1.  ACK集群权限管理

2.  ACK集群升级

3.  ACK集群节点管理

4.  ACK集群弹性伸缩

5.  ACK集群故障处理与疑难处置

6.  实验四:流水线部署

 

 

第四章第1 ACK集群权限管理

 

一、ACK集群权限简介

 

权限是用户、应用程序账号可以操作集群指定资源的一种集合。

 

ACK集群权限体系分为两类:

 

1.  RAM访问控制

 

RAMResource Access Management)资源访问控制服务,是阿里云提供的一项管理用户身份与资源访问权限的服务。

 

运维人员通过RAM用户或RAM角色管理云服务资源是一个常见的场景,然而默认情况下,RAM用户或RAM角色没有使用云服务OpenAPI的任何权限。为了保证RAM用户或RAM角色的正常使用,需要对RAM用户或RAM角色授权。

 

OpenAPI接口:

 

  • CreateCluster
  • DescribeClusterDetail
  • ScaleCluster
  • DescribeAddons
  • DescribeClusterNodes

 

2.  集群RBAC权限

 

RBACRole-Based Access Control)是基于角色的访问控制。在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限,极大简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

 

RBAC权限通过APISever接口获取:

 

  • /api
  • /api/v1/Pod s
  • /api/v1/services
  • /api/v1/replicationcontrollers

 

集群RBAC权限配置步骤:

 

参考《配置RAM用户或RAM角色RBAC权限》:https://help.aliyun.com/document_detail/87656.html

 

  • 使用主账号登录容器服务管理控制台;
  • 在控制台左侧导航栏中,单击授权管理;
  • 在授权管理页面的选择子账号页签配置管理权限,在选择子账号页签单击子账号页签,在需要授权的RAM用户右侧单击管理权限,进入集群RBAC配置页签;
  • 单击集群RBAC配置页面的添加权限,添加集群或命名空间级别的权限配置,并选择相应的预置角色;也可以单击配置行首的减号删除目标角色,完成后单击下一步;
  • 在授权提交页签,如果出现授权成功,表示该RAM用户或RAM角色已被授予RAM权限,此时也已完成RBAC授权,操作结束。

 

二、访问控制(RAM鉴权)

 

RAM访问控制提供了授权子账号管理云产品资源的能力,它的本质是对产品的OpenAPI接口进行鉴权。

 

1.  RAM授权

 

授权示例:

 

{

 "Statement": [

   {

     "Action": [

       "cs:Get*",

       "cs:ScaleCluster",

       "cs:DeleteCluster"

       ],

     "Effect": "Allow",

     "Resource": [

       "acs:cs:*:*:cluster/<yourclusterID>"

     ]

   }

 ],

 "Version": "1"

}

 

说明:

 

  • Action:接口列表,cs表示容器产品,cs:ScaleCluser表示扩容集群的接口;
  • Effect:有AllowDeny两种值,表示允许/拒绝;
  • Resource:定义访问的资源对象,acs:cs:*:*:cluster/<yourclusterID>表示的是某个具体的集群id,资源遵循的格式:acs:<service-name>:<region>:<account-id>:<relative-id>
  • Condition(可选项):表示条件选项,比如限制哪些IP可以调用上述接口。

 

2.  RAM用户授权

 

RAM用户是一个身份实体,它通常代表您的组织中需要访问云资源的人员或应用程序。

 

a.  场景:

 

  • 当企业有多种云资源时,为不同员工(应用系统)创建RAM用户并独立分配权限,并按需设置登录密码或创建访问密钥,做到责权一致;
  • 禁止多员工共享同一个云账号,共享云账号可能导致密码或访问密钥泄露;
  • 随时可以撤销用户账号身上的权限,也可以随时删除其创建的用户账号;

 

b.  特点:

 

  • RAM用户是RAM的一种实体身份类型,有确定的身份ID和身份凭证,它通常与某个确定的人或应用程序一一对应。

 

c.  示例:

 

权限名称:AliyunCSFullAccess

 

包含两个组:用户组权限、权限

 image.png

 

3.  用户角色授权

 

RAM角色是一种虚拟用户,与实体用户(阿里云账号、RAM用户和云服务)和教科书式角色(Textbook role)不同,RAM角色没有确定的身份认证密钥,需要被一个受信的实体用户扮演才能正常使用。

 

RAM角色机制是向您信任的实体(例如:RAM用户、某个应用或阿里云服务)进行授权的一种安全方法。

 

a.  场景:

 

  • 其他云账号中的RAM用户需要进行跨账户的资源访问 ;
  • ECS示例运行的应用程序代码需要对云资源执行操作;
  • 某些阿里云服务需要对账户中的资源进行操作才能提供服务;
  • 企业的身份提供商IdP,可以用于角色SSO

 

b.  特点:

 

  • RAM角色颁发短时有效的访问令牌(STS令牌),使其成为一种更安全的授予访问权限的方法。

 

c.  RAM角色类型:

参考《RAM角色概览》:https://help.aliyun.com/document_detail/93689.html

 

  • 阿里云账号:允许RAM用户所扮演的角色。扮演角色的RAM用户可以是自己的阿里云账号,也可以是其他阿里云账号。该类角色主要用于解决跨账号访问和临时授权问题;
  • 阿里云服务:允许云服务所扮演的角色。该类角色主要用于解决跨云服务授权访问的问题;
  • 身份提供商:允许受信身份提供商下的用户所扮演的角色。该类角色主要用于实现与阿里云的角色SSO

 

d.  示例:

 

角色名称:AliyunCSClusterRole

 

包含两部分:信任策略、权限

 image.png

 

terway组件为例:

image.png

 

用户创建集群后,将KubernetesWorkerRole绑定在node节点;当用户在集群中创建Pod时,terway组件可以监听到创建Pod的事件,接着通过ECS元数据获取STS token,然后调用接口向VPC申请私网IP,并将IP分配给Pod

 

三、 集群RBAC权限

 

1.  集群RBAC权限

 

RBAC是基于对用户关联角色的方式来控制用户对集群资源的访问,这里的“用户”是广义的,它可以是一个人、一个 ServiceAccount,或者一组用户或ServiceAccount

 

权限三要素:

 

  • 主体 Subject:可以为自然人(开发人员、集群管理人员,等),系统组件,Pod进程等;
  • 操作对象API Resources:在Kubernetes集群中的各类资源,比如PodNodes等;
  • 具体操作Verbs:对目标对象的具体操作,比如listgetcreate等;

 image.png

 

2.  集群RBAC资源

 image.png

集群RBAC资源关系图

 

RBAC API声明了四种 Kubernetes 资源对象:Role & ClusterRoleRoleBinding & ClusterRoleBinding,可以分为两组:

 

  • Role(角色)ClusterRole(集群角色):指定在资源上可以执行哪些操作;
  • RoleBinding(角色绑定)ClusterRoleBinding(集群角色绑定):将上述角色绑定到特定的用户、组或者 ServiceAccounts上。

 

RoleClusterRole的区别主要是作用域的不同:

 

  • Role:是用来指定命名空间范围内的权限的,在创建Role的时候,必须指定命名空间;
  • ClusterRole:定义的是集群范围内的权限(命名空间无关),创建ClusterRole的时候不需要指定命名空间;

 

3.  Role & ClusterRole

 

Role & ClusterRole指定哪些资源上可以执行哪些操作?

 

如下图所示,RoleClusterRole的唯一区别是Role在创建时需要指定命名空间namespace:test

 image.png

 

4.  verbs设置

 

verbs是在请求的资源上执行的请求的动词。

 

下图列举了kubectlverbsRBACverbs的对应关系:

 image.png

 

5.  RoleBinding & ClusterRoleBinding

 

角色绑定(Role Binding)是将角色中定义的权限赋予一个或者一组用户(定义了谁可以做这些操作)。

RoleBindingClusterRoleBinding的区别同样是RoleBinding多了一个命名空间的字段。

 image.png

 

在上图中左边的RoleBinding字段代表允许dev用户对test命名空间的pod-access资源进行获取查看和监控;右边的ClusterRoleBinding字段代表允许dev用户对所有命名空间的pod-access资源进行获取查看和监控。

 

6.  集群RBAC授权

 image.png

 

RBAC授权体系总结:RBAC授权体系可以总结为三个对象两个关系,三个对象是主体(用户)、角色和资源,两个关系即主体(用户)到角色的关系,角色和资源的关系。

 

思考:在命名空间下的RoleBinding引用不在命名空间下的ClusterRole,这样的绑定有什么效果?

 

7.  子账号RBAC权限授权

 

控制台给子账号RBAC授权后,如何查询子账号拥有的RBAC权限?

 

  • kubectl get clusterrolebinding|grep 子账号uid,找出关联的clusterrole
  • kubectl get ClusterRole ClusterRoleName -o yaml查看对应的权限,ClusterRoleName是上面一步找出的关联clusterrole

 

四、 ServiceAccount

 

ServiceAccount是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。

 

特点:

 

  • User account是为人设计的,而ServiceAccount则是为Pod中的进程调用Kubernetes API而设计;
  • User account是跨namespace的,而ServiceAccount则是仅局限它所在的namespace
  • 每个namespace都会自动创建一个default service account
  • 可以在创建Pod的时候为Pod制定一个自定义的ServiceAccount,用来代替default service account

 image.png

 

ServiceAccount使用

 

使用ServiceAccount Token访问Kubernetes集群。

 image.png

 

 

本讲小结

 

  • ACK集群的RAM权限以及RBAC权限的原理;
  • 集群中的组件如何使用的服务角色权限 ;
  • ServiceAccount的介绍以及使用;

 

思考:

 

  • 如何查询以及修改子账户以及ServiceAccount的权限?
  • 如何使用curl命令获取default命名空间下的Pod列表?

 

 

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
12373
分享
相关文章
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
148 33
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
80 19
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
55 10
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
OpenAI故障复盘丨如何保障大规模K8s集群稳定性
ACK One多集群Service帮助大批量应用跨集群无缝迁移
ACK One多集群Service可以帮助您,在无需关注服务间的依赖,和最小化迁移风险的前提下,完成跨集群无缝迁移大批量应用。
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
135 4
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
本文介绍如何设置和查看域名或证书监控。步骤1:根据证书状态选择新增域名或证书监控,线上部署推荐域名监控,未部署选择证书监控。步骤2:查询监控记录详情。步骤3:在详情页查看每日定时检测结果或手动测试。
HTTPS 证书自动化运维:https证书管理系统- 自动化监控
HTTPS 证书自动化运维:https证书管理系统-自动化部署
本指南介绍如何部署Linux服务器节点。首先复制生成的Linux脚本命令,然后将其粘贴到目标服务器上运行。接着刷新页面查看节点记录,并点击“配置证书”选择证书以自动部署。最后,节点部署完成,后续将自动调度,无需人工干预。
HTTPS 证书自动化运维:https证书管理系统-自动化部署
HTTPS 证书自动化运维:https证书管理系统之自动化签发
通过访问【https://www.lingyanspace.com】注册账户,进入证书服务菜单并新增证书。填写域名(单域名、多域名或泛域名),创建订单后添加云解析DNS记录进行质检。确认完成后可下载证书,并支持后续查看、更新和定时更新功能。证书过期前15天自动更新,需配置邮箱接收通知。
HTTPS 证书自动化运维:https证书管理系统之自动化签发
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等