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. jquery——解决鼠标移入移出导致盒子不停移动的bug

    使用mouseover().mouseout()时会出现这样一种情况,鼠标快速多次移入移出后这个盒子会在鼠标不动后继续运动 代码如下: <!DOCTYPE html> <html l ...

  2. vbox 挂载共享文件时可能出现的问题以及对应的解决办法

    VMBox挂载共享文件时可能出现的问题以及对应的解决办法 如果出现“未能加载虚拟光盘***.iso 到虚拟电脑的错误” : 左边一栏,右键光盘,eject,再安装

  3. Sorted Subsegments

    https://www.hackerrank.com/contests/101hack38/challenges/sorted-subsegments/problem 首先要注意到可以二分答案,比如当 ...

  4. python3+Appium自动化08-数据配置yaml

    yaml简介 yaml是一种简洁的非标记语言.yaml以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读 由于实现简单,解析成本低,yaml特别适合在脚本语言中使用.现有的语言实现: ...

  5. springBoot学习 错误记录

    1.下面结果 会出现500错误 原因:thymeleaf相关包版本不兼容导致 解决:之前配置的3.0.9对应2.1.1&2.2.2,3.0.6对应2.2.2&2.1.1都不可以,下面的 ...

  6. JVM虚拟机 - 内存

    在JVM虚拟机中,内存部分大致可以分为以下几类: Heap:堆 NonHeap:非堆 CodeCache:缓存编辑后的机器码的内存区域 CompressedClassSpace:类压缩空间 MetaS ...

  7. 自定义HashMap的键

    用自定义的类型作为HashMap的key,必须同时重载hashCode()和equals(),才可以实现在HashMap中的查找自定义键. 例如自定义Point类: public class Poin ...

  8. ajax的jquery写法和原生写法

    一.ajax的简介 Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写).现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 同步是指: ...

  9. Python开发环境Wing IDE如何进行命令行调试

    Wing IDE专业的调试探针提供了一种强大的方法来发现和解决复杂的错误.这很像Python Shell但允许用户直接参与进已经暂停的调试程序中: 通过键入在刚才发生异常的地方键入下列数值进行尝试: ...

  10. Python学习笔记-day1(if流程控制)

    在python中,流程控制语句为强制缩进(4空格) if username=='lmc' and password=='123456': print('Welcome User {name} logi ...