【轉載】外網通過kubeconfig訪問內網下k8s集羣

公有云上組建k8s集羣時,通常是使用綁定在節點網卡上的IP地址來部署集羣,此時,一般使用的是192.168.x.x這樣的私網IP。

使用時,我們可能希望在本地使用k8s集羣的kubeconfig文件來訪問集羣。但記錄在kubeconfig文件中的server的IP地址是192.168.x.x這樣的私網IP,

本地不能直接訪問,將kubeconfig文件的server地址改爲k8s master的公網IP訪問時,會報錯:

Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 192.168.0.x, not x.x.x.x

原因從報錯信息可以看出來:是證書對訪問的IP做了校驗,解決的方法就是要重新制作證書(不用動集羣)

 


以下操作步驟,以kubeadm部署的集羣爲例,其他方式部署,操作原理類似,路徑可能不同。

1、備份當前k8s集羣配置文件

cp -r /etc/kubernetes /etc/kubernetes.bak

 

2、生成新的apiserver的cert和key

kubeadm init phase certs apiserver --apiserver-advertise-address ${原來的advertise ip} --apiserver-cert-extra-sans ${master的外網ip} 

注意:--apiserver-advertise-address 的值,只需要填master的內網ip,不需要填k8s內部使用的 10.96.0.1

 

3、刷新admin.conf

kubeadm alpha certs renew admin.conf

 

4、重啓apiserver

kubectl -n kube-system delete pod -l component=kube-apiserver

 

5、刷新.kube/config

\cp /etc/kubernetes/admin.conf ~/.kube/config

注意:這裏生成的 admin.conf 文件,server填寫的依然是master的內網IP,如果需要放在集羣外的客戶端上使用,將這個IP改爲master的外網IP即可。

 

原文地址:https://zhuanlan.zhihu.com/p/505324148

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章