• kube-apiserver

配置文件:/etc/kubernetes/apiserver

KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"

KUBE_API_PORT="--port=8080"

KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"

KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota,ServiceAccount"

KUBE_API_ARGS=""

Configure Service Accounts for Pods

ServiceAccount给运行在Pod中的进程提供一个身份。

若要详细了解,需要参考文档https://kubernetes.io/docs/admin/service-accounts-admin/

注:这篇文章描述了ServiceAccount在Kubernetes集群中的表现方式。你的集群管理员可能有自定义的表现在你自己的集群中,所以在某些情景下面,这篇文档并不符合。

当你可以进入到集群(kubectl),你将被apiserver认定为一个特殊的用户(admin,除非你的集群管理员有自定义了集群的某些设置),在Pod中的容器中的进程也可以与apiserver通信,当他们通信的时候,他们将被认定为一个特殊的ServiceAccount(default)。

Use the Default Service Account to access the API server

当你创建一个Pod并没有指定一个service account,它将自动的为Pod在相同的namespace中分配default service account。当你截取你所创建的Pod信息为json或yaml格式输出(例如:kubectl get pods/podname -o yaml ),你将会看到spec.serviceAccountName字段被自动的设置。

Pod可以使用自动挂载的service account凭证来获取访问API的权限,就如在访问集群的时候一样。service account的权限取决于在用的认证插件及策略。

在1.6版本以后,你可以通过设置automountServiceAccountToken:false对某个service account不加载API凭证:

apiVersion: v1

kind:ServiceAccount

metadata:

name:build-robot

automountServiceAccountToken:false

在1.6版本之后,你可以选择不加载API凭据到一个特殊的Pod中:

apiVersion:v1

kind:Pod

metadata:

name:my-pod

spec:

serviceAccountName:build-robot

automountServiceAccountToken:false

如果在Pod和ServiceAccout中均设置的automountServiceAccountToken,在Pod的sepc中设置的优先于在service account。

Use Multiple Service Accounts

每一个namespace都有一个默认的service account(default),可以通过如下命令来列出相应namespace下的所有service account:

  • kubectl get serviceAccount

你也可以创建额外的ServiceAccount如:

  • cat serviceaccount.yaml

apiVersion:v1

kind:ServiceAccount

metadata:

name:build-robot

  • kubectl create -f serviceaccount.yaml

如果你查看一个完整的serviceaccount,如下:

$ kubectl get serviceaccounts/build-robot -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2015-06-16T00:12:59Z
name: build-robot
namespace: default
resourceVersion: "272500"
selfLink: /api/v1/namespaces/default/serviceaccounts/build-robot
uid: 721ab723-13bc-11e5-aec2-42010af0021e
secrets:
- name: build-robot-token-bvbk5

通过上面的信息就可以发现,一个令牌被自动创建生成并被ServiceAccount引用。

你也可以通过认证插件来设置service account的权限。

如果你不想使用默认的service account,只需要在spec.serviceAccountName字段设置你想使用的serviceaccount的名字就可以了。

可以通过如下命令对serviceaccount进行清除:

  • kubectl delete serviceaccount/build-robot

Manaually create a service account API token

假如有一个已经存在的service account叫“build-robot”,我们手动创建一个新的secret。

  • cat build-robot-secret.yaml

apiVersion: v1

kind:Secret

metadata:

name:build-robot-secret

annotations:

kubernetes.io/service-account.name:build-robot

type:kubernetes.io/service-account-token

  • kubectl create -f build-robot-secret.yaml

现在你可以确认新构建的secret使用了build-robot的service account的API令牌。

不存在的service account的任何令牌都将被令牌控制器清理。

  • kubectl describe secrets/build-robot-secret
$ kubectl describe secrets/build-robot-secret
Name: build-robot-secret
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name=build-robot
kubernetes.io/service-account.uid=da68f9c6-9d26-11e7-b84e-002dc52800da Type: kubernetes.io/service-account-token Data
====
ca.crt: 1338 bytes
namespace: 7 bytes
token: ...

注:此处令牌的内容被省略

Add ImagePullSecret to a service account

首先创建一个imagePullSecret,然后再验证他被创建。

  • kubectl get secrets myregistrykey
  • kubectl patch serviceaccount default -p ‘{“imagePullSecrets”:[{"name":myregistrykey}]}’

上面的命令则是修改一个namespace默认的service account,使其用这个secret作为一个imagePullSecret。

互动版本需要手动编辑:

  • kubectl get serviceaccounts default -o yaml > ./sa.yaml
  • cat sa.yaml

apiVersion: v1

kind: ServiceAccount

metadata:

creationTimestamp: 2017-11-20T22:23:33Z

name: default

namespace: default

resourceVersion: "243024"

selfLink: /api/v1/namespace/default/serviceaccounts/default

uid: 3ee3453r-3erfd-112e-33rf-dfgt5678ujyh

secrets:

- name: default-token-uudge

  • vi sa.yaml

[editor session not shown]

[delete line with key "resourceVersion"]

[add lines with "imagePullSecret:"]

  • cat sa.yaml

apiVersion: v1

kind: ServiceAccount

metadata:

creationTimestamp: 2017-11-20T22:23:33Z

name: default

namespace: default

resourceVersion: "243024"

selfLink: /api/v1/namespace/default/serviceaccounts/default

uid: 3ee3453r-3erfd-112e-33rf-dfgt5678ujyh

secrets:

- name: default-token-uudge

imagePullSecrets:

- name: myregistrykey

在这个namespace中任何创建的新的pods将会加上这个imagePullSecrets。

spec:

imagePullSecrets:

- name: myregistrykey

Kubernetes-Service Account的更多相关文章

  1. Kubernetes Service Account如何生成Token

    Service Account是运行pods用到的帐号,默认是default.如果apiserver启动配置--admission-control=ServiceAccount,Service Acc ...

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

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

  3. kubernetes的Service Account和secret

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

  4. Service Account和RBAC授权

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

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

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

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

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

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

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

  8. k8s的认证和service account简述

    k8s的认证: 与API server通信的客户端大致有两类:  1.集群客户端工具(kubectl.kubeadm.kubelet等)  2.集群内pod. 任何客户端访问k8s时的过程:  1.认 ...

  9. SQL Server 2012 Managed Service Account

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

  10. SSRS2:Reporting Service 配置Service Account

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

随机推荐

  1. Blob, Uint8Aray, atob/btoa in lt IE9 browser

    Blob, Uint8Aray, atob/btoa in lt IE9 browser 标签(空格分隔): compatibility 之前写的代码全部在Chrome调试,用IE打开发现各种问题. ...

  2. 6.Zabbix 3.0 MySQL 监控

    请查看我的有道云笔记: http://note.youdao.com/noteshare?id=94cd760a4848939d33892b7464cc0401&sub=8B6EDD27671 ...

  3. oracle spatial下对wkt字符串操作遇到srid的解决方案

    <span style="font-size:18px;">select fid from vgnss where SDO_WITHIN_DISTANCE(geom,  ...

  4. POJ-3104 Drying---二分答案判断是否可行

    题目链接: https://cn.vjudge.net/problem/POJ-3104 题目大意: 有一些衣服,每件衣服有一定水量,有一个烘干机,每次可以烘一件衣服,每分钟可以烘掉k滴水.每件衣服每 ...

  5. Android(java)学习笔记45:深入分析Java ClassLoader原理

    1. 前言: Android中的动态加载机制能更好的优化我们的应用,同时实现动态的更新,这就便于我们管理我们的应用,通过插件化来减轻我们的内存以及CPU消耗,在不发布新版本的情况下能更新某些模块. 当 ...

  6. hdu 6243,6247

    题意:n只狗,n个笼子,每个笼子只能有一只,求不在自己笼子的狗的数量的期望. 分析:概率是相等的,可以直接用方案数代替,k 不在自己的笼子的方案数是 n!- (n-1)!,这样的k有n个,总的方案数n ...

  7. 关于APIT定位算法的讨论

    关于APIT定位算法的讨论 [摘要]   无线传感器网络节点定位机制的研究中,基于距离无关的定位技术得到快速发展,其中基于重叠区域的APIT定位技术在实际环境中的定位精度高,被广泛研究和应用. [关键 ...

  8. Wannafly挑战赛1,2

    做了好久了,今天大佬讲题,好厉害,弱鸡只会几道水题. Treepath 给定一棵n个点的树,问其中有多少条长度为偶数的路径.路径的长度为经过的边的条数.x到y与y到x被视为同一条路径.路径的起点与终点 ...

  9. Python的基本库与第三方库

    一:Python 模块,包,库的概念理解: 1.python模块是: python模块:包含并且有组织的代码片段为模块. 表现形式为:写的代码保存为文件.这个文件就是一个模块.sample.py 其中 ...

  10. caffe整体框架的学习的博客,这个博客山寨了一个caffe框架

    http://www.cnblogs.com/neopenx/default.html?page=1 这个博主很牛逼,写的东西也很好,多学学,无论是对框架,还是对自己学习c++帮助都非常大