Kubernetes中RBAC实战一 servicecount 10月2日实验笔记
Kubernetes的servicecount简单实战
文章目录
- Kubernetes的servicecount简单实战
- 一、创建servicecount
- 二、创建POD关联刚才创建sa
- 三、测试无权限访问ApiServer
- 四、添加权限后访问ApiServer
一、创建servicecount
我这里使用的命令创建,可以用yaml进行声明式创建
kubectl create servicecount my-service-account
我们查看一下sa的yaml文件
[root@node1 ~]# kubectl get sa my-service-account -oyaml
apiVersion: v1
kind: ServiceAccount
metadata:creationTimestamp: "2021-10-02T08:21:38Z"name: my-service-accountnamespace: defaultresourceVersion: "1131562"selfLink: /api/v1/namespaces/default/serviceaccounts/my-service-accountuid: 3fa61359-d969-4701-b73a-f049749c6816
secrets:
- name: my-service-account-token-kbvh6
注意:创建sa的同时,会自动创建一个sa关联的secrets,从上面命令也可以很清晰的看出来When creating an SA, an SA associated secret will be automatically created, which can be clearly seen from the above commands
二、创建POD关联刚才创建sa
yaml文件如下:
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-v3namespace: defaultlabels:app: nginx-v3
spec:selector:matchLabels:app: nginx-v3replicas: 1template:metadata:name: nginx-v3temlabels:app: nginx-v3spec:serviceAccountName: my-service-accountcontainers:- name: nginxv3-podimage: nginximagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80
笔者是为了图省事找了一个之前的deploy的yaml来创建的。亦可以之间创建pod通过serviceAccountName: my-service-account来关联
三、测试无权限访问ApiServer
我们通过命令进入到刚才的容器中;
kubectl exec -it nginx-v3-79dd7b64d8-wc4gf -- /bin/bash
注意:
- 默认的servercount文件会被sa准入控制器挂载到容器内部的/var/run/secrets/kubernetes.io/serviceaccount目录
- 访问的地址是namespaces而不是namespace!!!(这个问题我排查了20分钟,有个s)
使用curl命令向ApiServer发出请求:
cd /var/run/secrets/kubernetes.io/serviceaccount
curl --cacert ./ca.crt -H "Authorization: Bearer $(cat ./token)" https://kubernetes/api/v1/namespaces/$(cat ./namespace)
## --cacert用于指定证书
## -H 用于指定头部
{"kind": "Status","apiVersion": "v1","metadata": {},"status": "Failure","message": "namespace \"default\" is forbidden: User \"system:serviceaccount:default:my-service-account\" cannot get resource \"namespace\" in API group \"\" at the cluster scope","reason": "Forbidden","details": {"name": "default","kind": "namespace"},"code": 403
这里我们可以看到通过指定token是可以成功访问到apiServer的,因为这个sa没有添加任何权限,所以会报403的错误,接下来我们尝试给sa添加default命名空间下的权限。
四、添加权限后访问ApiServer
我们退出容器,使用命令行给sa赋予admin的操作权限
kubectl create rolebinding namespace-admin-binding-admin --clusterrole=admin --serviceaccount=default:my-service-account -n default
查看rolebinding
[root@master dailytest]# kubectl describe rolebinding namespace-admin-binding-admin
Name: namespace-admin-binding-admin
Labels: <none>
Annotations: <none>
Role:Kind: ClusterRoleName: admin
Subjects:Kind Name Namespace---- ---- ---------ServiceAccount my-service-account default
测试访问:
curl --cacert ./ca.crt -H "Authorization: Bearer $(cat ./token)" https://kubernetes/api/v1/namespaces/default
{"kind": "Namespace","apiVersion": "v1","metadata": {"name": "default","selfLink": "/api/v1/namespaces/default","uid": "facb579e-e545-465c-9310-43dbbc251475","resourceVersion": "155","creationTimestamp": "2021-05-22T06:37:19Z","managedFields": [{"manager": "kube-apiserver","operation": "Update","apiVersion": "v1","time": "2021-05-22T06:37:19Z","fieldsType": "FieldsV1","fieldsV1": {"f:status":{"f:phase":{}}}}]},"spec": {"finalizers": ["kubernetes"]},"status": {"phase": "Active"}
因为赋予的是admin的权限,实际上crud是都有的,我们来访问一下default命名空间下的sa资源
curl --cacert ./ca.crt -H "Authorization: Bearer $(cat ./token)" https://kubenetes/api/v1/namespaces/default/serviceaccounts{"metadata": {"name": "my-service-account","namespace": "default","selfLink": "/api/v1/namespaces/default/serviceaccounts/my-service-account","uid": "3fa61359-d969-4701-b73a-f049749c6816","resourceVersion": "1131562","creationTimestamp": "2021-10-02T08:21:38Z"},"secrets": [{"name": "my-service-account-token-kbvh6"}]}
同时因为只赋予了default命名空间下的权限,所以是无法访问其他命名空间的
curl --cacert ./ca.crt -H "Authorization: Bearer $(cat ./token)" https://kubenetes/api/v1/namespaces/kube-system
{"kind": "Status","apiVersion": "v1","metadata": {},"status": "Failure","message": "namespaces \"kube-system\" is forbidden: User \"system:serviceaccount:default:my-service-account\" cannot get resource \"namespaces\" in API group \"\" in the namespace \"kube-system\"","reason": "Forbidden","details": {"name": "kube-system","kind": "namespaces"},"code": 403
}
Kubernetes中RBAC实战一 servicecount 10月2日实验笔记相关推荐
- 中联通宣布3G业务10月1日正式商用 套餐共分九档
便宜实惠在这里 中新网9月28日电 中国联通今天下午举行3G商用启动仪式,宣布10月1日起正式商用,商用城市达到了285个.据悉,新资费套餐将分为9个档次,比试商用多了两个档次.其中,最便宜的套餐为9 ...
- linux中20个高级命令 8月26日学习笔记
linux中20个高级命令 文章目录 linux中20个高级命令 1.ifconfig命令 1.1 检查所有网络接口 1.2 禁用网卡 1.3 启用网卡 1.4为网卡分配 IP 地址 1.5 更改网卡 ...
- 10月1日之后,你新建的GitHub库默认分支不叫「master」了
点击上方"视学算法",选择加"星标" 重磅干货,第一时间送达 本文转载自:机器之心 | 作者:张倩.杜伟 从 2020 年 10 月 1 日开始,GitHu ...
- 皇室战争服务器维护,皇室战争问题修复与优化于10月17日强制更新中实装
皇室战争10月17日进行强制性更新,18点维护结束.这次维护对一些问题进行修复与优化,那么本次强制性更新中实装的问题与优化到底有哪些呢?今天小编就为大家带来这次优化的具体内容. 问题修复及优化 •进一 ...
- 中创新航拟10月6日上市:天齐锂业与小鹏汽车为基石投资者
雷递网 雷建平 9月23日 中创新航科技股份有限公司(简称:"中创新航",股票代码:03931)今日开启路演,发行区间为38港元到51港元,拟发行2.658亿股H股. 假设发售价为 ...
- 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)
分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日) 本周Silverlight学习资源更新: [Silverlight入门系列]ListboxIte ...
- 会议邀请 | 10月25日北京,首期D2iQ云原生主题论坛正式启动
在开始今天的内容之前,先问大家一个问题:云原生究竟是什么? 一般来说,"云原生"是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势.CNCF(云原生计算基金会)将&quo ...
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日)
Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日) 本周Silverlight学习资源更新 ArcGIS 10.1 for Server 服务端 ...
- 10月31日科技资讯|抖音回应视频泄露:草稿不会上传后台;苹果开卖5000元印度版iPhone XR;Jboot 2.2.5发布|极客头条
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 整理 | 郭 ...
最新文章
- Python可视化matplotlib多子图可视化(Multiple Subplots):plt.axes()、plt.subplot()、plt.subplots()、
- SLAM学习--帝国理工学院机器人课程slam部分讲义(附下载链接)
- s5-11 距离矢量路由选择协议
- 栈和队列之用2个栈实现一个队列
- html:(13):ol-li和div作用
- 麦当劳降价“过冬” 一夜回到十年前(转)
- 【无标题】drv8825步进电机驱动板子原理图
- matlab所有颜色,MATLAB 颜色选择及应用
- Typora中插入分页符
- System.out.println()标准输出方法性能影响一窥
- 我的VSTO之路(二):VSTO程序基本知识
- asp内乱码,注意不是ajax
- VTK:绘制圆锥体(附完整源码)
- 小朋友学数学(22):三角函数
- 黄仁勋没有回应,英伟达没有新品
- 计算机专业英语 学习笔记 6
- 如何编写测试用例?(详细分析)
- MATLAB中复数矩阵的转置、共轭及共轭转置
- 褚达晨加入General Atlantic,任高级顾问
- 两篇word文档行间距设置的一样但是显示的不一样的解决方法
热门文章
- Android传感器(四):距离传感器
- 百度oCPC一键联调激活教程?api怎么对接?
- JAVA无法读取jvm.cfg_“could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg”问题解决办法...
- 马士兵网络安全大师班薪选课程
- 如何用项目甘特图,做好项目汇报
- 一、Composer下载安装
- java编写一个学生类和教师类_JAVA:1、编写一个学生类,类名为Student,包含如下成员:...
- word2016背景色如何设置为保护眼睛的苹果绿
- 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择
- matlab motor,MATLAB在电机仿真中的应用 Application of MATLAB in motor simulation.pdf