docker - 无法运行Kubelet:无法创建证书签名请求:未经授权

标签 docker kubernetes ssl-certificate unauthorized

我有一个在OpenStack云提供商下运行的K8s集群。

使用 kubeadm 工具设置群集,该工具包含一个主节点和一个从属节点。

我正在尝试使用kubeadm join命令添加另一个工作程序节点,该命令显示一个肯定的响应,告诉您该节点已成功添加,但是我无法使用kubectl get nodes命令找到它。

我进行了调查,发现新的从属节点上的kubelet没有运行,显示cannot create certificate signing request: Unauthorized

-- The start-up result is done.
May 14 12:15:33 vm1 kubelet[17678]: W0514 12:15:33.715964   17678 cni.go:171] Unable to update cni config: No networks found in /etc/cni/net.d
May 14 12:15:33 vm1 kubelet[17678]: W0514 12:15:33.738398   17678 hostport_manager.go:68] The binary conntrack is not installed, this can cause failures in network connection cleanup.
May 14 12:15:33 vm1 kubelet[17678]: I0514 12:15:33.738669   17678 server.go:376] Version: v1.10.1
May 14 12:15:33 vm1 kubelet[17678]: I0514 12:15:33.738913   17678 feature_gate.go:226] feature gates: &{{} map[]}
May 14 12:15:33 vm1 kubelet[17678]: I0514 12:15:33.739222   17678 plugins.go:89] No cloud provider specified.
May 14 12:15:33 vm1 kubelet[17678]: F0514 12:15:33.784257   17678 server.go:233] failed to run Kubelet: cannot create certificate signing request: Unauthorized
May 14 12:15:33 vm1 systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
May 14 12:15:33 vm1 systemd[1]: kubelet.service: Unit entered failed state.
May 14 12:15:33 vm1 systemd[1]: kubelet.service: Failed with result 'exit-code'.

工作节点上的版本:kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.1", GitCommit:"d4ab47518836c750f9949b9e0d387f20fb92260b", GitTreeState:"clean", BuildDate:"2018-04-12T14:14:26Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
主节点上的版本:
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"10", 
GitVersion:"v1.10.1", 
GitCommit:"d4ab47518836c750f9949b9e0d387f20fb92260b", 
GitTreeState:"clean", BuildDate:"2018-04-12T14:14:26Z", 
GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

用于进行连接的命令:
  • 获取 token :kubeadm token list | awk '/The default bootstrap token/ { print $1; }'
  • 获取哈希:openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
  • 加入命令:kubeadm join --skip-preflight-checks --token {{token}} --discovery-token-ca-cert-hash sha256:{{hash}} master_ip:6443

  • 谢谢 !

    最佳答案

    您的 token 似乎已过期,但是您始终可以生成一个新 token 。

    在master上运行以下命令:

    kubeadm token generate
    

    然后在新工作线程上运行下一个命令:
    kubeadm join --token=<token> <master-ip>
    

    例:
    kubeadm join --token=858698.51d1418b0490485a 192.168.0.13
    

    关于docker - 无法运行Kubelet:无法创建证书签名请求:未经授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50330384/

    相关文章:

    Delphi TNetHTTPRequest/TNetHTTPClient 适用于 Win 10,但不适用于 Win 7

    mongodb - 从现有项目中加载docker容器,mongo将不会连接到数据库Ubuntu 18.04

    docker - 如何在gitlab-ci中缓存部署镜像?

    docker - 在Ubuntu上以VS Code运行NGC容器

    kubernetes - 如何测试 ClusterIssuer 求解器?

    go - 为什么kubetest不按照说明安装?

    postgresql - 在 Gitlab CI 中部署 helm chart 时如何修复节点主机名太长

    python-3.x - Windows 10 SSL 证书验证失败

    c++ - 如何在 Python 中复制证书身份验证 (Mumble (c/c++))?

    shell - `chmod` 不适用于 Dockerfile (macbook)