通过set-context 控制namespace 进行隔离
kubernetes RBAC 需要了解 rules roles subjects rolebindings(role绑定)
rules 是一组操作 verbs 、资源 、 api组。

如果只允许创建对象并检索他们的信息, 那么可是使用 verbs 的 get list create, 一个verbs可以是 (*), 表示允许所有的操作。
规则的最后一个元素是 API 组 (apiGroup) , RBAC 使用 rbac.authorization.k8s.io 组
角色是规则的结合,它定义了一个或者多个规则, 这些规则可以绑定到用户 或者 用户组, 角色(role)的重要方面是,它们被应用到一个namespace中。 如果要创建一个指向整个集群的角色,可以使用clusterrole。 role 和 clusterrole 两者都是以相同的方式定义,唯一的区别在于范围(namespace 和 整个集群)
授权机制的下一个部分是subjects,它定义了正在执行操作的实体, 一个主题可以是一个用户, 一个组,一个serviceaccount, 用户是驻留在集群之外的人或者进程, serviceaccount 用于在想使用api的 pods内运行的进程。
rolebindings 它是主体与角色绑定在一起,由于主体定义用户,role绑定有效的用户(组或者serviceaccount),从而赋予他们对命名空间的特定对象执行某些操作的权限,rolebinding作用在namespace上, clusterrolebinding 作用在整个集群。

k8s 默认的预定义的集群角色
[root@master2 ssl]# kubectl get clusterrole | grep -E "view|admin|cluster-admin|edit" |grep -v "system"
admin 209d
cluster-admin 209d
edit 209d
view 209d
在设置admin的权限时, O(组) 是 system:masters, 是管理员。
CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name),浏览器使用该字段验证网站是否合法;
O:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group);
kube-apiserver 将提取的 User、Group 作为 RBAC 授权的用户标识;
[root@master2 ssl]# cat long-csr.json
{
"CN": "long",
"hosts": [],
"key": {
"algo": "rsa",
"size":
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "devops",
"OU": "System"
}
]
}
创建long的运行环境, long的运行环境绑定了 用户long,并且具有 namespace: long 的 admin权限。
kubectl create namespace long
kubectl config set-credentials long --client-certificate=/etc/kubernetes/ssl/long.pem --embed-certs=true --client-key=/etc/kubernetes/ssl/long-key.pem
kubectl config set-context long --cluster=kubernetes --user=long --namespace=long
kubectl config use-context long kubectl get pod
Error from server (Forbidden): pods is forbidden: User "long" cannot list resource "pods" in API group "" in the namespace "default" #切换成 kubernetes运行环境,对long账户进行权限绑定,授予admin权限,那么可以在 这个namespace下 进行任何操作。
kubectl config use-context kubernetes
kubectl create rolebinding long --clusterrole=admin --user=long -n long kubectl config use-context long
kubectl get pod
用组替换用户
在证书中有 O : devops 组
kubectl create rolebinding long --clusterrole=admin --group=devops -n long
kubectl config use-context long
kubectl get pod
[root@master2 fengjian]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nginxlong-5cd9f7c58-2ff5j 1/1 Running 0 32m
通过set-context 控制namespace 进行隔离的更多相关文章
- Go 记录一次groutine通信与context控制
需求背景: 项目中需要定期执行任务A来做一些辅助的工作,A的执行需要在超时时间内完成,如果本次执行超时了,那就不对本次的执行结果进行处理(即放弃这次执行).同时A又依赖B,C两个子任务的执行结果.B, ...
- docker理论 Cgroup namespace 各种隔离
耦合 是指两个或两个以上的体系或者两种运动形式间通过相互作用而批次影响以至联合起来的现象. Nginx与apache 在同一台服务器运行都占用80端口,起冲突这是我们修改其中一个端口为8080 半解耦 ...
- springmvc 事务控制与数据库隔离级别
springmvc 事物传播与数据库隔离控制 http://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html 一.Propagation ...
- 026.[转] 基于Docker及Kubernetes技术构建容器云平台 (PaaS)
[编者的话] 目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用.弹性伸缩和动态调整应用环境资源,提高研发运营效率. 本文简要介绍了与容 ...
- 主键生成器效率提升方案|基于雪花算法和Redis控制进程隔离
背景 主键生成效率用数据库自增效率也是比较高的,为什么要用主键生成器呢?是因为需要insert主表和明细表时,明细表有个字段是主表的主键作为关联.所以就需要先生成主键填好主表明细表的信息后再一次过在一 ...
- 使用独立PID namespace防止误杀进程
一段错误的代码 首先看一段错误的代码: #!/bin/bash SLICE=100; slppid=1; pidfile=/var/run/vpnrulematch.pid # 停止之前的sleep ...
- Docker 基础技术之 Linux namespace 详解
Docker 是"新瓶装旧酒"的产物,依赖于 Linux 内核技术 chroot .namespace 和 cgroup.本篇先来看 namespace 技术. Docker 和虚 ...
- Docker 容器的隔离性
Docker 容器的隔离性 就是 使用Linux namespace 来隔离运行环境和成 cgroup 限制容器使用的资源. namespace 可以顾名思义 命名空间:所以可以理解为每个独立的容器 ...
- [转帖]linux namespace 和cgroup lxc
https://blog.csdn.net/xiaoliuliu2050/article/details/53443863 5.1 linux namespace 和cgroup lxc 2016年1 ...
随机推荐
- 正则表达式,re模块
一,正则表达式 正则表达式是对字符串操作的一种逻辑公式,我们一般使用正则表达式对字符串进行匹配和过滤,使用正则的优缺点,我们可以去http://tool.chinaz.com/regex/进行测试. ...
- C++ 重载运算符简单举例
我们可以重定义或重载大部分 C++ 内置的运算符.这样,就能使用自定义类型的运算符. 重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的.与其他函数一 ...
- 动态规划法(六)鸡蛋掉落问题(一)(egg dropping problem)
继续讲故事~~ 这天,丁丁正走在路上,欣赏着路边迷人的城市风景,突然发现前面的大楼前围了一波吃瓜群众.他好奇地凑上前去,想一探究竟,看看到底发生了什么事情. 原来本市的一位小有名气的科学家 ...
- Ubuntu安装与配置
四.ubuntu下生成ngrok服务器主程序 4.1.步骤与先决条件 如果你只是临时穿透或调试用,到第三步基本就可以了,但如果想作为稳定的商业服务,用别人的服务器还是受制于人,这里我们准备搭建自己的n ...
- 为 Html 5 和 CSS 3.0 而生——Modernizr的介绍和使用
传统浏览器目前不会被完全取代,令你难以将最新的 CSS3 或 HTML5 功能嵌入你的网站. Modernizr 正是为解决这一难题应运而生,作为一个开源的 JavaScript 库,Moderniz ...
- c# Datatable导出Excel
using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; ...
- SQLServer删除登录记录用户名和密码
介绍: 作为一名开发人员都会知道我们做的项目都要用到数据库,数据库都需要账号和密码,然而问题来了,做的东西多了那些没用的账号和密码还在哪里纠缠着我们.所有我们不能忍了删除掉他. 网上很多都是2008的 ...
- Java学习笔记之——Java介绍
1.Java体系: JavaSE:标准版,其他两个体系的基础 JavaEE:企业版 JavaME:微型版,适用于消费类型的微型设备 2.Java三大特性:封装.继承.多态 3.Java的特点:面向对象 ...
- 【Java基础】11、java方法中只有值传递,没有引用传递
public class Example { String testString = new String("good"); char[] testCharArray = {'a' ...
- 【读书笔记】iOS-设计简单的Frenzic式益智游戏
如果你决定用UIView动画或Core Animation,一定要编写一些测试用例,模拟游戏可能遇到的要求最高的动画,另外不要忘记播放声音.不要等到最后才增加声音,因为在iPhone上播放音乐和音效确 ...