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日实验笔记相关推荐

  1. 中联通宣布3G业务10月1日正式商用 套餐共分九档

    便宜实惠在这里 中新网9月28日电 中国联通今天下午举行3G商用启动仪式,宣布10月1日起正式商用,商用城市达到了285个.据悉,新资费套餐将分为9个档次,比试商用多了两个档次.其中,最便宜的套餐为9 ...

  2. linux中20个高级命令 8月26日学习笔记

    linux中20个高级命令 文章目录 linux中20个高级命令 1.ifconfig命令 1.1 检查所有网络接口 1.2 禁用网卡 1.3 启用网卡 1.4为网卡分配 IP 地址 1.5 更改网卡 ...

  3. 10月1日之后,你新建的GitHub库默认分支不叫「master」了

    点击上方"视学算法",选择加"星标" 重磅干货,第一时间送达 本文转载自:机器之心  |  作者:张倩.杜伟 从 2020 年 10 月 1 日开始,GitHu ...

  4. 皇室战争服务器维护,皇室战争问题修复与优化于10月17日强制更新中实装

    皇室战争10月17日进行强制性更新,18点维护结束.这次维护对一些问题进行修复与优化,那么本次强制性更新中实装的问题与优化到底有哪些呢?今天小编就为大家带来这次优化的具体内容. 问题修复及优化 •进一 ...

  5. 中创新航拟10月6日上市:天齐锂业与小鹏汽车为基石投资者

    雷递网 雷建平 9月23日 中创新航科技股份有限公司(简称:"中创新航",股票代码:03931)今日开启路演,发行区间为38港元到51港元,拟发行2.658亿股H股. 假设发售价为 ...

  6. 分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日)

    分享Silverlight/WPF/Windows Phone一周学习导读(10月1日-10月15日) 本周Silverlight学习资源更新: [Silverlight入门系列]ListboxIte ...

  7. 会议邀请 | 10月25日北京,首期D2iQ云原生主题论坛正式启动

    在开始今天的内容之前,先问大家一个问题:云原生究竟是什么? 一般来说,"云原生"是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势.CNCF(云原生计算基金会)将&quo ...

  8. Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日)

    Silverlight/Windows8/WPF/WP7/HTML5周学习导读(10月29日-11月4日) 本周Silverlight学习资源更新 ArcGIS 10.1 for Server 服务端 ...

  9. 10月31日科技资讯|抖音回应视频泄露:草稿不会上传后台;苹果开卖5000元印度版iPhone XR;Jboot 2.2.5发布|极客头条

    「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时刻紧跟业界潮流. 整理 | 郭 ...

最新文章

  1. Python可视化matplotlib多子图可视化(Multiple Subplots):plt.axes()、plt.subplot()、plt.subplots()、
  2. SLAM学习--帝国理工学院机器人课程slam部分讲义(附下载链接)
  3. s5-11 距离矢量路由选择协议
  4. 栈和队列之用2个栈实现一个队列
  5. html:(13):ol-li和div作用
  6. 麦当劳降价“过冬” 一夜回到十年前(转)
  7. 【无标题】drv8825步进电机驱动板子原理图
  8. matlab所有颜色,MATLAB 颜色选择及应用
  9. Typora中插入分页符
  10. System.out.println()标准输出方法性能影响一窥
  11. 我的VSTO之路(二):VSTO程序基本知识
  12. asp内乱码,注意不是ajax
  13. VTK:绘制圆锥体(附完整源码)
  14. 小朋友学数学(22):三角函数
  15. 黄仁勋没有回应,英伟达没有新品
  16. 计算机专业英语 学习笔记 6
  17. 如何编写测试用例?(详细分析)
  18. MATLAB中复数矩阵的转置、共轭及共轭转置
  19. 褚达晨加入General Atlantic,任高级顾问
  20. 两篇word文档行间距设置的一样但是显示的不一样的解决方法

热门文章

  1. Android传感器(四):距离传感器
  2. 百度oCPC一键联调激活教程?api怎么对接?
  3. JAVA无法读取jvm.cfg_“could not open `C:\Program Files\Java\jre7\lib\amd64\jvm.cfg”问题解决办法...
  4. 马士兵网络安全大师班薪选课程
  5. 如何用项目甘特图,做好项目汇报
  6. 一、Composer下载安装
  7. java编写一个学生类和教师类_JAVA:1、编写一个学生类,类名为Student,包含如下成员:...
  8. word2016背景色如何设置为保护眼睛的苹果绿
  9. 小爱(小米),天猫精灵(阿里),小度(百度),小艺(华为)智能家居系统选择
  10. matlab motor,MATLAB在电机仿真中的应用 Application of MATLAB in motor simulation.pdf