问题出现在版本1.22和1.21中,同样的配置在1.19和1.20版本中成功配置没有问题。
kubeadm init
初始化后提示成功,在master第二个节点 kubeadm join
时提示
could not find a JWS signature
于是回到第一个master上看一下cluster info信息
kubectl get configmap cluster-info --namespace=kube-public -o yaml
非常奇怪的是没有jws段,jws是一个证书的签名用来验证证书的token,这里提一下它并不安全最好不要用于所有节点,可以通过kubeadm create token xxx
来创建。
没有jws段那么判断没有生效的token,但是用
kubeadm token list
可以看到token全部正常有效,这个问题就很奇怪了。
在阅读bootstrap-tokens鉴权和kubeadm实现细节后发现,原来cluster info中的aws需要在kube-controller-manager
运行后创建。
这时才发现kube-controller-manager的pod没有起来,我们知道kubeadm文档中说过如果init后pod有没有成功生效的那么就要发issue证明是kubeadm坏了,这个判断大概率不成立,肯定是kubeadm配置错误。
kubectl describe kube-controller-manager -nkube-system
kubectl logs -n kube-system kube-controller-manager
后提示:
Error: unknown flag: --horizontal-pod-autoscaler-use-rest-clients
原来1.21的kube-controller-manager不再支持这个参数。
去掉后pod成功启动