个人开发环境下和k8s集群内svc,pod网络互通
现有暴漏模式在 kubernetes 的网络模型中,基于官方默认的 CNI 网络插件 Flannel,这种 Overlay Network(覆盖网络)可以轻松的实现 pod 间网络的互通。我们还可以通过 ingress + ingress controller 将用户请求流量引入到集群服务中 。实际使用中,我们可能会出现以下需求:1、办公室网络 和 k8s pod 网络不通。开发在电脑完成...
·
现有暴漏模式
在 kubernetes 的网络模型中,基于官方默认的 CNI 网络插件 Flannel,这种 Overlay Network(覆盖网络)可以轻松的实现 pod 间网络的互通。我们还可以通过 ingress + ingress controller 将用户请求流量引入到集群服务中 。
实际使用中,我们可能会出现以下需求:
- 1、办公室网络 和 k8s pod 网络不通。开发在电脑完成某个微服务模块开发后,希望本地启动后,能注册到 k8s 中开发环境的服务中心进行调试,而不是本地起一堆依赖的服务。
- 2、办公室网络 和 k8s svc 网络不通。在 k8s 中运行的 其他服务 mysql、redis 等,无法通过 ingress 7层暴露,电脑无法通过客户端工具直接访问;如果我们通过 service 的 NodePort 模式,会导致维护量工作量巨大。最好测试有测试的集群相互隔离(本次是个人开发环境的临时折中方案)
方案
- 1、(适合公司方案网络以连通机器的) 新增一个node节点专门做路由转发、并且搭建dns解析转发(打通需要实现网络互连+应用dns解析)
- 2、(适合个人方案和集群不在一个地区不互通)新增一个node节点搭建vpn(个人测试用的本地打通云上资源的经济型办法) pptp-vpn安装使用
网络互通配置
- 在k8s集群中新增node-vpn节点并搭建vpn服务实现本地可访问云上内网资源
- 当前使用的方案二,公司办公方案可省去vpn步骤使用iptables网段转发
- 本地连接集群vpn:linux用pptpsetup连接、windows按照图形界面步骤操作
- 由于通过vpn连接了云上资源、所以并不需要搭建dns转发了、查询kube-dns服务地址
[root@VM_0_12_centos ~]# kubectl -n kube-system get svc kube-dns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 172.16.255.250 <none> 53/TCP,53/UDP 52d
- 通过下面可以看出 目前还是无法解析k8s 相关服务的
[root@VM_0_12_centos ~]# nslookup kube-dns.kube-system.svc.cluster.local
Server: 183.60.82.98
Address: 183.60.82.98#53
** server can't find kube-dns.kube-system.svc.cluster.local: NXDOMAIN
- 编辑 /etc/resolv.conf 增加备用dns解析服务器
vim /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
nameserver xxxxxxxx
//加入本次备用dns服务器 dns优先级按照位置顺序解析
nameserver 172.16.255.250
- 现在使用 nslookup 重新解析测试得到了相应
[root@VM_0_12_centos ~]# nslookup kube-dns.kube-system.svc.cluster.local
Server: 172.16.255.250
Address: 172.16.255.250#53
Name: kube-dns.kube-system.svc.cluster.local
Address: 172.16.255.250
- 现在就实现了个人环境下同k8s服务名访问集群服务redis mysql 普通应用等
[root@VM_0_12_centos ~]# curl helloword.default.svc.cluster.local:8080
Hello World 100!
- windows操作修改备用dns服务器即可,win7电脑上如果出现nslookup可以解析 ping无法解析 请 net stop dnscache 关闭dns缓存 重新打开一下即可
C:\Users\Administrator>nslookup -q=A helloword.default.svc.cluster.local
服务器: kube-dns.kube-system.svc.cluster.local
Address: 172.16.255.250
名称: helloword.default.svc.cluster.local
Address: 172.16.255.161
C:\Users\Administrator>ping helloword.default.svc.cluster.local
Ping 请求找不到主机 helloword.default.svc.cluster.local。请检查该名称,然后重试。
C:\Users\Administrator>net stop dnscache
DNS Client 服务正在停止.
DNS Client 服务已成功停止。
C:\Users\Administrator>net start dnscache
DNS Client 服务正在启动 .
DNS Client 服务已经启动成功。
C:\Users\Administrator>ping helloword.default.svc.cluster.local
C:\Users\Administrator>ping helloword.default.svc.cluster.local
正在 Ping helloword.default.svc.cluster.local [172.16.255.161] 具有 32 字节的数据:
Control-C
有任何疑问都可以关注作者公众号点击菜单–>联系作者相互探讨交流
更多推荐
已为社区贡献4条内容
所有评论(0)