小提示:Worker 节点加入 Master 超时
  lqP1GDtwBaW3 2023年11月02日 33 0

最近在做一个 k8s 测试时,使用自定义 kubeadm yaml 配置来去创建 k8s Master 后,发现 Worker 节点无法连接到 Master,记录一下错误原因

现象:

  • Kubeadm 初始化 Master 节点正常,通过 kubectl get node 可以看到 Master 节点
  • Worker 加入 Master 时卡住超时,再次重新运行 kubeadm join 也是同样的问题
  • 为 kubeadm join 加上 -v=5 查看所有日志,会发现卡在 The cluster-info ConfigMap does not yet contain a JWS signature for token ID

具体日志截图如下:

小提示:Worker 节点加入 Master 超时_初始化

一开始以为是 Worker 侧的配置问题,后来查询资料后发现原因可能有两个:

  1. Master 节点的 Token 超时:一般 Master 安装完成后自动创建的 Token 有 24h 有效期,之后会过期,过期后 kubeadm join 则可能会报告 token 不存在,这时可以通过下列命令重新创建 token 并生成 join 命令
kubeadm token create --print-join-command
  1. Token 因为某些原因 token 没被正确加入 kube-public 命名空间的 cluster-info configmap 中。

我的问题属于第二个,在 cluster-info configmap 中只有 CA 的信息,没有 token

小提示:Worker 节点加入 Master 超时_worker无法加入master_02

正常情况下应该有一个 jws-kubeconfig token:

小提示:Worker 节点加入 Master 超时_worker无法加入master_03

最终查出来是 kube-controller-manager 这个 Pod 运行异常,反复重启(我应该早点去检查 k8s 本身的问题,而不是反复折腾 worker)。

kubectl -n kube-system get po

通过日志看到启动时发现 --node-cidr-mask-size-ipv4 参数有问题,我只设置了 ipv4 的值,没有设置 ipv6 的值。

小提示:Worker 节点加入 Master 超时_kubernetes 部署问题_04

再次查找文档后发现,如果仅是 IPv4 的集群,通过 "node-cidr-mask-size" 来设置子网掩码大小;如果是 IPv4/IPv6 双栈集群,通过 "node-cidr-mask-size-ipv4" 和 "node-cidr-mask-size-ipv6" 来设置子网掩码大小。

后来把 Master 节点的初始化配置改成下列内容后,重新部署 Master,问题得到解决:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
  podSubnet: 10.39.0.0/16
  serviceSubnet: 10.96.0.0/16
#  podSubnet: 10.39.0.0/16,2001::/64
#  serviceSubnet: 10.96.0.0/16,2002::/110
controllerManager:
  extraArgs:
    "node-cidr-mask-size": "25"
#    "node-cidr-mask-size-ipv4": "25"
#    "node-cidr-mask-size-ipv6": "80"
imageRepository: "registry.cn-hangzhou.aliyuncs.com/google_containers"
clusterName: "k8scluster1"
kubernetesVersion: "v1.22.11"
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

lqP1GDtwBaW3