29號晚上同事發現部署的API介面服務崩了,同時k8s服務也崩了(我們自己寫的API服務呼叫k8s),當時就懷疑是k8s崩潰導致API呼叫失敗,然后api報錯退出(這里API容錯機制也有問題,但不是這篇文章主題),
第二天來調查k8s問題:執行k8s命令報錯
[root@onlyellow2 ~]# kubectl get pod
Unable to connect to the server: x509: certificate has expired or is not yet valid
第一感覺就是證書過期了:因為部署的是1.16版本,k8s內部強制默認采用https通信,當時部署時候生成的證書默認有效期就是一年,而這套系統大概就是一年前部署的,
所以查詢資料一波
執行下列命令確認是否是證書過期問題
[root@onlyellow2 ~]# kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Sep 29, 2020 12:39 UTC <invalid> no
apiserver Sep 29, 2020 12:39 UTC <invalid> no
apiserver-etcd-client Sep 29, 2020 12:39 UTC <invalid> no
apiserver-kubelet-client Sep 29, 2020 12:39 UTC <invalid> no
controller-manager.conf Sep 29, 2020 12:39 UTC <invalid> no
etcd-healthcheck-client Sep 29, 2020 12:39 UTC <invalid> no
etcd-peer Sep 29, 2020 12:39 UTC <invalid> no
etcd-server Sep 29, 2020 12:39 UTC <invalid> no
front-proxy-client Sep 29, 2020 12:39 UTC <invalid> no
scheduler.conf Sep 29, 2020 12:39 UTC <invalid> no
可以很清楚的看到:證書到29號就到期了,所以問題定位了,剩下的就是更新證書了
去官網查詢更新證書方法,官方提供兩種更新辦法:
1. upgrade版本
2. 手工更新證書
我想著新版本也出了好幾個了,1.16也算老的了,但是發現更新要替換repo源,比較麻煩,算了還是手工更新下證書,先恢復下系統,
更新步驟如下:
a) kubeadm alpha certs renew all
執行完這一步再去看看證書,會發現已經都更新過了
[root@onlyellow2 ~]# kubeadm alpha certs check-expiration
CERTIFICATE EXPIRES RESIDUAL TIME EXTERNALLY MANAGED
admin.conf Sep 30, 2021 03:05 UTC 364d no
apiserver Sep 30, 2021 03:05 UTC 364d no
apiserver-etcd-client Sep 30, 2021 03:05 UTC 364d no
apiserver-kubelet-client Sep 30, 2021 03:05 UTC 364d no
controller-manager.conf Sep 30, 2021 03:05 UTC 364d no
etcd-healthcheck-client Sep 30, 2021 03:05 UTC 364d no
etcd-peer Sep 30, 2021 03:05 UTC 364d no
etcd-server Sep 30, 2021 03:05 UTC 364d no
front-proxy-client Sep 30, 2021 03:05 UTC 364d no
scheduler.conf Sep 30, 2021 03:05 UTC 364d no
b) kubeadm alpha kubeconfig user --apiserver-advertise-address 127.0.0.1 --client-name www.baidu.com
這一步是更新配置kubelet組態檔,根據自己環境修改api的IP地址和主機域名
c)更新.kube檔案
cp -i /etc/kubernetes/admin.conf ~/.kube/config
d) 測驗kubectl
再次執行kubectl命令確認k8s是否恢復
[root@onlyellow2 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
******************* Ready master 365d v1.16.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/147006.html
標籤:其他
上一篇:微信公眾號禁用右上角分享
