必须符合正则表达式 [a-z0-9]{6}\.[a-z0-9]{16}
kube-apiserver
使用--enable-bootstrap-token-auth=true
选项启动
system:bootstrap:<token id>
并且是组 system:bootstrappers
的成员。额外的组信息可以通过 Secret 来设置。tokencleaner
控制器来删除。每个合法的令牌背后对应着 kube-system
名字空间中的某个 Secret 对象。Secret 数据总是采用 Base64 编码来存储
apiVersion: v1
kind: Secret
metadata:
# name 必须是 "bootstrap-token-<token id>" 格式的
name: bootstrap-token-07401b
namespace: kube-system
# type 必须是 ‘bootstrap.kubernetes.io/token‘
type: bootstrap.kubernetes.io/token
stringData:
# 供人阅读的描述,可选。
description: "The default bootstrap token generated by ‘kubeadm init‘."
# 令牌 ID 和秘密信息,必需。
token-id: 07401b
token-secret: base64(f395accd246ae52d)
# 可选的过期时间字段
expiration: "2017-03-10T03:22:11Z"
# 允许的用法
usage-bootstrap-authentication: "true"
usage-bootstrap-signing: "true"
# 令牌要认证为的额外组,必须以 "system:bootstrappers:" 开头
auth-extra-groups: system:bootstrappers:worker,system:bootstrappers:ingress
Secret 的类型必须是 bootstrap.kubernetes.io/token
,而且名字必须是 bootstrap-token-
。 令牌必须存在于 kube-system
名字空间中。
usage-bootstrap-*
成员表明这个 Secret 的用途。启用时,值必须设置为 true
。
usage-bootstrap-authentication
表示令牌可以作为持有者令牌用于 API 服务器的身份认证。usage-bootstrap-signing
表示令牌可被用于 cluster-info
ConfigMap 的签名, 就像下面描述的那样。expiration
字段控制令牌的失效期。过期的令牌在用于身份认证时会被拒绝,在用于 ConfigMap 签名时会被忽略。 过期时间值是遵循 RFC3339 进行编码的 UTC 时间。 启用 TokenCleaner 控制器会自动删除过期的令牌
# 显示
kubeadm token list
# 打印并生成规定格式的令牌
[root@k8s-master01 bin]# kubeadm token generate
nkp60x.mcsn25irqqg9oe2p
[root@k8s-master01 bin]#
cat token.csv
02b50b05283e98dd0fd71db496ef01e8,kubelet-bootstrap,10001,"system:bootstrappers"
# 使用下面的命令生成 token.csv 第一部分的内容: 02b50b05283e98dd0fd71db496ef01e8
head -c 16 /dev/urandom | od -An -t x | tr -d ‘ ‘
"system:bootstrappers"
kube-apiserver 使用 --token-auth-file=FILENAME
选项启动服务
apiserver读取该文件的提取持有者令牌,令牌长期有效,在不重启apiserver的情况下,无法更改令牌列值
kubeconfig
文件bootstrap-kubeconfig
文件bootstrap-kubeconfig
启动引导文件,从中获得 API Server的 URL 和用途有限的 一个“令牌(Token)”kubernetes.io/kube-apiserver-client-kubelet
kubectl
来批复该 CSRkubeconfig
,其中包含密钥和已签名的证书原文:https://www.cnblogs.com/binliubiao/p/14856150.html