现有暴漏模式

在 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

有任何疑问都可以关注作者公众号点击菜单–>联系作者相互探讨交流

在这里插入图片描述

Logo

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

更多推荐