首页 > 解决方案 > 由于“等待标头错误时超时”,Kubernetes 节点无法加入主节点

问题描述

我正在尝试在 Digital Ocean 中设置具有主节点和两个工作节点的 k8s 集群。

我的配置:我创建了三个液滴,如下所示:

  1. 主控:2cpu,3GB 内存
  2. 工作节点 1:1cpu,2GB 内存
  3. 工作节点 2:1cpu,2GB 内存

我能够成功设置主节点

$ kubectl get nodes
NAME                         STATUS   ROLES    AGE    VERSION
master                       Ready    master   139m   v1.18.3

我无法将工人添加到主人。

我跑去加入的命令:

$ kubeadm join <PUBLIC IP>:6443 --token <token> --discovery-token-ca-cert-hash <hash>

执行上述命令时,令牌还有 23 小时的有效期。

我得到的错误:

W0528 14:13:09.920404 25129 join.go:346] [preflight] 警告:未设置控制平面标志时,将忽略 JoinControlPane.controlPlane 设置。

[预检] 运行预检错误执行阶段预检:无法验证 API 服务器的身份:获取https://PUBLIC_IP:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout =10s : net/http: 等待连接时请求被取消(等待标头时超出 Client.Timeout) 要查看此错误的堆栈跟踪,请使用 --v=5 或更高版本执行

我对这个问题的看法:

$ netstat -pnltu
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:40389         0.0.0.0:*               LISTEN      25074/kubelet       
tcp        0      0 127.0.0.1:10248         0.0.0.0:*               LISTEN      25074/kubelet       
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      25478/kube-proxy 
tcp        0      0 127.0.0.1:9099          0.0.0.0:*               LISTEN      29823/calico-node
tcp        0      0 127.0.0.1:10257         0.0.0.0:*               LISTEN      24580/kube-controll 
tcp        0      0 127.0.0.1:10259         0.0.0.0:*               LISTEN      24742/kube-schedule
tcp6       0      0 :::10250                :::*                    LISTEN      25074/kubelet       
tcp6       0      0 :::10251                :::*                    LISTEN      24742/kube-schedule 
tcp6       0      0 :::6443                 :::*                    LISTEN      24725/kube-apiserve 
tcp6       0      0 :::10252                :::*                    LISTEN      24580/kube-controll 
tcp6       0      0 :::10256                :::*                    LISTEN      25478/kube-proxy 

是因为 API 服务正在侦听 IPV6 而不是 IPV4?

这是集群信息的输出:

$ kubectl cluster-info
Kubernetes master is running at https://<PUBLIC_IP>:6443
KubeDNS is running at https://<PUBLIC_IP>:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

非常感谢解决此问题的任何帮助。

标签: kubernetesdigital-oceankubeadm

解决方案


推荐阅读