|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
k3s 词元
K3s 使用词元来保护节点加入过程,并加密持久化到数据存储中的机密信息。词元用于验证集群对加入节点的身份,以及加入节点对集群的身份。
词元格式
K3s 词元可以以安全格式或简短格式指定。安全格式是首选,因为它使客户端能够在发送凭据之前验证其要加入的集群的身份。
安全
安全词元格式(有时称为 "完整" 词元)包含以下部分:
<prefix><cluster CA hash>::<credentials>
-
prefix:一个固定的K10前缀,用于标识词元格式 -
cluster CA hash:集群服务器 CA 证书的哈希值,用于验证服务器与加入节点之间的身份。-
对于自签名 CA 证书,这是存储在磁盘上的 PEM 格式证书的 SHA256 摘要。
-
对于自定义 CA 证书,这是根证书的 DER 编码的 SHA256 摘要;通常称为证书指纹。
-
-
credentials:用于验证加入节点与集群之间身份的用户名和密码或词元。
短
短词元格式仅包括用于验证加入节点与集群之间身份的密码或词元。
如果使用短词元,加入节点会隐式信任服务器提供的 CA 包;TLS 启动过程中的步骤 2-4 被跳过。初始连接可能会受到 中间人 攻击的威胁。
令牌类型
K3s 支持三种类型的词元。默认情况下,仅提供服务器词元;其他词元类型必须由管理员配置或创建。
| 类型 | CLI 选项 | 环境变量 |
|---|---|---|
服务器 |
|
|
代理 |
|
|
引导 |
|
|
服务器
如果在集群中启动第一个服务器时未提供词元,则会创建一个随机密码的词元。服务器词元始终以安全格式写入 /var/lib/rancher/k3s/server/token。
服务器词元可用于将服务器和代理节点加入集群。任何拥有服务器词元的人基本上都拥有对集群的完全管理员访问权限。此词元应谨慎保管。
服务器词元还用作 PBKDF2 密码短语,以加密持久化到称为启动数据的数据存储中的机密信息。启动数据对于设置新的服务器节点或从快照恢复至关重要。因此,词元必须与集群数据存储本身一起备份。
|
除非使用自定义 CA 证书,否则在启动集群中的第一个服务器时只能使用短(仅密码)词元格式。这是因为在服务器生成自签名集群 CA 证书之前,无法知道集群 CA 哈希。 |
有关使用自定义 CA 证书的更多信息,请参见 k3s certificate 文档。
有关备份集群的更多信息,请参见 备份和恢复 文档。
k3s 词元
k3s词元CLI工具处理:
-
启动词元的生命周期,使用与`kubeadm token`启动词元相同的生成和验证代码。请注意,这两个 CLI 是相似的。
-
服务器词元的轮换
NAME: k3s token - Manage tokens USAGE: k3s token command [command options] [arguments...] COMMANDS: create Create bootstrap tokens on the server delete Delete bootstrap tokens on the server generate Generate and print a bootstrap token, but do not create it on the server list List bootstrap tokens on the server rotate Rotate original server token with a new token OPTIONS: --help, -h show help
k3s token create [token]
创建一个新词元。`[token]`是实际要写入的词元,由`k3s token generate`生成。如果未提供词元,将生成一个随机词元。
以安全格式写入的词元,包括集群CA哈希,将输出到标准输出。此命令的输出应保存,因为词元的秘密部分无法再次显示。
| 标志 | 说明 |
|---|---|
`--data-dir`值 |
用于保存状态的文件夹(默认:/var/lib/rancher/k3s或${HOME}/.rancher/k3s,如果不是root) |
`--kubeconfig`值 |
要连接的服务器[$KUBECONFIG] |
`--description`值 |
对该词元使用方式的友好描述 |
`--groups`值 |
当用于身份验证时,此词元将作为额外组进行身份验证。(默认:默认: "system:bootstrappers:k3s:default-node-token") |
`--ttl`值 |
词元自动删除之前的持续时间(例如:1s, 2m, 3h)。如果设置为 '0',则词元将永远不会过期(默认:24h0m0s) |
`--usages`值 |
描述此词元可以使用的方式。(默认:"签名,认证") |
k3s token delete
删除一个或多个词元。可以提供完整的词元,或仅提供词元 ID。
| 标志 | 说明 |
|---|---|
`--data-dir`值 |
用于保存状态的文件夹(默认:/var/lib/rancher/k3s或${HOME}/.rancher/k3s,如果不是root) |
`--kubeconfig`值 |
要连接的服务器[$KUBECONFIG] |
k3s token generate
生成一个随机生成的启动词元。
您不必使用此命令来生成词元。只要格式为 [a-z0-9]{6}.[a-z0-9]{16},您可以自己完成,其中第一部分是词元 ID,第二部分是密钥。
| 标志 | 说明 |
|---|---|
`--data-dir`值 |
用于保存状态的文件夹(默认:/var/lib/rancher/k3s或${HOME}/.rancher/k3s,如果不是root) |
`--kubeconfig`值 |
要连接的服务器[$KUBECONFIG] |
k3s token list
列出启动词元,显示其 ID、描述和剩余生存时间。
| 标志 | 说明 |
|---|---|
`--data-dir`值 |
用于保存状态的文件夹(默认:/var/lib/rancher/k3s或${HOME}/.rancher/k3s,如果不是root) |
`--kubeconfig`值 |
要连接的服务器[$KUBECONFIG] |
`--output`值 |
输出格式。有效选项:文本,json(默认:"文本") |
k3s token rotate
|
版本门控
自2023年10月发布以来可用(v1.28.2+k3s1,v1.27.7+k3s1,v1.26.10+k3s1,v1.25.15+k3s1)。 |
用新服务器词元旋转原始服务器词元。运行此命令后,所有服务器和任何最初使用旧词元加入的代理必须使用新词元重新启动。
如果您未指定新词元,将为您生成一个。
| 标志 | 说明 |
|---|---|
`--data-dir`值 |
用于保存状态的文件夹(默认:/var/lib/rancher/k3s或${HOME}/.rancher/k3s,如果不是root) |
`--kubeconfig`值 |
要连接的服务器[$KUBECONFIG] |
`--server`值 |
要连接的服务器(默认:"https://127.0.0.1:6443")[$K3S_URL] |
`--token`值 |
用于将服务器或代理加入集群的现有词元 [$K3S_TOKEN] |
`--new-token`值 |
替换现有词元的新词元 |
|
在旋转之前拍摄的快照在恢复集群时将需要旧服务器词元。 |