溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Kubernetes從節(jié)點(diǎn)會(huì)join失敗的原因是什么

發(fā)布時(shí)間:2021-06-21 15:43:43 來源:億速云 閱讀:357 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Kubernetes從節(jié)點(diǎn)會(huì)join失敗的原因是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Kubernetes從節(jié)點(diǎn)會(huì)join失敗的原因是什么”吧!

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

我本地的Kubernetes集群包括一個(gè)主節(jié)點(diǎn)和一個(gè)從節(jié)點(diǎn),如下圖:

Kubernetes從節(jié)點(diǎn)會(huì)join失敗的原因是什么

問題

主節(jié)點(diǎn)啟動(dòng)后,從節(jié)點(diǎn)加入,命令如下:

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

等了一段時(shí)間后,報(bào)了下面的錯(cuò)誤:

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

日志不夠完整,在命令后面加 --v=5,重新執(zhí)行來查看詳細(xì)日志,發(fā)現(xiàn)下面這個(gè)失敗日志反復(fù)打印:

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 listfailed 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")

這個(gè)輸出有點(diǎn)詭異,網(wǎng)上說是內(nèi)存不夠了,我查看了內(nèi)存,并不緊張:

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

仔細(xì)查看了輸出,有個(gè)x509,想起了以前的解決方法,執(zhí)行下面三個(gè)命令:

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 createnf2hbm.h2d67djxey0jv90h
[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

生成后,在從節(jié)點(diǎn)上用新的token和秘鑰繼續(xù)執(zhí)行加入命令,問題依舊。

時(shí)間問題

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

那是不是系統(tǒng)時(shí)間有問題?查看了一下系統(tǒng)時(shí)間,果然找到了貓膩。系統(tǒng)時(shí)間如下:

主節(jié)點(diǎn)系統(tǒng)時(shí)間:

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

從節(jié)點(diǎn)系統(tǒng)時(shí)間:

[root@worker1 ~]# dateSun May  9 11:22:28 EDT 2021

主節(jié)點(diǎn)的時(shí)間晚于從節(jié)點(diǎn),這就是問題所在。

解決問題

在主節(jié)點(diǎn)和從節(jié)點(diǎn)執(zhí)行如下命令:

[root@master ~]# ntpdate ntp1.aliyun.com 9 May 23:23:00 ntpdate[39100]: step time server 120.25.115.20 offset -28801.403856 sec

[root@worker1 ~]# ntpdate ntp1.aliyun.com 9 May 11:23:18 ntpdate[22420]: adjust time server 120.25.115.20 offset -0.001241 sec

這下時(shí)間一致了。

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

到此,相信大家對“Kubernetes從節(jié)點(diǎn)會(huì)join失敗的原因是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI