将k8s集群部署到独立的电脑上
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
k8s集群部署在虚拟机上,而虚拟机使用的是内网IP,其他机器无法访问。
VMware Workstation 具备端口转发功能,能够将宿主机上的端口映射到虚拟机的IP地址上,具体操作流程为:
编辑
虚拟网络编辑器
更改设置
NAT设置
在弹出的窗口中,配置端口转发即可,配置成功后的效果如下图:
注意,ssh服务的端口是22。
关闭宿主机上的防火墙,打开Windows的防火墙设置界面,把域网络、专用网络、公用网络的防火墙全部关闭即可。
管理kubernetes集群需要与apiserver服务进行通信,该服务是一个http协议的服务,因此可以采用nginx代理apiserver。通过宿主机上的nginx反向代理虚拟机中的apiserver请求,与常用的http反向代理不同,在此处只能使用4层代理,而不能是7层代理,即不能使用http指令,而应该使用stream指令,具体内容如下:
访问apiserver时必须使用https协议,而k8s集群的ssl签名的CN是有限制的,所以需要配置域名映射(DNS),可以将kubernetes作为域名映射到宿主机IP地址,即将hosts文件中增加以下映射(10.12.53.27是宿主机的IP地址):
并对admin.conf进行如下修改(该文件从k8s集群上下载下来/etc/kubernetes/admin.conf):
提示:
在搭建高可用集群时,选用了haproxy作为代理服务器,而另一种选择就是nginx。
在高可用配置下,操作集群的命令都是先发送给了负载均衡器,然后由负载均衡器进行请求转发,与上述代理的要求是类似的,一样都是反向代理。
在上述配置中,还配置对dashboard的反向代理
如果不进行域名映射,错误信息如下所示:
使用不恰当的域名作为映射:
直接使用宿主机IP:
类似于Dashboard,在kubernetes上部署一个对外网开放的service,即设置type=NodePort的service,但是因为虚拟机的限制,除了宿主机其他机器一样是访问不到的,有三种解决办法:
配置VMware,预先配置一些端口转发,之后在配置service的时候再使用这些预先定义的设置好的端口
配置nginx,预先定义一些端口代理
在客户机(非k8s集群的宿主机)上使用kubectl proxy命令,这会在本地上启动一个代理,然后就可以在客户机访问service了。
以dashboard为例,此时可以使用下述链接访问dashboard服务:
URL的规则如下(猜测):
http://localhost:8001/api/v1/namespaces
/<命名空间名称>
/services
/<协议>:<服务名>:
/proxy
/URI # service提供的URL
例如,存在一个默认空间中的自定义service,其信息如下所示:
可以通过如下链接进行访问:
/v1/hello是service提供的URI地址。