kubeadm token 命令使用指南
一、kubeadm token 命令详解
-
命令概述
kubeadm token 命令用于管理 Kubernetes 集群的引导令牌(bootstrap tokens)。这些令牌在节点加入集群时建立客户端与服务器之间的双向信任关系,
是高级用例中的可选组件。 -
引导令牌的作用
建立信任:当客户端(如即将加入集群的节点)需要信任与之通信的服务器时,可使用具有“签名”用途的引导令牌。
短期认证:引导令牌还可作为向 API 服务器进行短期认证的方式,例如用于 TLS 引导过程。 -
引导令牌的具体信息
Secret 类型:引导令牌是存储在 kube-system 命名空间中的类型为 “bootstrap.kubernetes.io/token” 的 Secret。
格式要求:令牌必须遵循 “a-z0-9]{6}.a-z0-9]{16}” 的格式。前半部分是公共令牌 ID,后半部分是令牌密钥,必须严格保密。
Secret 名称:Secret 的名称必须为 “bootstrap-token-(token-id)”。 -
可用子命令
create:在服务器上创建引导令牌。
delete:在服务器上删除引导令牌。
generate:生成并打印引导令牌,但不在服务器上创建它。
list:列出服务器上的所有引导令 -
使用示例
查看帮助信息:通过 kubeadm token -h 查看命令的简要说明及可用子命令。
创建令牌:使用 kubeadm token create 命令在服务器上创建新的引导令牌。
删除令牌:通过指定令牌 ID 或 Secret 名称,使用 kubeadm token delete 命令删除特定的引导令牌。
生成令牌:运行 kubeadm token generate 命令生成一个新的引导令牌,但不会将其存储在服务器上。
列出令牌:使用 kubeadm token list 命令查看服务器上所有现有的引导令牌。
二、创建加入集群的令牌
1. 命令核心功能
用于创建 Kubernetes 集群的引导令牌(Bootstrap Token),支持以下核心能力:
生成随机令牌(默认)或指定自定义令牌
控制令牌有效期(TTL)
定义令牌用途(签名、认证)
直接生成节点加入命令(–print-join-command)
二、关键参数解析
kubeadm token create -h
--ttl 令牌有效期 2h30m、0(永不过期) 24h
--usages 令牌用途(逗号分隔) signing,authentication [signing,authentication]
--groups 认证组(RBAC 权限关联) system:bootstrappers:worker-nodes system:bootstrappers:kubeadm:default-node-token
--description 人类可读的令牌描述 "Auto-scaling worker token" -
--print-join-command 输出完整的节点加入命令 true false
--certificate-key 控制平面加入时的证书密钥(需配合 --print-join-command) 7a3f...d82c -
三、典型场景操作示例
场景 1:创建普通工作节点令牌(有效期 2 小时)
kubeadm token create --ttl=2h --description="Worker node onboarding"
执行输出
root@k8s-master01:~# kubeadm token create --ttl=2h --description="Worker node onboarding"
xwt3zf.zhum519ch1hrn5ir
root@k8s-master01:~# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
abcdef.0123456789abcdef <forever> <never> authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
xwt3zf.zhum519ch1hrn5ir 1h 2025-04-04T03:51:31Z authentication,signing Worker node onboarding system:bootstrappers:kubeadm:default-node-token
场景 2:创建控制平面节点令牌(需证书密钥)
# 生成证书密钥(在控制平面节点执行)
kubeadm init phase upload-certs --upload-certs
# 创建令牌并输出加入命令
kubeadm token create --ttl=1h \
--certificate-key=7a3f...d82c \
--print-join-command
执行输出
步骤1
root@k8s-master01:~# kubeadm init phase upload-certs --upload-certs
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
12b19772aaea4b390607ea0a9c292ac4cc6a140fdfdb3c082ff384c379010c95
步骤2
root@k8s-master01:~# kubeadm token create --ttl=1h \
> --certificate-key=12b19772aaea4b390607ea0a9c292ac4cc6a140fdfdb3c082ff384c379010c95 \
> --print-join-command
kubeadm join 10.62.1.180:8443 --token 32yq2v.o3f04itiwo4hju5o --discovery-token-ca-cert-hash sha256:ddf7eba18b7422823b475f7feb1dad2b2f03daab67abebbe51c957df350b476e --control-plane --certificate-key 12b19772aaea4b390607ea0a9c292ac4cc6a140fdfdb3c082ff384c379010c95
后续将生成kubeadm join 命令用于集群master 节点加入使用
场景 3:创建永久令牌(用于 CI/CD 流水线)
kubeadm token create --ttl=0 \
--usages=authentication \
--groups=system:bootstrappers:ci-pipeline
执行输出
root@k8s-master01:~# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION
d73f8z.6uj2kx5h8nxiv93x <forever> <never> authentication <none> system:bootstrappers:ci-pipeline
四、安全操作规范
1.令牌生命周期管理
# 查看所有令牌
kubeadm token list
# 删除过期令牌
kubeadm token delete d73f8z.6uj2kx5h8nxiv93x
bootstrap token "d73f8z" deleted
2.证书密钥保护
# 加密存储证书密钥
echo "7a3f...d82c" | gpg --encrypt -r admin@example.com > cert-key.gpg
3.最小权限原则
# RBAC 配置示例(绑定到特定组)
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: node-auto-approve-csr
subjects:
- kind: Group
name: system:bootstrappers:worker-nodes
roleRef:
kind: ClusterRole
name: system:certificates.k8s.io:certificatesigningrequests:nodeclient
- 调试技巧
查看令牌 Secret 详情
kubectl -n kube-system get secret/bootstrap-token-abcdef -o yaml
五、参数组合参考表
操作目标 推荐参数组合
临时维护令牌 --ttl=15m --description=“Emergency maintenance”
自动扩缩容 --ttl=0 --groups=system:bootstrappers:autoscaler
多控制平面部署 --print-join-command --certificate-key=
受限用途令牌 --usages=signing --groups=system:bootstrappers:auditroups=system:bootstrappers:autoscaler
多控制平面部署 --print-join-command --certificate-key=
受限用途令牌 --usages=signing --groups=system:bootstrappers:audit