一、ServiceAccount

(1)简介

https://www.kubernetes.org.cn/service-account

Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。它与User account不同

  • User account是为人设计的,而service account则是为Pod中的进程调用Kubernetes API而设计;
  • User account是跨namespace的,而service account则是仅局限它所在的namespace;
  • 每个namespace都会自动创建一个default service account
  • Token controller检测service account的创建,并为它们创建secret
  • 开启ServiceAccount Admission Controller后
    • 每个Pod在创建后都会自动设置spec.serviceAccount为default(除非指定了其他ServiceAccout)
    • 验证Pod引用的service account已经存在,否则拒绝创建
    • 如果Pod没有指定ImagePullSecrets,则把service account的ImagePullSecrets加到Pod中
    • 每个container启动后都会挂载该service account的token和ca.crt到/var/run/secrets/kubernetes.io/serviceaccount/

 当创建 pod 的时候,如果没有指定一个 service account,系统会自动在与该pod 相同的 namespace 下为其指派一个default service account。而pod和apiserver之间进行通信的账号,称为serviceAccountName。

  

  

从上面截图可看到每个Pod都会有个存储卷,这个存储卷为token令牌,这就是pod和serviceaccount认证信息。通过secret进行定义,由于认证信息属于敏感信息,所以需要保存在secret资源当中,并以存储卷的方式挂载到Pod当中。从而让Pod内运行的应用通过对应的secret中的信息来连接apiserver,并完成认证。每个 namespace 中都有一个默认的叫做 default 的 service account 资源。进行查看名称空间内的secret,也可以看到对应的default-token。让当前名称空间中所有的pod在连接apiserver时可以使用认证信息,从而保证pod之间的通信。

 (2)创建方式

默认的service account 仅只能获取当前Pod自身的相关属性,无法观察到其他名称空间Pod的相关属性信息。如果想要扩展Pod,假设有一个Pod需要用于管理其他Pod或者是其他资源对象,是无法通过自身的名称空间的serviceaccount进行获取其他Pod的相关属性信息的,此时就需要进行手动创建一个serviceaccount,并在创建Pod时进行定义。实际上,service accout也属于一个k8s资源,如下查看service account的资源定义字段:

  [root@k8s-master ~]# kubectl explain sa

  k8s的命令行create,封装了很多资源创建命令:

  [root@master ~]# kubectl create serviceaccount -h    #查看帮助

  [root@master ~]# kubectl create serviceaccount mysa -o yaml --dry-run

  

  --dry-run:验证是否能创建,但不会真的创建

  -o yaml:输出为yaml,这样可以快捷的得到yaml文件,甚至改改就能用了

(3)创建

  [root@master ~]# kubectl create serviceaccount admin  #创建一个名为admin的sa

  

  查看这个sa:

  

  

  可以看到有一个 token 已经被自动创建,并被 service account 引用。

 (4)serviceaccount的自定义使用  

现在创建pod时都时使用默认serviceaccount的,要设置使用非默认的 service account,只需要在 pod 的spec.serviceAccountName 字段中将name设置为您想要用的 service account 名字即可。在 pod 创建之初 service account 就必须已经存在,否则创建将被拒绝。需要注意的是不能更新已创建的 pod 的 service account。

  创建pod,并使用自定义serviceaccount:

  a、定义pod资源清单

    [root@master manifests]# vim pod-sa-demo.yaml

    

  b、创建

    

    

  c、查看

    

    由token可见已经使用了上面定义的serviceaccount;

 (5)自建证书和账号进行访问apiserver

在K8S集群当中,每一个用户对资源的访问都是需要通过apiserver进行通信认证才能进行访问的,那么在此机制当中,对资源的访问可以是token,也可以是通过配置文件的方式进行保存和使用认证信息,可以通过kubectl config进行查看配置;

  [root@master ~]# kubectl config view

  

  (1)生成证书

 

  (2)使用ca.crt进行签署

  a、证书签署请求

    [root@master pki]# openssl req -new -key magedu.key -out magedu.csr -subj "/CN=magedu"  #magedu就是用户  

  b、证书签署

    [root@master pki]# openssl x509 -req -in magedu.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out magedu.crt -days 365

     

    [root@master pki]# openssl x509 -in magedu.crt -text -noout  #查看证书信息

  c、添加到用户认证

    [root@master pki]# kubectl config set-credentials magedu --client-certificate=./magedu.crt --client-key=./magedu.key --embed-certs=true
    User "magedu" set.
    [root@master pki]# kubectl config set-context magedu@kubernetes --cluster=kubernetes --user=magedu
    Context "magedu@kubernetes" created.

  d、查看kubectl配置信息

    

  (3)尝试切换到magedu用户

    [root@master pki]# kubectl config use-context magedu@kubernetes  #切换用户

    

    当切换到magedu用户进行访问集群时,由于magedu账户没有管理集群的权限,所以在获取pods资源信息时,会提示Forrbidden。

    那么接下来就可以学习一下怎么对账户进行授权;

    [root@master pki]# kubectl config use-context kubernetes-admin@kubernetes  #再把用户切换回kubernetes

转载于:https://www.cnblogs.com/weiyiming007/p/10477164.html

k8s认证及ServiceAccount-十五相关推荐

  1. 一步一步SharePoint 2007之十五:实现Form认证(5)——更改认证的Provider

    一步一步SharePoint 2007之十五:实现Form认证(5)--更改认证的Provider 摘要 本篇文章将记录实现Form认证的第五部分--更改认证的Provider. 前面各项准备工作都做 ...

  2. C1认证学习十四、十五(算法常识、HTML Head 头)

    C1认证学习十四.十五(算法常识.HTML Head 头) 文章目录 C1认证学习十四.十五(算法常识.HTML Head 头) 十四(算法常识) 任务背景 任务目标 查找算法 1.顺序查找 2.二分 ...

  3. 第十五届全国大学生智能汽车竞赛全国总决赛提交技术报告通知

    第十五届全国大学生智能汽车竞赛 获得全国总决赛资格和创意比赛队伍 提交技术报告的通知 参加全国总决赛的竞速赛和创意赛的每支队伍必须提交竞赛车模制作技术报告. 这两个文档应在2019年8月27日前通过邮 ...

  4. 第十五届全国大学生智能车线上比赛流程规范总结

    在2020年的新冠病毒催生下的智能车云端比赛横空出世,并经过2020年暑期的不断摸索尝试下,可以考虑进一步扩展.下面对于2020年暑期的华南赛区的现场比赛相关的经验进行梳理. □ 相关博文 第十五届全 ...

  5. 2020年第十五届全国大学生智能汽车竞赛浙江赛区比赛成绩分析

    8月10日,第十五届全国大学生智能汽车竞赛首场比赛(浙江赛区)在浙大城市学院风雨操场拉开帷幕. ▲ 智能车竞赛浙江赛区比赛现场 经过两天鏖战比赛,来自省内34所大学(含本科.独立学院.高职院校)的17 ...

  6. 第十五届全国大学生智能汽车竞赛线上比赛流程规范

    第十五届全国大学生智能汽车竞赛 线上比赛流程规范 作者:卓晴博士,清华大学自动化系 更新时间:2020-08-03 Monday ■ 简述   第十五届 全国大学生智能汽车竞赛 由于受到 新冠病毒(C ...

  7. 第十五届全国大学生智能车竞赛线上竞赛方案(草案)

    ■ 背景介绍 全国大学生智能汽车竞赛旨在加强大学生实践.创新能力和团队精神的培养,从2005年受教育部高等教育司委托( 公函[2005]201号文.教高司[2005]13号 )教育部高等学校自动化大类 ...

  8. 软件项目实施方案_进度、预算、人员和合同变更——科研项目管理精义与实操(十五)...

    第四十三节 进度变更 第一百七十一条 进度管理是项目管理的灵魂.皆因时间不可逆,故进度失控实为最常见也最难控制的风险.一般性进度延期或调整经评估后可准予施行,重大里程碑节点的进度变更或调整.或超期调整 ...

  9. [系统安全] 四十五.APT系列(10)Metasploit后渗透技术信息收集、权限提权和功能模块详解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  10. Docker最全教程之MySQL容器化 (二十五)

    前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过此块,本篇仅从笔者角度进行总结和编写. 目录 镜像说明  运行MySQL容器镜像  1.运行MySQL容器  ...

最新文章

  1. AlexNet中的局部响应归一化(LRN)
  2. dispatch_queue_create(com.biostime.xxx, DISPATCH_QUEUE_SERIAL)的陷阱
  3. junit4X系列--Builder、Request与JUnitCore
  4. python3 lambda表达式
  5. 学习在 ArcEngine 中使用 Geoprocessing
  6. 证书到期什么意思_建筑资质资质证书有效期及注意事项
  7. 【程序人生】不想一辈子做底层码农?快来看看这十条箴言
  8. cnetos6,centos7添加新网卡,系统不识别的解决办法
  9. python 基本数据类型常用方法总结
  10. PROFIBUS-DP现场总线的结构及应用
  11. 点4下还是点1下?使用jQuery启动一个SharePoint工作流
  12. Python基础练习三超市存包柜模拟(优化)
  13. jenkins教程菜鸟_Jenkins插件编译
  14. 成品app直播源码,设置ViewPager不可滑动
  15. Ghost参数使用详解
  16. vue2.x使用Relation Graph 人物关系图谱
  17. html视频外链地址,HTML第三方视频链接使用以及属性.docx
  18. 售前成本评估你做对了吗?
  19. 有关图片的压缩,整理一下.有用的COPY
  20. 亚洲杯:里皮告别无表情

热门文章

  1. 【opencv】错误提示OpenCV Error: Assertion failed
  2. AttributeError: ‘_IncompatibleKeys‘ object has no attribute ‘cuda‘
  3. 多重判断php d代码,phpd代码审计
  4. return 0在c语言中是什么意思_单次T+0与蓝筹股试点T+0制度是什么意思,两者有何区别?...
  5. tbb::parallel_for 实例
  6. python调用shell命令 批量执行python程序
  7. android.jar 位置,Android 导入jar包 so模块--导入放置的目录
  8. redlock java_用redlock实现redis的分布式锁
  9. 太阳花图片_花是大自然给予人类的礼物 你知道石斛花的花语是什么吗
  10. 基于springboot+LayUI的校园信息发布平台