問題出現在版本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成功啟動