錯誤:Unable to connect to the server: x509: certificate is valid for xxx, not xxx 的解決方案
為了能使本地能連接k8s集群更好的測試client-go的功能嚣州,我在服務(wù)器上為本地簽發(fā)了kubeconfig文件,放到本地之后出現(xiàn)如下的錯誤面哼。
? ~ kubectl get node
Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 172.25.1.100, not 10.8.5.5
通過查閱資料發(fā)現(xiàn)了一個kubectl的參數(shù)--insecure-skip-tls-verify
嬉荆,加上這個參數(shù)之后確實好使了,但是领舰,總是感覺治標(biāo)不治本蝌焚,所以經(jīng)過一番查閱是apiserver的證書中沒有添加10.8.5.5
這個ip導(dǎo)致的移剪,需要重新生成一下證書喜喂,具體操作如下:
查看apiserver證書信息
cd /etc/kubernetes/pki
openssl x509 -noout -text -in apiserver.crt |grep IP
DNS:k8s-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:10.96.0.1, IP Address:172.25.1.100
從上面可以看出ip中并沒有報錯信息中的10.8.5.5
這個IP地址瓤摧,所以需要重新生成。
刪除舊證書
mkdir -pv /opt/cert
mv apiserver.* /opt/cert
為了保險起見玉吁,這里選擇將證書移動到其他位置照弥。
生成新的apiserver證書
kubeadm init phase certs apiserver \
--apiserver-advertise-address 172.25.1.100 \
--apiserver-cert-extra-sans 10.96.0.1 \
--apiserver-cert-extra-sans 10.8.5.5 \
--apiserver-cert-extra-sans 10.8.5.6 \
--apiserver-cert-extra-sans 10.8.5.7 \
--apiserver-cert-extra-sans 10.8.5.8 \
--apiserver-cert-extra-sans 10.8.5.9 \
--apiserver-cert-extra-sans 10.8.5.10 \
--apiserver-cert-extra-sans 10.8.5.11 \
--apiserver-cert-extra-sans 10.8.5.12 \
--apiserver-cert-extra-sans 10.8.5.13 \
--apiserver-cert-extra-sans 10.8.5.14 \
--apiserver-cert-extra-sans 10.8.5.15 \
--apiserver-cert-extra-sans 10.8.5.16 \
--apiserver-cert-extra-sans 10.8.5.17
--apiserver-cert-extra-sans
參數(shù)后可以加上需要添加的IP地址,這里為了省事兒一次性添加了多個进副,具體情況按需添加即可这揣。
檢查證書
ls apiserver.*
apiserver.crt apiserver.key
通過檢查可以看到新的證書已經(jīng)成了,現(xiàn)在只需要重啟apiserver即可敢会。如果出現(xiàn)問題曾沈,可以刪除新的證書,將老的證書移回原位鸥昏,重啟apiserver即可。
重啟服務(wù)
systemctl restart kubelet.service
驗證
? ~ kubectl get pod
NAME READY STATUS RESTARTS AGE
kucc4 3/3 Running 0 39d
nfs-client-provisioner-585486cc88-wqmzj 1/1 Running 6 40d
nginx-kusc00401 1/1 Running 0 39d
web-server 1/1 Running 0 39d
可以看到現(xiàn)在不加參數(shù)也不出現(xiàn)報錯了姐帚,到這里就已經(jīng)大功告成了吏垮。