深入剖析Kubernetes
张磊
Kubernetes社区资深成员与项目维护者
立即订阅
21376 人已学习
课程目录
已完结 56 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (5讲)
开篇词 | 打通“容器技术”的任督二脉
免费
01 | 预习篇 · 小鲸鱼大事记(一):初出茅庐
02 | 预习篇 · 小鲸鱼大事记(二):崭露头角
03 | 预习篇 · 小鲸鱼大事记(三):群雄并起
04 | 预习篇 · 小鲸鱼大事记(四):尘埃落定
容器技术概念入门篇 (5讲)
05 | 白话容器基础(一):从进程说开去
06 | 白话容器基础(二):隔离与限制
07 | 白话容器基础(三):深入理解容器镜像
08 | 白话容器基础(四):重新认识Docker容器
09 | 从容器到容器云:谈谈Kubernetes的本质
Kubernetes集群搭建与实践 (3讲)
10 | Kubernetes一键部署利器:kubeadm
11 | 从0到1:搭建一个完整的Kubernetes集群
12 | 牛刀小试:我的第一个容器化应用
容器编排与Kubernetes作业管理 (15讲)
13 | 为什么我们需要Pod?
14 | 深入解析Pod对象(一):基本概念
15 | 深入解析Pod对象(二):使用进阶
16 | 编排其实很简单:谈谈“控制器”模型
17 | 经典PaaS的记忆:作业副本与水平扩展
18 | 深入理解StatefulSet(一):拓扑状态
19 | 深入理解StatefulSet(二):存储状态
20 | 深入理解StatefulSet(三):有状态应用实践
21 | 容器化守护进程的意义:DaemonSet
22 | 撬动离线业务:Job与CronJob
23 | 声明式API与Kubernetes编程范式
24 | 深入解析声明式API(一):API对象的奥秘
25 | 深入解析声明式API(二):编写自定义控制器
26 | 基于角色的权限控制:RBAC
27 | 聪明的微创新:Operator工作原理解读
Kubernetes容器持久化存储 (4讲)
28 | PV、PVC、StorageClass,这些到底在说啥?
29 | PV、PVC体系是不是多此一举?从本地持久化卷谈起
30 | 编写自己的存储插件:FlexVolume与CSI
31 | 容器存储实践:CSI插件编写指南
Kubernetes容器网络 (8讲)
32 | 浅谈容器网络
33 | 深入解析容器跨主机网络
34 | Kubernetes网络模型与CNI网络插件
35 | 解读Kubernetes三层网络方案
36 | 为什么说Kubernetes只有soft multi-tenancy?
37 | 找到容器不容易:Service、DNS与服务发现
38 | 从外界连通Service与Service调试“三板斧”
39 | 谈谈Service与Ingress
Kubernetes作业调度与资源管理 (5讲)
40 | Kubernetes的资源模型与资源管理
41 | 十字路口上的Kubernetes默认调度器
42 | Kubernetes默认调度器调度策略解析
43 | Kubernetes默认调度器的优先级与抢占机制
44 | Kubernetes GPU管理与Device Plugin机制
Kubernetes容器运行时 (3讲)
45 | 幕后英雄:SIG-Node与CRI
46 | 解读 CRI 与 容器运行时
47 | 绝不仅仅是安全:Kata Containers 与 gVisor
Kubernetes容器监控与日志 (3讲)
48 | Prometheus、Metrics Server与Kubernetes监控体系
49 | Custom Metrics: 让Auto Scaling不再“食之无味”
50 | 让日志无处可逃:容器日志收集与管理
再谈开源与社区 (1讲)
51 | 谈谈Kubernetes开源社区和未来走向
答疑文章 (1讲)
52 | 答疑:在问题中解决问题,在思考中产生思考
特别放送 (1讲)
特别放送 | 2019 年,容器技术生态会发生些什么?
结束语 (1讲)
结束语 | Kubernetes:赢开发者赢天下
特别放送 | 云原生应用管理系列 (1讲)
基于 Kubernetes 的云原生应用管理,到底应该怎么做?
深入剖析Kubernetes
登录|注册

26 | 基于角色的权限控制:RBAC

张磊 2018-10-22

你好,我是张磊。今天我和你分享的主题是:基于角色的权限控制之 RBAC。

在前面的文章中,我已经为你讲解了很多种 Kubernetes 内置的编排对象,以及对应的控制器模式的实现原理。此外,我还剖析了自定义 API 资源类型和控制器的编写方式。

这时候,你可能已经冒出了这样一个想法:控制器模式看起来好像也不难嘛,我能不能自己写一个编排对象呢?

答案当然是可以的。而且,这才是 Kubernetes 项目最具吸引力的地方。

毕竟,在互联网级别的大规模集群里,Kubernetes 内置的编排对象,很难做到完全满足所有需求。所以,很多实际的容器化工作,都会要求你设计一个自己的编排对象,实现自己的控制器模式。

而在 Kubernetes 项目里,我们可以基于插件机制来完成这些工作,而完全不需要修改任何一行代码。

不过,你要通过一个外部插件,在 Kubernetes 里新增和操作 API 对象,那么就必须先了解一个非常重要的知识:RBAC。

我们知道,Kubernetes 中所有的 API 对象,都保存在 Etcd 里。可是,对这些 API 对象的操作,却一定都是通过访问 kube-apiserver 实现的。其中一个非常重要的原因,就是你需要 APIServer 来帮助你做授权工作。

© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入剖析Kubernetes》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(32)

  • huan
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: readonly-all-default
    subjects:
    - kind: User
      name: system.serviceaccount.default
    roleRef:
      kind: ClusterRole
      name: view
      apiGroup: rbac.authorization.k8s.io
    2018-10-22
    2
    21
  • 喜剧。
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
    name: readonly-all-default
    subjects:
    - kind: ServiceAccount
    name: system.serviceaccount.default
    roleRef:
    kind: ClusterRole
    name: view
    apiGroup: rbac.authorization.k8s.io

    前面的朋友写的问题在于,default应该是serciveacount
    2018-11-28
    1
    11
  • 张振宇
    老师rbac怎么结合企业自己的ldap用户数据进行外部登录自研的web平台
    2019-02-23
    4
  • 无痕飞客
    老师,怎么优雅的卸载掉kubernetes呢?

    作者回复: kubeadm reset

    2018-10-22
    3
  • 单朋荣
    为什么要生命这类service account,不能直接使用role进行权限分配吗?这个中间代理的好处是啥呢?

    作者回复: 所有的中间层都是为了解耦

    2018-12-11
    2
  • tianfeiyu
    老师,我就想问一下,namespace 下的 default sa 没有关联任何 role,它到底有哪些权限呢?
    2019-08-09
    1
  • yuanlinios
    虽然 clusterrole/clusterrolebinding 不受 namespace 限制, 但是 serviceaccount 总是存在于 namespace 下. 为一个 namespace 下的 default sa 做只读限制很容易. 那么怎么为"所有" (包括现有的和未来的) 的 namespace 下的 default sa 做只读的限制? 希望给点提示

    2018-12-28
    1
  • 蜗牛
    role roleBanding serviceAccount 都是 namespaced , 那跨namespace 操作会怎么样?

    作者回复: 找不到对象

    2018-10-26
    1
  • 吕凯 🌴
    我是使用的二进制方式部署,ClusterRole为system:kube-scheduler绑定到system:kube-scheduler用户,跟kube-system namespace无关
    2018-10-24
    1
  • runner
    老师还是之前的问题,现在机器上有一个手动起的容器(比如是老的业务容器),想把他加到pod里管理起来,比如pod生成的时候发现已经有这个容器了,就关联这个容器,不再创建了。有办法实现么?

    作者回复: kubernetes 里最小的调度单位是pod,所以不可以的

    2018-10-23
    1
  • 看不穿
    老师,问个网络问题,如果集群外部想访问集群里面的pod服务,可以用ingress或者NodePort实现;那请问pod想访问集群外部的服务应该怎么办?
    2018-10-23
    1
  • 虎虎❤️
    但在这种情况下,这个默认 ServiceAccount 并没有关联任何 Role。也就是说,此时它有访问 APIServer 的绝大多数权限。
    为什么没有关联role,就会有绝大多数权限呢?有一个默认的role么,都有什么权限呢?

    另外,建议在所有的namespace给default serviceaccount绑定view,是出于安全的考虑是么?

    作者回复: 就是为了安全。role是用来做限制的,你没限制当然就撒野了。

    2018-10-22
    1
  • 无痕飞客
    老师,我kubernetes安装好了,怎么停止启动的kube进程并且卸载掉kubernetes呢?

    作者回复: kubeadm reset

    2018-10-22
    1
  • Dillion
    system:serviceaccount:<ServiceAccount 名字 >
    老师,这个ServiceAccount名字前面,是不是应该还有namespace
    2018-10-22
    1
  • 窗外
    为了学习此课程,因为kubernetes是基于golang语言。所以最近还特地学习了go语言的一些基础知识,但是没有linux运维经验,目前拥有的运维经验大多都是在windows上,linux只会进行一些普通的部署。
    望老师指点迷津,谢谢。
    2019-10-15
  • 窗外
    老师你好,我是一个开发人员。由于公司特殊的人员结构,我们需要兼做运维的工作。
    前面看过的章节中提到过,看完此书可以变成kubernets玩家。但是这个对于我的要求来说太高啦,我只想快速上手kubernetes来部署容器化的应用。
    因为以前公司的项目都是采用的单体架构,所有组件都是需要按个安装,有docker之后当然不需要这样操作了。但是有了容器,就需要kubernets这样的平台来支撑。
    而看过的一些有kubernetes云服务的公司:如腾讯云的容器托管服务也是基于kubernetes的。
    前面的章节都挨个看下来了,但是由于缺乏linux下的系统知识和运维经验,所以学习起来很累。
    望老师给个学习路线,怎么样上手kubernetes,只要能熟练的应用就是达到我的目标了。

    2019-10-15
  • tuyu
    控制器模式不难是因为代码都写好了.......
    2019-10-05
  • 骏骏
    老师,那我自研的程序如何接入API呢,就好比最简单的,我想写个PY脚本获取所有的POD列表 该怎么写RABC。
    2019-09-11
  • 诗泽
    “实际上,一个 ServiceAccount,在 Kubernetes 里对应的“用户”的名字是:”
    ServiceAccount 有namespace 但是用户没有,那serviceaccount 与用户的映射关系是怎样的呢,所有namespace 的default ServiceAccount 对应同一个user 吗?即system.serviceaccount.default ?
    2019-05-14
  • Andy
    老师,为所有 Namespace 下的默认ServiceAccount(default)绑定好一个只读role之后,我怎么去判断这个ServiceAccount对相应的resource真的只有只读权限呢
    2019-05-09
收起评论
32
返回
顶部