日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

为什么Kubernetes从节点会join失败

發布時間:2023/12/4 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么Kubernetes从节点会join失败 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有段時間沒有鼓搗Kubernetes了,今天重置Kubernetes集群后,slave節點不能加入master節點了,我把問題和解決方案分享給大家。

我本地的Kubernetes集群包括一個主節點和一個從節點,如下圖:

問題

主節點啟動后,從節點加入,命令如下:

kubeadm?join?192.168.59.149:6443?--token?nf2hbm.h1d67djxey0jv90h?--discovery-token-ca-cert-hash?sha256:12e71102d6f44c85c1717079f26c36a706cb11894c36af6d055fa39036e805ae

等了一段時間后,報了下面的錯誤:

error?execution?phase?preflight:?couldn't?validate?the?identity?of?the?API?Server:?abort?connecting?to?API?servers?after?timeout?of?5m0s

日志不夠完整,在命令后面加 --v=5,重新執行來查看詳細日志,發現下面這個失敗日志反復打印:

Failed to request cluster info:?[Get https://192.168.59.149:6443/api/v1/namespaces/kube-public/configmaps/cluster-info?timeout=10s: x509: certificate has expired or is not yet valid。

問題排查

token過期

首先想到的是token過期,查看token,命令和輸出如下:

[root@master?~]#?kubeadm?token?list failed?to?list?bootstrap?tokens:?Get?https://192.168.59.149:6443/api/v1/namespaces/kube-system/secrets?fieldSelector=type%3Dbootstrap.kubernetes.io%2Ftoken:?x509:?certificate?signed?by?unknown?authority?(possibly?because?of?"crypto/rsa:?verification?error"?while?trying?to?verify?candidate?authority?certificate?"kubernetes")

這個輸出有點詭異,網上說是內存不夠了,我查看了內存,并不緊張:

[root@master?~]#?free?-htotal????????used????????free??????shared??buff/cache???available Mem:???????????3.7G????????1.1G????????132M?????????30M????????2.4G????????2.1G Swap:????????????0B??????????0B??????????0B

仔細查看了輸出,有個x509,想起了以前的解決方法,執行下面三個命令:

mkdir?-p?$HOME/.kube sudo?cp?-i?/etc/kubernetes/admin.conf?$HOME/.kube/config sudo?chown?$(id?-u):$(id?-g)?$HOME/.kube/config

再次查看token,可以了,輸出如下:

kubeadm?token?list TOKEN?????????????????????TTL???????EXPIRES?????????????????????USAGES???????????????????DESCRIPTION????????????????????????????????????????????????EXTRA?GROUPS o898hy.0y2s6cqsidpwmbkh???23h???????2021-05-10T23:26:55+08:00???authentication,signing???The?default?bootstrap?token?generated?by?'kubeadm?init'.???system:bootstrappers:kubeadm:default-node-token

重新生成token和秘鑰,命令和輸出如下:

[root@master?~]#?kubeadm?token?create nf2hbm.h1d67djxey0jv90h [root@master?~]#?openssl?x509?-pubkey?-in?/etc/kubernetes/pki/ca.crt?|?openssl?rsa?-pubin?-outform?der?2>/dev/null?|?openssl?dgst?-sha256?-hex?|?sed?'s/^.*?//' 12e71102d6f44c85c1717079f26c36a706cb11894c36af6d055fa39036e805ae

生成后,在從節點上用新的token和秘鑰繼續執行加入命令,問題依舊。

時間問題

Kubernetes的token有效期是24小時,但是秘鑰是新生成的,不可能過期。

那是不是系統時間有問題?查看了一下系統時間,果然找到了貓膩。系統時間如下:

主節點系統時間:

[root@master?~]#?date 2021年?05月?10日?星期一?07:22:42?CST

從節點系統時間:

[root@worker1?~]#?date Sun?May??9?11:22:28?EDT?2021

主節點的時間晚于從節點,這就是問題所在。

解決問題

在主節點和從節點執行如下命令:

[root@master?~]#?ntpdate?ntp1.aliyun.com9?May?23:23:00?ntpdate[39100]:?step?time?server?120.25.115.20?offset?-28801.403856?sec[root@worker1?~]#?ntpdate?ntp1.aliyun.com9?May?11:23:18?ntpdate[22420]:?adjust?time?server?120.25.115.20?offset?-0.001241?sec

這下時間一致了。

重新生成token和秘鑰,問題解決。

最后,如果對你有幫助,歡迎給個再看。

總結

以上是生活随笔為你收集整理的为什么Kubernetes从节点会join失败的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。