背景

一直以来都是windows上安装虚拟机,在虚拟机里再用kvm安装多个虚拟机部署模拟openstack或者k8s集群,这样的好处是易于管理,虚拟机镜像可以重用,如果用qcow2格式可以方便做到snapshot,可以任意添加集群节点的网卡以及集群的多网络,比如5年前做openstack时部署的集群包含kickstart,管理网络,内部网络,外部网络。

现在搞k8s任然沿用的之前的这套部署环境,只是从ubuntu14升级到了16.04版本,其他基本一样,唯一碰到的问题就是在k8s上基于容器镜像部署应用集群或系统实在太方便了,有时同时尝试多个系统,比如同时搭建了etcd-operator集群,mongo replicaset集群,redius集群,笔记本的资源有点吃紧,特别是内存不足,如果再部署些基于java的系统或者前端系统,比如graphala,es那就更加吃紧了,很多时候都要临时卸载一些功能,大大影响工作效率。

官网强烈建议关闭swap分区,但是迫于资源紧张还是准备启用缓存功能,但是问题是节点的磁盘本身就是基于虚拟机里的某个文件的虚拟disk,再把它当做swap分区使用势必严重影响性能,最终准备vmware上再部署虚拟机接入k8s集群,这样可以减少一层虚拟化。

另一个原因也是前段时间有同事刚申请了几个机器准备搭建一套测试环境,但是忘了和it说必须在同一网段,问我这种情况是否可以部署k8s集群,当时简单思考后觉得完全没问题。

所以本文就是基于这个背景来看看如何打通这个环境,尝试下在跨网络机器下部署下部署k8s集群,另外文章中也会涉及在这个环境下各个网元如何访问互联网或者翻墙

网络拓扑图

添加外网络节点

外部miniion节点注册

关闭防火墙

设置路由

内部master节点访问外部计算节点

隐藏的问题

如果calico关闭IPIP功能,…

internet访问

k8s节点自身访问网络

所有容器访问网络

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐