k8s的认证:

与API server通信的客户端大致有两类:
  1.集群客户端工具(kubectl、kubeadm、kubelet等)
  2.集群内pod.

任何客户端访问k8s时的过程:
  1.认证:任何客户端访问k8s,首先需要通过k8s的认证;认证通过是说明所用账号只是k8s的合法用户;
  2.授权:认证通过后,是否具有对k8s集群中资源的操作,需要k8s对其进行授权检查;
  3.准入控制:授权检查通过后,并不能说明你的操作都在我们指定的操作范围内;进一步补充授权。
认证:k8s中常见的认证方式有:token令牌认证和SSL认证。
授权:k8s中常见的授权方式有:Node、ABAC(Attribute Base Access Control基于属性的访问控制)、RBAC(Role Base Access Control基于角色的访问控制)
k8s是高度模块化设计的,认证、授权、准入控制等,都通过插件方式部署,可由用户自定义选择经由什么样的插件来完成何种控制逻辑。

每个名称空间下都会有一个默认的token,该名称空间下的pod使用默认使用这个token来与API Servre通信。

kubeadm初始化后生成的客户端证书和私钥在:.kube/config

k8s的kubectl等客户端工具对集群操作时,命令被转化为一个http协议的请求:
  如:若想访问default名称空间下的deployment控制器生成的nignx pod时的URL路径为:
  http://node_ip:node_port/apis/apps/v1/namespaces/default/deployments/nginx
 
service account(sa):
kubernetes集群有两类认证时的账号:
  user account(管理者、访问者)、service account(pod)。

创建一个sa:

 kubectl create serviceaccount SA_NAME

若要对单独或一组pod使用单独token来实现权限的提升或者降级,需要单独创建pod账户(Service account)。
service account简写sa,创建一个sa的同时,系统会自动给这个sa生成一个token,用于使创建的sa连接API Server 。
查看某个pod使用的sa:kubectl describe pods POD_NAME 在输出的结果中寻找volumes段的SecretName。
pod若要使用某个自定义sa时,须在创建Pod时,在pod的资源清单中添加SA_NAME(spec.serviceAccountName:SA_NAME)。

例:k8s创建pod时,需要docker在镜像仓库中拉取镜像,若是私有镜像仓库,则需要提供账户及密钥,此时的解决方法有两种:

1.直接在定义pod时定义imagePullSecret。(较不安全)

2.创建单独的账户(sa),在sa中定义imagePullSecret,然后在创建pod时定义serviceAccountName为此sa名称。

k8s的认证和service account简述的更多相关文章

  1. k8s学习笔记之九: Service Account

    第一章.前言 每一个用户对API资源进行操作都需要通经过以下三个步骤: 第一步:对客户端访问进行认证操作,确认是否具有访问k8s权限 token(共享秘钥) SSL(双向SSL认证) ....通过任何 ...

  2. Service Account和RBAC授权

    一.介绍 Service Account概念的引入是基于这样的使用场景:运行在pod里的进程需要调用Kubernetes API以及非Kubernetes API的其它服务.Service Accou ...

  3. [置顶] kubernetes资源类型--secret和Service Account

    secret 概念 secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息.将这些信息放在secret对象中比 直接放在pod或dock ...

  4. k8s的认证授权

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

  5. Service Account和其secrets 作用和场景,看了不亏。。

    Service Account概念的引入是基于这样的使用场景: 运行在pod里的进程需要调用Kubernetes API以及非Kubernetes API的其它服务.Service Account它并 ...

  6. 错误: No API token found for service account "default",

    [root@kubernetes-master pods]# kubectl create -f mysql.yaml Error from server (ServerTimeout): error ...

  7. kubernetes的Service Account和secret

    系列目录 Service Account Service Account概念的引入是基于这样的使用场景:运行在pod里的进程需要调用Kubernetes API以及非Kubernetes API的其它 ...

  8. SQL Server 2012 Managed Service Account

    原创地址:http://www.cnblogs.com/jfzhu/p/4007472.html 转载请注明出处 (一)Windows服务使用的登陆帐号 Windows服务只有登录到某一帐户的情况下才 ...

  9. SSRS2:Reporting Service 配置Service Account

    1,Service Account SSRS以一个Service方式实现,有三部分组成:Web Service,Report Manager和一个后台的进程,这个Service运行的账号就是Servi ...

随机推荐

  1. Spark (Python版) 零基础学习笔记(二)—— Spark Transformations总结及举例

    1. map(func) 将func函数作用到数据集的每个元素,生成一个新的分布式的数据集并返回 >>> a = sc.parallelize(('a', 'b', 'c')) &g ...

  2. 自动化测试 - Appium + Python史上最全最简环境搭建步骤

    一,为什么是Appium借一张图: 1.1 Appium优点 l  开源 l  跨架构:NativeApp.Hybird App.Web App l  跨设备:Android.iOS.Firefox ...

  3. (转)CentOS 7常见的基础命令和配置

    CentOS 7常见的基础命令和配置 原文:http://blog.51cto.com/hujiangtao/1973566 管理服务 命令格式:systemctl COMMAND name.serv ...

  4. Maven的学习资料收集--(三)使用Maven构建Web项目

    新建Maven项目 File - New - Other 选择Maven Project 单击Next 保持默认即可单击Next 选择Archetype为 web app单击Next 输入一些必要信息 ...

  5. 使用SpringSession管理分布式系统的会话Session

    在我方供应链项目分布式部署的环境下,需要在统一网关服务中管理访问的Session,即无论访问请求路由到哪一个网关服务环境,使用的都是相同的HttpSession,这样就保证了在用户登录之后,能够使用统 ...

  6. Java调用webservice接口方法(SOAP message、xfire、axis)

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使 ...

  7. php编译安装过程中遇到问题

    编译安装PHP时遇到的问题 问题1: configure: error: xml2-config not found. Please check your libxml2 installation. ...

  8. pycharm tab换为4个空格

    Edit => find => replace 然后勾上 Regex,上一行输入 \t,下一行输入4个空格.

  9. 流媒体 5——MPEG声音

    1. 听觉系统的感知特性: MPEG声音的数据压缩和编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码. 许多科学工 ...

  10. IDEA 编辑器如何将tabs 分行显示

    https://jingyan.baidu.com/article/49ad8bcebd9e7c5834d8faac.html