【问题标题】:Can't find kubeadm token after initializing master初始化 master 后找不到 kubeadm 令牌
【发布时间】:2017-02-21 22:02:26
【问题描述】:

当我运行kubeadm init 时,它会显示一个令牌,我应该使用该令牌从其他主机连接到该主机。该令牌存储在哪里?我试图通过在 Terraform 中添加 kubeadm 来找出更多自动化方法。

感谢您的帮助!

【问题讨论】:

  • 您可以生成令牌并将其用于 init 命令。 'kubeadm token generate' 然后使用 '/usr/bin/kubeadm init --token '

标签: kubernetes kubeadm


【解决方案1】:

Kubernetes 1.9.x(及以上)的说明可以在here找到。

我使用的命令是:

kubeadm token generate
kubeadm token create <generated-token> --print-join-command --ttl=0

【讨论】:

  • 请注意,设置 TTL 更安全(或省略 -ttl 标志以设置默认 24 小时 TTL)。
【解决方案2】:

在主节点运行该命令获取token

kubeadm token list

【讨论】:

    【解决方案3】:

    --令牌

    默认情况下,kubeadm init 会自动生成用于 初始化每个新节点。如果您想手动指定这个 令牌,您可以使用 --token 标志。令牌必须是格式 ‘.’.

    您可以使用命令在主节点上查看令牌值:

    cat /etc/kubernetes/pki/tokens.csv
    

    【讨论】:

    • 谢谢!是的,就在我发布这个之后,我重新阅读了指南,这次注意到了--token 标志。这将适用于这个解决方案。我虽然检查了tokens.csv 文件,但重新检查后你是对的!谢谢!
    • 无法验证。这些文件包含一个字符串,但没有任何令牌格式。
    • 显示主令牌:'kubeadm 令牌列表'
    • 没有这样的文件
    【解决方案4】:
    kubectl -n kube-system get secret clusterinfo -o yaml | grep token-map | awk '{print $2}' | base64 -d | sed "s|{||g;s|}||g;s|:|.|g;s/\"//g;" | xargs echo
    

    【讨论】:

    • 这应该是解决方案。但是我会写 awk -F\" '{print $2 "." $4}'而不是 sed 块,因为它更具可读性。
    • 什么是clusterinfo。我怎么能找到它,因为我看到一个错误,上面写着“secrets” clusterinfo is not found.
    • 这里相同 v1.8.5 - 没有 clusterinfo 秘密
    • sudo kubeadm token list | awk 'NR == 2 {print $1}'
    【解决方案5】:

    避免创建新令牌的最佳方法是 -

    1. kubeadm token list
    2. kubeadm token create &lt;copied token from previous command output&gt;** --print-join-command

    您将获得 JOIN 命令以在任何物理/虚拟机上运行以加入 kubernetes 集群....

    【讨论】:

    • 错误。这将出现“id 为‘xxxx’的令牌已经存在”的错误
    【解决方案6】:

    尝试按照以下命令创建新令牌,因为初始令牌仅 24 小时有效。

    kubeadm token create  --ttl=0
    

    这里 ttl=0 表示,生成的令牌永远不会过期。

    然后按照以下命令加入节点:

    kubeadm join <generated_token>
    

    如果您在验证 ca 哈希时遇到任何错误,请按照以下方式加入:

    kubeadm join <generated_token> --discovery-token-unsafe-skip-ca-verification
    

    【讨论】:

      【解决方案7】:

      使用这个命令:$ sudo kubeadm token list

      不过,如果你没有得到,请使用以下命令

      $ sudo kubeadm reset
      $ sudo kubeadm init 
      

      【讨论】:

      • 否...如果您没有看到任何可用的令牌,则可能是超时了。创建另一个,而不是重置整个集群。使用kubeadm token create --print-join-command 创建令牌。
      • 说真的 - 我无法相信“如果它不起作用则重置”甚至是一个答案。
      猜你喜欢
      • 2018-09-17
      • 2020-09-24
      • 2018-12-10
      • 2019-03-07
      • 2019-08-27
      • 2019-02-02
      • 2018-04-18
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多