k8s踩坑記 - kubeadm join 之 token 失效

拋磚引玉

環境node

  • centos 7 amd64 兩臺
  • kubernetes 1.10

伴隨着k8s1.10版本的發佈,前天先在一臺機器上搭建了k8s單機版集羣,即既是master,也是node,按照經驗,將 kubeadm init 提示的 kubeadm join 記錄下來,方便將來新增集羣集工做節點(機器)時,能夠直接複用,緊接着就部署dashboard、heapster、ElasticSearch、Redis、dotnet 微服務等等,一鼓作氣,集羣狀態良好,由於以前測試環境搞過k8s,呵呵 ...... 。過了兩天公司購買的第二胎服務器到了,那麼就順其天然的在上面執行以前記錄的 kubeadm join 腳本,結果以下:git


看到這個提示信息,我徹底100%地相信,node 已經加入集羣,而且只要等一下子,經過 kubectl get nodes 就能夠看到 node is ready,嘿嘿
過一下子,又過一會,再過一下子 ...... ,但是
程序員

西天取經,歷經九九八十一難

而後,開啓重試模式,發揚程序員不掘不撓的傳統精神:github

  1. kubectl reset
  2. kubectl join ......
  3. kubectl get nodes

進入重試死循環N次,耐性真好,哈哈。明明提示 This node has joined the cluster ,爲何實際狀況是這樣呢,難道這就是理想和現實的差距,其實這就是 ,out了吧。我想了又想,看了又看,沒有一點點錯誤、警告之類的信息,無從下手啊,腫麼辦呢,最後仍是把關注點放在了kubelet(誰叫你是 node agent,確定拿你開刀啊,呵呵)上,因而開始查看kuberlet的日誌:docker

看到了吧centos

error: failed to run Kubelet: failed to create kubelet:
misconfiguration: kubelet cgroup driver: "cgroupfs" is different from docker cgroup driver: "systemd"
原來這個小問題啊,哎。。。。。。,我又再一次相信了這個k8s的提示信息,而後開始修正bug了服務器

信了你的邪哦,爲何 kubelet cgroup driverdocker cgroup driver 如出一轍,剛剛,kubelet 日誌裏面不是。。。明明。。。卻。。。,淡定,這多是幻覺,好吧。到底什麼是真的,什麼是假的,能不能給一個準確的提示信息,既然也不是kubelet的問題,又是最新的版本,也沒有資料可查,當下實在沒轍了,那就去 kubernets#62776Issues吧,因而乎,就這樣下班了。。。。微服務

次日,第一件事情就是查看昨天提的問題是否有人回答了,結果看到被一個印度阿三給關閉了學習

哎,和昨天預料的結果一眼,好像有點諸葛了吧,嘿嘿,那仍是靠本身吧,又想了又想,看了又看,真的是沒有一點點防備啊,期間檢查了 kubeadmkubectlkubelet,也查看來了各類配置;也想過是否是master提早安裝的一些東西影響了,由於之前都是 kubeadm init 後,而後就立刻 ·kubeadm join;還想過是否是環境的問題,由於以前的測試環境一直是Ubuntu 16.4,如今的主機環境是 CentOS 7。本想着今天上午,搞不定,就按照測試環境的步驟,重來來過,而後,仍是不願放棄(天生就是當程序員的料子啊,就是頭有點冷,呵呵),因而從另外的角度去思考,懷疑是否是記錄的 'kube join token=.... ',有問題啊(以前爲何沒懷疑,是由於我是直接複製 kubeadm init 打印出來的原生腳本,並且測試環境一點問題都沒有。),因而開始順藤摸瓜,排查第一個參數 token,執行命令 kubeadm token list測試

修成正果,立地成佛

真是拋開雲霧見天明,不容易啊,衆裏尋她千百度,原來她在燈火闌珊處。。。。。哎,不去搞文學,惋惜了,呵呵。
因而乎,經過 kubeadm create token 從新建立了一個 token,而後,從新執行 kubeadm join,再次查看 kubectl get nodes

成功了,終於成功了,這是搞 kubernetes 以來,踩的最迷糊的一次坑,最後本身回答了本身的 kubernets#62776 ,順便也給kubernetes 提了一下建議,但願提示信息可以準確些,他們的一小步,就是咱們的一大步啊。。。。。

普惠

默認狀況下,經過 kubeadm create token 建立的 token ,過時時間是24小時,這就是爲何過了一天沒法再次使用以前記錄的 kube join 原生腳本的緣由,也能夠運行 kubeadm token create --ttl 0生成一個永不過時的 token,詳情請參考:kubeadm-token,瞭解了緣由纔可以觸類旁通,帶着思考學習k8s,纔不會以爲乏味,但願把這個分享給你們,更但願把整個思考過程分享給你們,每每結果很簡單,過程確如同西天取經,只要是程序員,都有同感吧。若是有什麼疑問,或者想要交流的東西歡迎評論區留言,樓主會一一回復的哦。

若是你以爲本篇文章對您有幫助的話,感謝您的【推薦】,這將成爲我繼續寫做的動力

若是你對 kubernets 和 dotnet 感興趣的話能夠關注我,我會按期的在博客分享個人學習心得

相關文章
相關標籤/搜索