一、Service Account总结

1、service account到底是什么?

  • 在k8s中,service account是给集群中的进程使用的,当集群中的pod/进程需要跟apiserver申请调用资源时使用时使用的;我们用户是不会去使用它的;举个很形象的例子,就像nginx服务中的nginx账号一样,我们一般是不会使用su去登录它并且使用它的;如下,就能很直观的明白了:
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;        #这里这个账户就叫nginx,就是给nginx这个进程、服务使用的
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
  • 但是不同的是,linux中的nginx服务,我们使用yum -y install下载nginx服务时,系统会默认帮我们创建一个叫做nginx的账户;但是在k8s中,任何进程任何pod在被创建出来的同时,如果我们不指定使用自己创建的service account的话,系统会默认给我们使用default账户去创建资源

2、在k8s集群中为什么需要service account?

  • 原因很简单,在创建新的资源的同时,限制它们的权限;
  • 因为在我们创建新的资源时,如果不指定使用哪个sa去创建的话,默认就是使用default服务账户,但是default这个服务账号权限特别大,任何操作都能执行,在公司中我们是不允许这样的事情发生的;主要的原因就是为了保护资源,防止误删
  • 所以这个时候我们就需要用到service account了,对资源限制权限,给它我们想给的权限,这样就能有效的保护好我们资源

3、创建出来的sa可以直接就使用吗?

但是一个sa创建出来了有什么用呢?这个问题值得深思

  • 在任何地方一个账号创建出来了,单单从账号本身是没有任何意义的;就像我们去银行开银行卡需要开户一样的,虽然说银行都是有vip和普通用户的,但是单纯的只看账号的话,账号就是一长串的数字而已;在k8s中也是一样的,如果单单只看sa这个账户的话,一个sa被创建出来了,并没有很大的意义的。
  • 回归到生活中,为什么银行里面有vip会员,还有更多的普通账户呢?那是因为他们在账户的钱多,钱多了也就变成vip了;那么这跟我们k8s中的sa又有什么关系呢?答案是:有关系的。
  • 在k8s集群中的sa,也是需要“充钱”进去才能变成“vip”的,这里面的”钱“,就是我们在集群中所说的角色role了,创建一个角色,赋予它一定的权限;但是我们需要将它跟我们所创建出来的角色绑定在一起,那这个sa就会变成”vip“了,那么这个sa的意义就有了。

4、sa有意义了,我们怎样去使用它?

  • 现在是万事俱备只欠东风了,账号有了,权限也有了,那么我们怎样去使用它呢?
  • 很简单,只要我们在创建新资源的时候(比如说pod、deployment),在yaml文件中指定使用你想指定的sa账户,就可以了;
  • 指定了服务账户之后,我们把pod创建出来了,我们在使用这个pod时,这个pod就有了我们指定的账户的权限了,这样就能达到我们在公司中的需求了。

二、User Account总结

1、在k8s中User Account到底是什么?

  • 只要我们理解了前面的service account的话,这里就更容易理解了;前面我们说的service account在k8s集群中是给进程/pod使用的,但是这里我们要讲的User Account,是给我们用户,也就是给人用的
  • 其实并不难理解,举个例子就很好的能理解到这个UA在k8s中是什么了:
    • 在linux操作系统中,我们有且仅有一个root账户,还能有若干个普通账户;root账户的权限最大,普通账户如果需要某些特殊的权限的话,是需要我们root账户去给它授权的
    • 而这些给我们提供使用的,在k8s的具体体现,那就是user account

2、为什么需要User Account?

  • 在k8s集群中跟linux操作系统是一样的,我们默认的账户是:kubernetes-admin@kubernetes,管理员账户,权限也是最大的,在k8s集群中畅通无阻
  • 但是在企业中,并不是只有我们一个人使用k8s集群,还有很多的研发人员都是需要使用集群的;这时我们需要给他们创建一些账号,但是这些账号权限又不能太大,以防误删资源,这个时候我们就能使用user account了

3、怎样创建普通账户?

  • 创建普通账户很简单,首先我们要创建一系列的证书文件和密钥文件,如下:
Key 是私用密钥openssl格,通常是rsa算法。Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。
  • 创建完这些文件之后直接在命令行创建普通账户
[root@k8s-master ~]# kubectl  config  set-credentials zh  --client-certificate=./zh.crt  --client-key=./zh.key  --embed-certs=true

4、普通账户有了,可以直接使用么?

  • 虽然普通账户已经有了,但是单单一个账户并没有任何意义,需要有权限才行;那权限从何处来?
  • 权限就从角色中来,创建完了账户后,我们还并不能直接使用它,使用它也没有任何意义,只是一个空壳而已;这时我们就需要创建一个角色,将角色跟账户互相绑定了,这个账户就有意义了

5、角色到底应该怎样创建?

  • 角色主要分为两种:角色和集群角色,角色是比较有限制性的,只针对于指定的资源生效;而集群角色就权限就比较广泛了,新建了一个集群角色之后,这个角色将对整个集群受影响;在使用的过程中,具体情况具体分析,适合哪种就使用哪种

  • 可见角色的重要性,那角色到底应该怎样去创建呢?

    • 创建角色role的方法主要有两种:第一种方法是直接通过命令行创建,如下所示:

    • [root@k8s-master ~]# kubectl  create role  myrole  --verb=get,list,watch --resource=pod,svc#创建了一个名叫myrole的角色,并且赋予它对pod、service有看的权限
      
    • 第二种方法就是通过yaml文件去创建了,如下,普通角色的yaml文件:

    • apiVersion: rbac.authorization.k8s.io/v1
      #api版本,使用kubectl explain +【要查询的资源,比如pod】
      kind: Role
      metadata:name: pod-reader
      rules:     #规则
      - apiGroups: [""]       # 空字符串""表明使用支持所有的api版本,一般都放空resources: ["pods"]      #resources:资源#现在这些权限对哪些资源生效,这里写的是pod,如果想要多写几个,就用逗号隔开,其实就是一个列表verbs: ["get", "watch", "list"]    #详细的权限:这三个都是查看的权限#verbose:冗长的,详细的,我们常用的有:rpm -ivh,显示详细/冗长信息#这里没有spec,写spec是有规律的,比如我们创建一个pod,pod中还有一个container,container也有它自己的很多重要的属性
      
    • 集群角色的yaml文件,如下:

    • kind: ClusterRole
      apiVersion: rbac.authorization.k8s.io/v1 #会升级的,升级就不能用了
      metadata:  # ClusterRole是集群范围对象,所以这里不需要定义"namespace"字段name: secret-reader #这里就跟下面的互相对应
      rules:
      - apiGroups: [""]   resources: ["secrets"] #这里写的secretsverbs: ["get", "watch", "list"]
      
  • 需要注意的是,角色和账户都创建好了,需要将他们俩绑定在一起,账户就会变得有意义,如下:

  • [root@k8s-master ~]# kubectl  create  rolebinding myrole-binding  --role=myrole  --user=zh
    

6、万事俱备只欠东风,怎样使用UA?

  • 绑定做完了,使用就非常简单了,这个过程就相当于在linux中切换普通账户使用su - user 一样的
  • 直接在命令上切换账户即可,语法如下:
[root@k8s-master ~]# kubectl config user-context zh@kubernetes【最后接的是具体账户名】#这个账户是k8s中的root用户,叫做admin用户,就是管理员
[root@k8s-master ~]# kubectl config user-context kubernetes-admin@kubernetes

大白话的方式跟你聊k8s中的SA和UA相关推荐

  1. 【网址收藏】k8s中helm方式安装postgresql及pgadmin

    k8s中helm方式安装postgresql及pgadmin 安装命令: $ helm repo add runix https://helm.runix.net/ $ helm install my ...

  2. 关于K8s中Pod调度[选择器,指定节点,主机亲和性]方式和节点[coedon,drain,taint]标记的Demo

    写在前面 嗯,整理K8s中pod调度相关笔记,这里分享给小伙伴 博文内容涉及: kube-scheduler组件的简述 Pod的调度(选择器.指定节点.主机亲和性)方式 节点的coedon与drain ...

  3. k8s部署jar包_学习K8S之路.6--- 在K8S中部署Jenkins,并使用Jenkins打包jar包

    一:部署jenkins jenkins官网:https://jenkins.io/download/ jenkins镜像:https://hub.docker.com/r/jenkins/jenkin ...

  4. k8s中几种port介绍

    1.端口所应用位置的不同 port是service的的端口 targetport是pod也就是容器的端口 nodeport是容器所在宿主机的端口(实质上也是通过service暴露给了宿主机,而port ...

  5. 9 个技巧,解决 K8s 中的日志输出问题

    作者 | 元乙  阿里云存储服务技术专家 导读:近年来,越来越多的同学咨询如何为 Kubernetes 构建一个日志系统,或者是来求助在此过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是作者想 ...

  6. 【好文收藏】k8s中Pod 无法正常解析域名:部署 DNS 调试工具排查

    k8s 中 Pod 无法正常解析域名:部署 DNS 调试工具排查 问题描述 最近将 Kubernetes 升级到 1.18.1 版本,不过升级完后,查看工作节点的部分 Pod 无法启动,查看消息全是 ...

  7. kubernetes(三)k8s中通信和Service

    目录 1.同一个Pod中的容器通信 2.集群内Pod之间的通信 3 集群内Service-Cluster IP 4.外部服务访问集群中的Pod 4.1 Service-NodePort 4.2.Ser ...

  8. K8s 中使用 cert-manager 申请免费 Https 证书

    K8s 中使用 cert-manager 申请免费 Https 证书 Intro 最近在尝试将自己的应用从自己用 kind 部署的一个 k8s 集群迁移到 Azure 的 AKS 上,其中一个问题就是 ...

  9. 在 k8s 中部署 Prometheus 和 Grafana

    部署 Prometheus 和 Grafana 到 k8s Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8 ...

最新文章

  1. h5在线浏览word_怎样将PDF在线转换成Word?教你成为一个高手的方法
  2. numpy 滑动窗口取数据
  3. (转)Linux下C++开发初探
  4. Asp.net服务器端控件CheckBoxList的使用心得
  5. html 商品展示框
  6. stm32f030cc 替换 stm32f030c8 后程序下载失败问题
  7. [数据结构]邻接矩阵和邻接表存储的图DFS,BFS算法时间复杂度分析
  8. matlab 动态分配内存,[Matlab科学计算之高效编程] 1. 预分配内存
  9. mysqlbinlog 查看binlog时报错unknown variable 'default-character-set=utf8'
  10. Cissp全过程(简介到考试后)
  11. EMNLP'21 | Dialogue System 对话系统
  12. PS小技巧 | 不需要抠图的黑白配
  13. wordpress七步曲
  14. 北京的哪些地方开的发票可参与国家税务局的摇奖
  15. 华为防火墙配置(双机热备)
  16. 【修真院PM小课堂】流程图
  17. php 时辰,时辰算命 - 免费在线算命 - 三藏算命
  18. HCNP——RIPv1和RIPv2概况
  19. 2021免费大容量OneDrive + office 365桌面版 (a1 a1p)
  20. 超强的波多黎各,值得尊敬的美国队

热门文章

  1. C++利用stringstream实现字符串分割和输入
  2. PowerDesigner创建仓库并且管理
  3. 玩转LinkedIn领英,我的外贸开发客户利器
  4. tag untag_untag(端口tag和untag简单理解)
  5. 2012年河北省职称计算机,2012年河北省职称计算机考试基础知识及答案
  6. 河北省考计算机知识,河北省职称计算机考试基础知识试题及答案.pdf
  7. 矮人dos安装fc4步骤
  8. u盘安装浪潮服务器_安装linux操作系统--浪潮服务器
  9. 五、数字签名及存在的问题
  10. 6种自媒体赚钱方法!