• could not find a JWS signature in the cluster-info ConfigMap for token ID "qpqoq3"


    [root@localhost ~]# kubeadm join 10.10.16.82:6443 --token qpqoq3.y2lo787xtima2xaz     --discovery-token-ca-cert-hash sha256:374990d65ea0b1dd227fe68aa994fa16439d0ddf99735642eee6116d98e1b829 
    W0623 02:46:44.245577    6525 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
    [preflight] Running pre-flight checks
            [WARNING Service-Docker]: docker service is not enabled, please run 'systemctl enable docker.service'
            [WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
    error execution phase preflight: couldn't validate the identity of the API Server: could not find a JWS signature in the cluster-info ConfigMap for token ID "qpqoq3"
    To see the stack trace of this error execute with --v=5 or higher
    [root@localhost ~]# hostnamectl set-hostname centos7
    [root@localhost ~]# hostname 
    centos7
    

      

    这个问题是在kube-public下的 configmap 的 cluster-info 中没有JWS签名, 本质上是 token 过期.

    可以通过 kube config 命令查看 cluster-info 的内容:

    root@ubuntu:~# kubectl get configmap cluster-info --namespace=kube-public -o yaml
    apiVersion: v1
    data:
      kubeconfig: |
        apiVersion: v1
        clusters:
        - cluster:
            certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1EWXhPREV4TVRFeU1Wb1hEVE14TURZeE5qRXhNVEV5TVZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkcvCnIrQzh0ZjIxRGlIcG1aR1N4L0RtL295RFNXMVhMRjQzeEZPTy9Lb0djTytDZll3WVNhMWlsU3F5dDZOeGo0bDEKc05KMUdEQ2lIbERiRENVemkzbjRKeDRkRGdpaUlIUysya3ZvNUNVQm5GeGx0OWlsaWl4bTBKRE5EQitoU25lTAoxYWE5N0dIRk85OU1KTWRIVFdDZ2VHc2JUSnQzU1VEcUJtU0cvZEZuQXU2L3pnaHJiVEIreE44eXVvMDJZaEhoCnY2TE9VTGc5bFhIUldqcHB6SXo1djJQWU5Nb0I4eDBlakxMa2wydGxuOVpXTTVWa2xtMERqRnRPUlUrd1BJOUgKYXNldm1uNmVKUXZKUmQ2RFlEZXplejNZeUNZZmJaeHlOTjhVenFYRU5xeVdGNGFxR2RFVUtHVnVVMjlmWnFHTAowS1pkQ1NHckN2aHUvVUVyV0RrQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFBSVJwVVpIOWdqdllaY3U3ZnlpNDErb01odmMKRmxKNTM0bnpIZ3FoMzRhbS9tTHBlS29xVWhTSjUvWkVYQkxZdndmVklIdDF1Y1Q1UXRpZGZIeWE2amJiU0hmeAp2V2orcTNuRWhoNUIveTQydllJblRoQkt6U3JyRXBzRHQ1SENvcTU5WE1FQnhqUk5aOGxtc0J5U1lDeDd5VEVQCm90MnMrL3hhOW5PQjBVZ2pDdGNlaGMrQ0diQzUyL3VXakdzWU9BSW1nY25Mem5jeHNYdndUT0RpdU5uVGljQTUKYUxDZWluSGVWQm45YmVCYmcwZGV0dFhMRVpHbUFIS0ZidmZiVXJqR3djL1V6K2l0Tzk1V2dZRHY0QXAweVcwbQptM2ZiSVBOazd6Tmx4RmZnbWYvMVlXeTI5dkpqTWlBWkZzdzVsWUZEaVZsU056NGlqb0dqUVF6Rm94RT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
            server: https://10.10.16.82:6443
          name: ""
        contexts: null
        current-context: ""
        kind: Config
        preferences: {}
        users: null
    kind: ConfigMap
    metadata:
      creationTimestamp: "2021-06-18T11:12:35Z"
      managedFields:
      - apiVersion: v1
        fieldsType: FieldsV1
        fieldsV1:
          f:data:
            .: {}
            f:kubeconfig: {}
        manager: kubeadm
        operation: Update
        time: "2021-06-18T11:12:35Z"
      name: cluster-info
      namespace: kube-public
      resourceVersion: "211053"
      selfLink: /api/v1/namespaces/kube-public/configmaps/cluster-info
      uid: fec5b9e4-7550-44a9-97c1-acbfa230a8f3
    root@ubuntu:~# 

    当然我们也可以通过 token list 直接查看当前有效的令牌:

    $ kubeadm token list
    # 此处没有任何输出, 表明没有存活的token

    二. 解决问题

    那么如何解决呢? 我们 kubectl join 的时候, 需要2个参数: token 和 discovery-token-ca-cert-hash. 那么解决方案就是重新生成 token 和 discovery-token-ca-cert-hash.

    2.1 生成token

    首先我们通过以下命令生成一个新的 token:

    生成 token 和 hash 可以在生成token的时候加上 --print-join-command 直接打印出来. 毕竟生成 token 就是用来添加节点用的.

    root@ubuntu:~# kubeadm token create --print-join-command --ttl=0
    W0623 14:56:22.340262   44305 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
    kubeadm join 10.10.16.82:6443 --token hun613.jtnvs519jtvrjcy7     --discovery-token-ca-cert-hash sha256:374990d65ea0b1dd227fe68aa994fa16439d0ddf99735642eee6116d98e1b829 
    root@ubuntu:~# 

    其中 --ttl=0 表示生成的 token 永不失效. 如果不带 --ttl 参数, 那么默认有效时间为24小时. 在24小时内, 可以无数量限制添加 worker.

    [root@localhost ~]# kubeadm join 10.10.16.82:6443 --token hun613.jtnvs519jtvrjcy7     --discovery-token-ca-cert-hash sha256:374990d65ea0b1dd227fe68aa994fa16439d0ddf99735642eee6116d98e1b829
    W0623 02:57:11.552771    7329 join.go:346] [preflight] WARNING: JoinControlPane.controlPlane settings will be ignored when control-plane flag is not set.
    [preflight] Running pre-flight checks
            [WARNING Hostname]: hostname "centos7" could not be reached
            [WARNING Hostname]: hostname "centos7": lookup centos7 on 8.8.8.8:53: no such host
    [preflight] Reading configuration from the cluster...
    [preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
    [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.18" ConfigMap in the kube-system namespace
    [kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
    [kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
    [kubelet-start] Starting the kubelet
    [kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
    
    This node has joined the cluster:
    * Certificate signing request was sent to apiserver and a response was received.
    * The Kubelet was informed of the new secure connection details.
    
    Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
    
    [root@localhost ~]# 
  • 相关阅读:
    8.14-T1村通网(pupil)
    8.10-Day2T3 镇守府
    8.10-Day2T2 吃喝大法好
    8.10-Day2T1最小值
    8.10-DayT3游走(wander)
    8.10-Day1T2圈(circle)
    8.10-Day1T1-数字(number)
    bzoj2462: [BeiJing2011]矩阵模板
    8.7-Day1T1
    k8s高可用部署后续:SLB
  • 原文地址:https://www.cnblogs.com/dream397/p/14922802.html
Copyright © 2020-2023  润新知