企业级运维之云原生与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列表?

 

 

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
9月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
ACK One注册集群已正式支持ACS(容器计算服务)算力,为企业的容器化工作负载提供更多选择和更强大的计算能力。
|
9月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
300 10
|
9月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
11月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
439 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
10月前
|
运维 Cloud Native 开发工具
智能运维:云原生大规模集群GitOps实践
智能运维:云原生大规模集群GitOps实践,由阿里云运维专家钟炯恩分享。内容涵盖云原生运维挑战、管理实践、GitOps实践及智能运维体系。通过OAM模型和GitOps优化方案,解决大规模集群的发布效率与稳定性问题,推动智能运维工程演进。适用于云原生环境下的高效运维管理。
371 8

热门文章

最新文章

推荐镜像

更多