怎么在外网使用kubectl管理k8s集群
- 需求
k8s集群的config配置文件只能在内网使用,如果把该配置文件复制到外网并且修改地址为外网地址也无法使用
例如从rancher下载config配置文件
执行会报以下错误
# kubectl --kubeconfig=config-rancher get node
Unable to connect to the server: x509: certificate signed by unknown authority
- 原因
因为生成证书为内网地址在外网识别主机为外网地址所以报证书错误 - 解决方法
- 设置k8s集群api代理
# kubectl proxy --address 0.0.0.0.0 -p 8001 --accept-hosts '.*'
解析
# kubectl proxy 设置代理
# --address 0.0.0.0 绑定地址为任意地址
# -p 8001 代理启动端口,不加-p参数默认为8001端口
# --accept-hosts '.*' 允许主机
- 把代理映射至外网
在防火墙映射 - 修改config配置文件
把参数server修改为外网可以访问的ip加映射端口
测试使用kubectl调用
只能修改成外网地址加映射的端口不能使用http代理,否则允许还是会报证书问题